diff --git a/.gitignore b/.gitignore index 86434f04bb823a07fcd501b02db55e9f1e2be619..0a116f850780386a9fe1010b22164f4c7dbf8228 100644 --- a/.gitignore +++ b/.gitignore @@ -131,6 +131,9 @@ venv.bak/ # VSCode project settings .vscode/ +# Visual Studio project settings +/.vs + # Rope project settings .ropeproject @@ -159,3 +162,11 @@ cython_debug/ # TeraFlowSDN-generated files tfs_runtime_env_vars.sh +tfs_runtime_env_vars*.sh +tfs_bchain_runtime_env_vars.sh +delete_local_deployment.sh +local_docker_deployment.sh +local_k8s_deployment.sh + +# Other logs +**/logs/*.log.* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ffbf9e9f5f02bd0514d4584f6f2ad32761b6264f..dac76342a9fdb48247cc171cfdf37fd6b60600ba 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -41,3 +41,5 @@ include: #- local: '/src/l3_attackmitigator/.gitlab-ci.yml' #- local: '/src/slice/.gitlab-ci.yml' #- local: '/src/interdomain/.gitlab-ci.yml' + - local: '/src/pathcomp/.gitlab-ci.yml' + #- local: '/src/dlt/.gitlab-ci.yml' diff --git a/deploy.sh b/deploy.sh index 172889c07acdc2347b2dee2ddee8bf3061fdc53a..c62778417f7e07a119c778b58fe9c44105d5b1a5 100755 --- a/deploy.sh +++ b/deploy.sh @@ -36,9 +36,13 @@ export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} # If not already set, set additional manifest files to be applied after the deployment export TFS_EXTRA_MANIFESTS=${TFS_EXTRA_MANIFESTS:-""} -# If not already set, set the neew Grafana admin password +# If not already set, set the new Grafana admin password export TFS_GRAFANA_PASSWORD=${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=${TFS_SKIP_BUILD:-""} + ######################################################################################################################## # Automated steps start here ######################################################################################################################## @@ -58,18 +62,6 @@ kubectl delete namespace $TFS_K8S_NAMESPACE kubectl create namespace $TFS_K8S_NAMESPACE printf "\n" -if [[ "$TFS_COMPONENTS" == *"monitoring"* ]]; then - echo "Creating secrets for InfluxDB..." - #TODO: make sure to change this when having a production deployment - kubectl create secret generic influxdb-secrets --namespace=$TFS_K8S_NAMESPACE \ - --from-literal=INFLUXDB_DB="monitoring" --from-literal=INFLUXDB_ADMIN_USER="teraflow" \ - --from-literal=INFLUXDB_ADMIN_PASSWORD="teraflow" --from-literal=INFLUXDB_HTTP_AUTH_ENABLED="True" - kubectl create secret generic monitoring-secrets --namespace=$TFS_K8S_NAMESPACE \ - --from-literal=INFLUXDB_DATABASE="monitoring" --from-literal=INFLUXDB_USER="teraflow" \ - --from-literal=INFLUXDB_PASSWORD="teraflow" --from-literal=INFLUXDB_HOSTNAME="localhost" - printf "\n" -fi - echo "Deploying components and collecting environment variables..." ENV_VARS_SCRIPT=tfs_runtime_env_vars.sh echo "# Environment variables for TeraFlowSDN deployment" > $ENV_VARS_SCRIPT @@ -78,53 +70,142 @@ echo "export PYTHONPATH=${PYTHONPATH}" >> $ENV_VARS_SCRIPT for COMPONENT in $TFS_COMPONENTS; do echo "Processing '$COMPONENT' component..." - IMAGE_NAME="$COMPONENT:$TFS_IMAGE_TAG" - IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$IMAGE_NAME" | sed 's,//,/,g' | sed 's,http:/,,g') - echo " Building Docker image..." - BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}.log" + if [ "$TFS_SKIP_BUILD" != "YES" ]; then + echo " Building Docker image..." + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}.log" - if [ "$COMPONENT" == "automation" ] || [ "$COMPONENT" == "policy" ]; then - docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile ./src/"$COMPONENT"/ > "$BUILD_LOG" - else - docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile . > "$BUILD_LOG" - fi + if [ "$COMPONENT" == "automation" ] || [ "$COMPONENT" == "policy" ]; then + docker build -t "$COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/Dockerfile ./src/"$COMPONENT"/ > "$BUILD_LOG" + elif [ "$COMPONENT" == "pathcomp" ]; then + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-frontend.log" + docker build -t "$COMPONENT-frontend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/frontend/Dockerfile . > "$BUILD_LOG" - if [ -n "$TFS_REGISTRY_IMAGE" ]; then - echo " Pushing Docker image to '$TFS_REGISTRY_IMAGE'..." + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-backend.log" + docker build -t "$COMPONENT-backend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/backend/Dockerfile . > "$BUILD_LOG" + # next command is redundant, but helpful to keep cache updated between rebuilds + IMAGE_NAME="$COMPONENT-backend:$TFS_IMAGE_TAG-builder" + docker build -t "$IMAGE_NAME" --target builder -f ./src/"$COMPONENT"/backend/Dockerfile . >> "$BUILD_LOG" + elif [ "$COMPONENT" == "dlt" ]; then + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-connector.log" + docker build -t "$COMPONENT-connector:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/connector/Dockerfile . > "$BUILD_LOG" + + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-gateway.log" + docker build -t "$COMPONENT-gateway:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/gateway/Dockerfile . > "$BUILD_LOG" + else + docker build -t "$COMPONENT:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/Dockerfile . > "$BUILD_LOG" + fi + + if [ -n "$TFS_REGISTRY_IMAGE" ]; then + echo " Pushing Docker image to '$TFS_REGISTRY_IMAGE'..." + + if [ "$COMPONENT" == "pathcomp" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$COMPONENT-frontend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-frontend.log" + docker tag "$COMPONENT-frontend:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-frontend.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$COMPONENT-backend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-backend.log" + docker tag "$COMPONENT-backend:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-backend.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + elif [ "$COMPONENT" == "dlt" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$COMPONENT-connector:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-connector.log" + docker tag "$COMPONENT-connector:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-connector.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" - TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}.log" - docker tag "$IMAGE_NAME" "$IMAGE_URL" > "$TAG_LOG" + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$COMPONENT-gateway:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') - PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log" - docker push "$IMAGE_URL" > "$PUSH_LOG" + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-gateway.log" + docker tag "$COMPONENT-gateway:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-gateway.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + else + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}.log" + docker tag "$COMPONENT:$TFS_IMAGE_TAG" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + fi + fi fi echo " Adapting '$COMPONENT' manifest file..." MANIFEST="$TMP_MANIFESTS_FOLDER/${COMPONENT}service.yaml" cp ./manifests/"${COMPONENT}"service.yaml "$MANIFEST" - VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f3) if [ -n "$TFS_REGISTRY_IMAGE" ]; then # Registry is set - sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + if [ "$COMPONENT" == "pathcomp" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$COMPONENT-frontend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-frontend:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-frontend:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$COMPONENT-backend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-backend:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-backend:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + elif [ "$COMPONENT" == "dlt" ]; then + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$COMPONENT-connector:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-connector:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-connector:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$COMPONENT-gateway:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-gateway:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-gateway:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + else + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$COMPONENT:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + fi + sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Always#g" "$MANIFEST" else # Registry is not set - sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_NAME#g" "$MANIFEST" - sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Never#g" "$MANIFEST" + if [ "$COMPONENT" == "pathcomp" ]; then + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-frontend:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-frontend:${VERSION}#image: $COMPONENT-frontend:$TFS_IMAGE_TAG#g" "$MANIFEST" + + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-backend:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-backend:${VERSION}#image: $COMPONENT-backend:$TFS_IMAGE_TAG#g" "$MANIFEST" + elif [ "$COMPONENT" == "dlt" ]; then + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-connector:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-connector:${VERSION}#image: $COMPONENT-connector:$TFS_IMAGE_TAG#g" "$MANIFEST" + + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-gateway:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-gateway:${VERSION}#image: $COMPONENT-gateway:$TFS_IMAGE_TAG#g" "$MANIFEST" + else + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $COMPONENT:$TFS_IMAGE_TAG#g" "$MANIFEST" + fi + + sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Never#g" "$MANIFEST" fi + # TODO: harmonize names of the monitoring component + echo " Deploying '$COMPONENT' component to Kubernetes..." DEPLOY_LOG="$TMP_LOGS_FOLDER/deploy_${COMPONENT}.log" kubectl --namespace $TFS_K8S_NAMESPACE apply -f "$MANIFEST" > "$DEPLOY_LOG" COMPONENT_OBJNAME=$(echo "${COMPONENT}" | sed "s/\_/-/") - kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=0 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG" - kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=1 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG" + #kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=0 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG" + #kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=1 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG" echo " Collecting env-vars for '$COMPONENT' component..." - SERVICE_DATA=$(kubectl get service ${COMPONENT}service --namespace $TFS_K8S_NAMESPACE -o json) + SERVICE_DATA=$(kubectl get service ${COMPONENT_OBJNAME}service --namespace $TFS_K8S_NAMESPACE -o json) if [ -z "${SERVICE_DATA}" ]; then continue; fi # Env vars for service's host address @@ -153,15 +234,31 @@ done echo "Deploying extra manifests..." for EXTRA_MANIFEST in $TFS_EXTRA_MANIFESTS; do echo "Processing manifest '$EXTRA_MANIFEST'..." - kubectl --namespace $TFS_K8S_NAMESPACE apply -f $EXTRA_MANIFEST + if [[ "$EXTRA_MANIFEST" == *"servicemonitor"* ]]; then + kubectl apply -f $EXTRA_MANIFEST + else + kubectl --namespace $TFS_K8S_NAMESPACE apply -f $EXTRA_MANIFEST + fi printf "\n" done +printf "\n" + +# By now, leave these controls here. Some component dependencies are not well handled. + +if [[ "$TFS_COMPONENTS" == *"monitoring"* ]]; then + echo "Waiting for 'MonitoringDB' component..." + # Kubernetes does not implement --for='condition=available' for statefulsets. + # By now, we assume a single replica of monitoringdb. To be updated in future releases. + kubectl wait --namespace $TFS_K8S_NAMESPACE \ + --for=jsonpath='{.status.readyReplicas}'=1 --timeout=300s statefulset/monitoringdb + printf "\n" +fi -# By now, leave this control here. Some component dependencies are not well handled for COMPONENT in $TFS_COMPONENTS; do echo "Waiting for '$COMPONENT' component..." + COMPONENT_OBJNAME=$(echo "${COMPONENT}" | sed "s/\_/-/") kubectl wait --namespace $TFS_K8S_NAMESPACE \ - --for='condition=available' --timeout=300s deployment/${COMPONENT}service + --for='condition=available' --timeout=300s deployment/${COMPONENT_OBJNAME}service printf "\n" done @@ -169,12 +266,12 @@ if [[ "$TFS_COMPONENTS" == *"webui"* ]] && [[ "$TFS_COMPONENTS" == *"monitoring" echo "Configuring WebUI DataStores and Dashboards..." sleep 3 - INFLUXDB_HOST="monitoringservice" - INFLUXDB_PORT=$(kubectl --namespace $TFS_K8S_NAMESPACE get service/monitoringservice -o jsonpath='{.spec.ports[?(@.name=="influxdb")].port}') - INFLUXDB_URL="http://${INFLUXDB_HOST}:${INFLUXDB_PORT}" - INFLUXDB_USER=$(kubectl --namespace $TFS_K8S_NAMESPACE get secrets influxdb-secrets -o jsonpath='{.data.INFLUXDB_ADMIN_USER}' | base64 --decode) - INFLUXDB_PASSWORD=$(kubectl --namespace $TFS_K8S_NAMESPACE get secrets influxdb-secrets -o jsonpath='{.data.INFLUXDB_ADMIN_PASSWORD}' | base64 --decode) - INFLUXDB_DATABASE=$(kubectl --namespace $TFS_K8S_NAMESPACE get secrets influxdb-secrets -o jsonpath='{.data.INFLUXDB_DB}' | base64 --decode) + # INFLUXDB_HOST="monitoringservice" + # INFLUXDB_PORT=$(kubectl --namespace $TFS_K8S_NAMESPACE get service/monitoringservice -o jsonpath='{.spec.ports[?(@.name=="influxdb")].port}') + # INFLUXDB_URL="http://${INFLUXDB_HOST}:${INFLUXDB_PORT}" + # INFLUXDB_USER=$(kubectl --namespace $TFS_K8S_NAMESPACE get secrets influxdb-secrets -o jsonpath='{.data.INFLUXDB_ADMIN_USER}' | base64 --decode) + # INFLUXDB_PASSWORD=$(kubectl --namespace $TFS_K8S_NAMESPACE get secrets influxdb-secrets -o jsonpath='{.data.INFLUXDB_ADMIN_PASSWORD}' | base64 --decode) + # INFLUXDB_DATABASE=$(kubectl --namespace $TFS_K8S_NAMESPACE get secrets influxdb-secrets -o jsonpath='{.data.INFLUXDB_DB}' | base64 --decode) # Exposed through the ingress controller "tfs-ingress" GRAFANA_HOSTNAME="127.0.0.1" @@ -191,6 +288,8 @@ if [[ "$TFS_COMPONENTS" == *"webui"* ]] && [[ "$TFS_COMPONENTS" == *"monitoring" # Updated Grafana API URL GRAFANA_URL_UPDATED="http://${GRAFANA_USERNAME}:${TFS_GRAFANA_PASSWORD}@${GRAFANA_HOSTNAME}:${GRAFANA_PORT}${GRAFANA_BASEURL}" + echo "export GRAFANA_URL_UPDATED=${GRAFANA_URL_UPDATED}" >> $ENV_VARS_SCRIPT + echo "Connecting to grafana at URL: ${GRAFANA_URL_DEFAULT}..." # Configure Grafana Admin Password @@ -202,26 +301,41 @@ if [[ "$TFS_COMPONENTS" == *"webui"* ]] && [[ "$TFS_COMPONENTS" == *"monitoring" }' ${GRAFANA_URL_DEFAULT}/api/user/password echo - # Create InfluxDB DataSource # Ref: https://grafana.com/docs/grafana/latest/http_api/data_source/ - curl -X POST -H "Content-Type: application/json" -d '{ - "type" : "influxdb", - "name" : "InfluxDB", - "url" : "'"$INFLUXDB_URL"'", + # TODO: replace user, password and database by variables to be saved + echo "Creating a datasource..." + curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ "access" : "proxy", + "type" : "postgres", + "name" : "monitoringdb", + "url" : "monitoringservice:8812", + "database" : "monitoring", + "user" : "admin", "basicAuth": false, - "user" : "'"$INFLUXDB_USER"'", - "password" : "'"$INFLUXDB_PASSWORD"'", "isDefault": true, - "database" : "'"$INFLUXDB_DATABASE"'" + "jsonData" : { + "sslmode" : "disable", + "postgresVersion" : 1100, + "maxOpenConns" : 0, + "maxIdleConns" : 2, + "connMaxLifetime" : 14400, + "tlsAuth" : false, + "tlsAuthWithCACert" : false, + "timescaledb" : false, + "tlsConfigurationMethod": "file-path", + "tlsSkipVerify" : true + }, + "secureJsonData": { + "password": "quest" + } }' ${GRAFANA_URL_UPDATED}/api/datasources echo # Create Monitoring Dashboard # Ref: https://grafana.com/docs/grafana/latest/http_api/dashboard/ curl -X POST -H "Content-Type: application/json" \ - -d '@src/webui/grafana_dashboard.json' \ - ${GRAFANA_URL_UPDATED}/api/dashboards/db + -d '@src/webui/grafana_dashboard_psql.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db echo DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tf-l3-monit" diff --git a/deploy_component.sh b/deploy_component.sh new file mode 100755 index 0000000000000000000000000000000000000000..a4cf6184c83ef026562abe8e084430bba3ead9c8 --- /dev/null +++ b/deploy_component.sh @@ -0,0 +1,186 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + + +######################################################################################################################## +# Read deployment settings +######################################################################################################################## + +# If not already set, set the URL of your local Docker registry where the images will be uploaded to. +# Leave it blank if you do not want to use any Docker registry. +export TFS_REGISTRY_IMAGE=${TFS_REGISTRY_IMAGE:-""} +#export TFS_REGISTRY_IMAGE="http://my-container-registry.local/" + +TFS_COMPONENTS=$1 + +# If not already set, set the tag you want to use for your images. +export TFS_IMAGE_TAG=${TFS_IMAGE_TAG:-"dev"} + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +# If not already set, set additional manifest files to be applied after the deployment +export TFS_EXTRA_MANIFESTS=${TFS_EXTRA_MANIFESTS:-""} + +# If not already set, set the neew Grafana admin password +export TFS_GRAFANA_PASSWORD=${TFS_GRAFANA_PASSWORD:-"admin123+"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +# Constants +GITLAB_REPO_URL="registry.gitlab.com/teraflow-h2020/controller" +TMP_FOLDER="./tmp" + +# Create a tmp folder for files modified during the deployment +TMP_MANIFESTS_FOLDER="$TMP_FOLDER/manifests" +TMP_LOGS_FOLDER="$TMP_FOLDER/logs" + +echo "Deploying component and collecting environment variables..." +ENV_VARS_SCRIPT=tfs_runtime_env_vars.sh + +for COMPONENT in $TFS_COMPONENTS; do + echo "Processing '$COMPONENT' component..." + IMAGE_NAME="$COMPONENT:$TFS_IMAGE_TAG" + IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGE/$IMAGE_NAME" | sed 's,//,/,g' | sed 's,http:/,,g') + + echo " Building Docker image..." + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}.log" + + if [ "$COMPONENT" == "automation" ] || [ "$COMPONENT" == "policy" ]; then + docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile ./src/"$COMPONENT"/ > "$BUILD_LOG" + elif [ "$COMPONENT" == "pathcomp" ]; then + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-frontend.log" + docker build -t "$COMPONENT-frontend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/frontend/Dockerfile . >> "$BUILD_LOG" + + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}-backend.log" + docker build -t "$COMPONENT-backend:$TFS_IMAGE_TAG" -f ./src/"$COMPONENT"/backend/Dockerfile . >> "$BUILD_LOG" + # next command is redundant, but helpful to keep cache updated between rebuilds + docker build -t "$COMPONENT-backend:$TFS_IMAGE_TAG-builder" --target builder -f ./src/"$COMPONENT"/backend/Dockerfile . >> "$BUILD_LOG" + else + docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile . > "$BUILD_LOG" + fi + + if [ -n "$TFS_REGISTRY_IMAGE" ]; then + echo " Pushing Docker image to '$TFS_REGISTRY_IMAGE'..." + + if [ "$COMPONENT" == "pathcomp" ]; then + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-frontend.log" + docker tag "$COMPONENT-frontend:$TFS_IMAGE_TAG" "$IMAGE_URL-frontend" > "$TAG_LOG" + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}-backend.log" + docker tag "$COMPONENT-backend:$TFS_IMAGE_TAG" "$IMAGE_URL-backend" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-frontend.log" + docker push "$IMAGE_URL-frontend" > "$PUSH_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}-backend.log" + docker push "$IMAGE_URL-backend" > "$PUSH_LOG" + else + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}.log" + docker tag "$IMAGE_NAME" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + fi + fi + + echo " Adapting '$COMPONENT' manifest file..." + MANIFEST="$TMP_MANIFESTS_FOLDER/${COMPONENT}service.yaml" + cp ./manifests/"${COMPONENT}"service.yaml "$MANIFEST" + + if [ -n "$TFS_REGISTRY_IMAGE" ]; then + # Registry is set + if [ "$COMPONENT" == "pathcomp" ]; then + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-frontend:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-frontend:${VERSION}#image: $IMAGE_URL-frontend#g" "$MANIFEST" + + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-backend:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-backend:${VERSION}#image: $IMAGE_URL-backend#g" "$MANIFEST" + + sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Always#g" "$MANIFEST" + else + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Always#g" "$MANIFEST" + fi + else + # Registry is not set + if [ "$COMPONENT" == "pathcomp" ]; then + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-frontend:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-frontend:${VERSION}#image: $IMAGE_NAME-frontend#g" "$MANIFEST" + + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}-backend:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT-backend:${VERSION}#image: $IMAGE_NAME-backend#g" "$MANIFEST" + + sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Never#g" "$MANIFEST" + else + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_NAME#g" "$MANIFEST" + sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Never#g" "$MANIFEST" + fi + fi + + # TODO: harmonize names of the monitoring component + + echo " Deploying '$COMPONENT' component to Kubernetes..." + DEPLOY_LOG="$TMP_LOGS_FOLDER/deploy_${COMPONENT}.log" + kubectl --namespace $TFS_K8S_NAMESPACE delete -f "$MANIFEST" > "$DEPLOY_LOG" + kubectl --namespace $TFS_K8S_NAMESPACE apply -f "$MANIFEST" > "$DEPLOY_LOG" + COMPONENT_OBJNAME=$(echo "${COMPONENT}" | sed "s/\_/-/") + kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=0 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG" + kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=1 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG" + + echo " Collecting env-vars for '$COMPONENT' component..." + + SERVICE_DATA=$(kubectl get service ${COMPONENT}service --namespace $TFS_K8S_NAMESPACE -o json) + if [ -z "${SERVICE_DATA}" ]; then continue; fi + + # Env vars for service's host address + SERVICE_HOST=$(echo ${SERVICE_DATA} | jq -r '.spec.clusterIP') + if [ -z "${SERVICE_HOST}" ]; then continue; fi + # TODO: remove previous value from file + ENVVAR_HOST=$(echo "${COMPONENT}service_SERVICE_HOST" | tr '[:lower:]' '[:upper:]') + echo "export ${ENVVAR_HOST}=${SERVICE_HOST}" >> $ENV_VARS_SCRIPT + + # Env vars for service's 'grpc' port (if any) + SERVICE_PORT_GRPC=$(echo ${SERVICE_DATA} | jq -r '.spec.ports[] | select(.name=="grpc") | .port') + if [ -n "${SERVICE_PORT_GRPC}" ]; then + ENVVAR_PORT_GRPC=$(echo "${COMPONENT}service_SERVICE_PORT_GRPC" | tr '[:lower:]' '[:upper:]') + echo "export ${ENVVAR_PORT_GRPC}=${SERVICE_PORT_GRPC}" >> $ENV_VARS_SCRIPT + fi + + # Env vars for service's 'http' port (if any) + SERVICE_PORT_HTTP=$(echo ${SERVICE_DATA} | jq -r '.spec.ports[] | select(.name=="http") | .port') + if [ -n "${SERVICE_PORT_HTTP}" ]; then + ENVVAR_PORT_HTTP=$(echo "${COMPONENT}service_SERVICE_PORT_HTTP" | tr '[:lower:]' '[:upper:]') + echo "export ${ENVVAR_PORT_HTTP}=${SERVICE_PORT_HTTP}" >> $ENV_VARS_SCRIPT + fi + + printf "\n" +done + +# By now, leave this control here. Some component dependencies are not well handled +for COMPONENT in $TFS_COMPONENTS; do + echo "Waiting for '$COMPONENT' component..." + kubectl wait --namespace $TFS_K8S_NAMESPACE \ + --for='condition=available' --timeout=300s deployment/${COMPONENT}service + printf "\n" +done + +./show_deploy.sh + +echo "Done!" diff --git a/deploy_mock_blockchain.sh b/deploy_mock_blockchain.sh new file mode 100755 index 0000000000000000000000000000000000000000..066820fc0f9a1005823dd124798e4de122f206f8 --- /dev/null +++ b/deploy_mock_blockchain.sh @@ -0,0 +1,121 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + + +######################################################################################################################## +# Read deployment settings +######################################################################################################################## + +# Set the URL of your local Docker registry where the images will be uploaded to. +REGISTRY_IMAGE="http://localhost:32000/tfs/" + +# Set the tag you want to use for your images. +IMAGE_TAG="dev" + +# Set the name of the Kubernetes namespace to deploy to. +K8S_NAMESPACE="tfs-bchain" + +COMPONENT="mock_blockchain" + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +# Constants +GITLAB_REPO_URL="registry.gitlab.com/teraflow-h2020/controller" +TMP_FOLDER="./tmp" + +# Create a tmp folder for files modified during the deployment +TMP_MANIFESTS_FOLDER="$TMP_FOLDER/manifests" +mkdir -p $TMP_MANIFESTS_FOLDER +TMP_LOGS_FOLDER="$TMP_FOLDER/logs" +mkdir -p $TMP_LOGS_FOLDER + +echo "Deleting and Creating a new namespace..." +kubectl delete namespace $K8S_NAMESPACE +kubectl create namespace $K8S_NAMESPACE +printf "\n" + +echo "Deploying components and collecting environment variables..." +ENV_VARS_SCRIPT=tfs_bchain_runtime_env_vars.sh +echo "# Environment variables for TeraFlow Mock-Blockchain deployment" > $ENV_VARS_SCRIPT +PYTHONPATH=$(pwd)/src + +echo "Processing '$COMPONENT' component..." +IMAGE_NAME="$COMPONENT:$IMAGE_TAG" +IMAGE_URL=$(echo "$REGISTRY_IMAGE/$IMAGE_NAME" | sed 's,//,/,g' | sed 's,http:/,,g') + +echo " Building Docker image..." +BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}.log" +docker build -t "$IMAGE_NAME" -f ./src/dlt/mock_blockchain/Dockerfile . > "$BUILD_LOG" + +if [ -n "$REGISTRY_IMAGE" ]; then + echo " Pushing Docker image to '$REGISTRY_IMAGE'..." + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}.log" + docker tag "$IMAGE_NAME" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" +fi + +echo " Adapting '$COMPONENT' manifest file..." +MANIFEST="$TMP_MANIFESTS_FOLDER/${COMPONENT}.yaml" +cp ./manifests/"${COMPONENT}".yaml "$MANIFEST" + +if [ -n "$REGISTRY_IMAGE" ]; then + # Registry is set + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST" + sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Always#g" "$MANIFEST" +else + # Registry is not set + VERSION=$(grep -i "${GITLAB_REPO_URL}/${COMPONENT}:" "$MANIFEST" | cut -d ":" -f3) + sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_NAME#g" "$MANIFEST" + sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Never#g" "$MANIFEST" +fi + +echo " Deploying '$COMPONENT' component to Kubernetes..." +DEPLOY_LOG="$TMP_LOGS_FOLDER/deploy_${COMPONENT}.log" +kubectl --namespace $K8S_NAMESPACE apply -f "$MANIFEST" > "$DEPLOY_LOG" +COMPONENT_OBJNAME=$(echo "${COMPONENT}" | sed "s/\_/-/") +kubectl --namespace $K8S_NAMESPACE scale deployment --replicas=0 ${COMPONENT_OBJNAME} >> "$DEPLOY_LOG" +kubectl --namespace $K8S_NAMESPACE scale deployment --replicas=1 ${COMPONENT_OBJNAME} >> "$DEPLOY_LOG" + +echo " Collecting env-vars for '$COMPONENT' component..." +SERVICE_DATA=$(kubectl get service ${COMPONENT_OBJNAME} --namespace $K8S_NAMESPACE -o json) + +# Env vars for service's host address +SERVICE_HOST=$(echo ${SERVICE_DATA} | jq -r '.spec.clusterIP') +ENVVAR_HOST=$(echo "${COMPONENT}_SERVICE_HOST" | tr '[:lower:]' '[:upper:]') +echo "export ${ENVVAR_HOST}=${SERVICE_HOST}" >> $ENV_VARS_SCRIPT + +# Env vars for service's 'grpc' port +SERVICE_PORT_GRPC=$(echo ${SERVICE_DATA} | jq -r '.spec.ports[] | select(.name=="grpc") | .port') +ENVVAR_PORT_GRPC=$(echo "${COMPONENT}_SERVICE_PORT_GRPC" | tr '[:lower:]' '[:upper:]') +echo "export ${ENVVAR_PORT_GRPC}=${SERVICE_PORT_GRPC}" >> $ENV_VARS_SCRIPT + +printf "\n" + +echo "Waiting for '$COMPONENT' component..." +kubectl wait --namespace $K8S_NAMESPACE \ + --for='condition=available' --timeout=300s deployment/${COMPONENT_OBJNAME} +printf "\n" + +echo "Deployment Resources:" +kubectl --namespace $K8S_NAMESPACE get all +printf "\n" + +echo "Done!" diff --git a/ecoc22 b/ecoc22 new file mode 120000 index 0000000000000000000000000000000000000000..3c61895e5ac62d0b38ce058ba5ff042442542320 --- /dev/null +++ b/ecoc22 @@ -0,0 +1 @@ +src/tests/ecoc22/ \ No newline at end of file diff --git a/hackfest/commands.txt b/hackfest/commands.txt new file mode 100644 index 0000000000000000000000000000000000000000..31558364d74aa1fec729c80c9fab50aa7e0c2313 --- /dev/null +++ b/hackfest/commands.txt @@ -0,0 +1,304 @@ +This is a quick guide for having fast access to the commands. + +################################################################################ +# Prepare environment +################################################################################ + +# (done) Create PyEnv virtual environment +cd ~/tfs-ctrl +pyenv virtualenv 3.9.13 tfs +pyenv local 3.9.13/envs/tfs +./install_requirements.sh + +# (done) Install Python dependencies +pip install pyang +pip install git+https://github.com/robshakir/pyangbind.git +pip install netconf + +# (done) Install PlantUML +# (done) Install dependencies to run PlantUML +sudo apt-get install -y graphviz openjdk-11-jre + +# (done) Download plantuml.7997.jar from http://sourceforge.net/projects/plantuml/files/plantuml.7997.jar/download +cp ~/Downloads/plantuml.7997.jar ~/tfs-ctrl/hackfest/yang/plantuml.jar + +# (done) Install WireShark +# When asked "allow non-root users to capture?" answer "yes" +sudo apt-get install -y wireshark +# Add current user to wireshark group to allow capturing as non-root (requires log-out & log-in, or reboot) +sudo usermod -a -G wireshark $USER + + + +################################################################################ +# YANG +################################################################################ + +## GUIDED + +# Convert Topology YANG to Text-based tree +pyang -f tree topology.yang +pyang -f tree topology.yang -o topology.tree + +# Report a sample message following Topology YANG data model +pyang -f sample-xml-skeleton --sample-xml-skeleton-annotations topology.yang +pyang -f sample-xml-skeleton --sample-xml-skeleton-annotations topology.yang -o topology-sample.xml + +# Convert Topology YANG to UML +pyang -f uml topology.yang -o topology.uml +java -jar plantuml.jar topology.uml + +# Convert Topology YANG to Python bindings +export PYBINDPLUGIN=`/usr/bin/env python -c \ +'import pyangbind; import os; print ("{}/plugin".format(os.path.dirname(pyangbind.__file__)))'` +echo $PYBINDPLUGIN +pyang -f pybind topology.yang --plugindir $PYBINDPLUGIN -o binding_topology.py + +# Test creation of JSON-/XML-encoded Topology messages +python topology.py + +## EXERCISE + +# Convert Connection YANG to Text-based tree +pyang -f tree connection.yang + +# Report a sample message following Connection YANG data model +pyang -f sample-xml-skeleton --sample-xml-skeleton-annotations connection.yang + +# Convert Connection YANG to UML +pyang -f uml connection.yang -o connection.uml +java -jar plantuml.jar connection.uml + +# Convert Connection YANG to Python bindings +export PYBINDPLUGIN=`/usr/bin/env python -c \ + 'import pyangbind; import os; print ("{}/plugin".format(os.path.dirname(pyangbind.__file__)))'` +pyang -f pybind connection.yang --plugindir $PYBINDPLUGIN -o binding_connection.py + +# Test creation of JSON-/XML-encoded Connection messages +python connection.py + + + +################################################################################ +# NETCONF +################################################################################ + +## GUIDED + +Run server: +cd ~/tfs-ctrl/hackfest/netconf +python3 server_topology.py + +In another window, run client: +cd ~/tfs-ctrl/hackfest/netconf +python3 client_topology.py + +## EXERCISE + +Run server: +cd ~/tfs-ctrl/hackfest/netconf/connection +python3 server_topology_connection.py + +In another window, run client: +cd ~/tfs-ctrl/hackfest/netconf/connection +python3 client_connection.py + + + +################################################################################ +# TAPI +################################################################################ + +## GUIDED + +# (done) Install dependencies +cd ~/tfs-ctrl/hackfest/tapi/server +pip install -r requirements.txt + +# (done) Build & Implement methods for the TAPI v2.1.3 server: +cd ~/tfs-ctrl/hackfest/tapi +wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.35/swagger-codegen-cli-3.0.35.jar +wget -O tapi-connectivity.yaml https://github.com/OpenNetworkingFoundation/TAPI/raw/v2.1.3/OAS/tapi-connectivity%402020-06-16.yaml +java -jar swagger-codegen-cli-3.0.35.jar generate --input-spec tapi-connectivity.yaml \ + --lang python-flask --output server --disable-examples --config codegen-config.json +pip install connexion==2.14.1 +cd ~/tfs-ctrl/hackfest/tapi/server +# Rename methods in "tapi_server/controllers/tapi_path_computation_controller.py" as follows: +# operations_tapi_path_computationcompute_p2_p_path_post => operations_tapi_path_computationcompute_p_2_p_path_post +# operations_tapi_path_computationdelete_p2_p_path_post => operations_tapi_path_computationdelete_p_2_p_path_post +# operations_tapi_path_computationoptimize_p2_ppath_post => operations_tapi_path_computationoptimize_p_2_ppath_post +# Implement database based on Reference Implementation [Ref-3] in tapi/server/Acknowledgements.txt + +# Run the TAPI server: +cd ~/tfs-ctrl/hackfest/tapi/server +python3 -m tapi_server 8080 database/mini-ols-context.json + +# Run TAPI client using cURL (In a new window): +$ cd ~/tfs-ctrl/hackfest/tapi/client + +# Interrogate Context and SIPs: +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/ +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/service-interface-point=node-4-port-16-output/ + +# Interrogate Topology, Nodes and Links: +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-topology:topology-context/ +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-topology:topology-context/topology=ols-topo/ +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-topology:topology-context/topology=ols-topo/node=node-4/ +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-topology:topology-context/topology=ols-topo/node=node-4/owned-node-edge-point=node-4-port-13/ +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-topology:topology-context/topology=ols-topo/node=node-4/owned-node-edge-point=node-4-port-13/tapi-connectivity:cep-list/ +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-topology:topology-context/topology=ols-topo/link=link-4:2-2:4/ + +# Create ConnectivityServices and Connections: +curl -X POST -H "Content-Type: application/json" \ + http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service/ \ + -d @/home/tfs/tfs-ctrl/hackfest/tapi/client/cs1.json + +# Interrogate ConnectivityServices and Connections: +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context/ +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service=cs1/ +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context/connection=cs1/ + +# Delete ConnectivityServices and Connections: +curl -X DELETE -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service=cs1/ + + +## EXERCISE +# Exercise: retrieve and draw the topology +# solution in folder tapi_app + +cd ~/tfs-ctrl/hackfest/tapi/tapi_app +python3 tapi_app.py + + + +################################################################################ +# Deploy TeraFlowSDN +################################################################################ + +# Check status of Kubernetes +microk8s.status --wait-ready + +# Check all resources in Kubernetes +microk8s.kubectl get all --all-namespaces + +# Deploy TeraFlowSDN +cd ~/tfs-ctrl +source my_deploy.sh +./deploy.sh + +# Show status of your deployment +(if new terminal) cd ~/tfs-ctrl && source my_deploy.sh +./show_deploy.sh + +# Show logs of a specific component +(if new terminal) cd ~/tfs-ctrl && source my_deploy.sh +scripts/show_logs_device.sh + + + +################################################################################ +# Programmable L3 routers +################################################################################ + +# (done) Build a Netconf server supporting basic OpenConfig data model + +# Start the Netconf/OpenConfig server +cd ~/tfs-ctrl/hackfest/netconf-oc +python3 server_openconfig.py 8300 + + + +################################################################################ +# Service requests +################################################################################ + +## L3VPN service from JSON descriptors + +# (in a new terminal) Start OLS TAPI server: +cd ~/tfs-ctrl/hackfest/tapi/server +python3 -m tapi_server 8080 database/mini-ols-context.json + +# (in a new terminal) Start the Netconf/OpenConfig server for R1 +cd ~/tfs-ctrl/hackfest/netconf-oc +python3 server_openconfig.py 8301 + +# (in a new terminal) Start the Netconf/OpenConfig server for R2 +cd ~/tfs-ctrl/hackfest/netconf-oc +python3 server_openconfig.py 8302 + +# (in a new terminal) Start the Netconf/OpenConfig server for R3 +cd ~/tfs-ctrl/hackfest/netconf-oc +python3 server_openconfig.py 8303 + +# (in a new terminal) Start the Netconf/OpenConfig server for R4 +cd ~/tfs-ctrl/hackfest/netconf-oc +python3 server_openconfig.py 8304 + + + +############ +# Mock OSM +############ + +$ cd ~/tfs-ctrl/hackfest/ +$ python -m mock_osm +Welcome to the MockOSM shell. +Type help or ? to list commands. + +(mock-osm) create +Service b8c99e2c-39d8-424d-9833-554634269555 created +# Service should be created in TFS. Check "Slice" and "Service" pages on WebUI. +# Check configuration rules in "Devices" + +(mock-osm) status +response.status_code=200 +Status of Service b8c99e2c-39d8-424d-9833-554634269555 is {'sdn_status': 'ACTIVE'} + +(mock-osm) delete +Service b8c99e2c-39d8-424d-9833-554634269555 deleted +# Service should be removed from TFS. Check "Slice" and "Service" pages on WebUI. +# Check configuration rules in "Devices" + +(mock-osm) exit +Bye! + +############ +# gNMI +############ + +## Download and install the latest release +$ sudo bash -c "$(curl -sL https://get.containerlab.dev)“ + +## Deploy proposed two SR node scenario +$ cd tfs-ctrl/hackfest/gnmi +$ sudo containerlab deploy -t srlinux.clab.yml + +## Access SR Bash +$ docker exec -it clab-srlinux-srl1 bash + +## Acess SR CLI +$ docker exec -it clab-srlinux-srl1 sr_cli + +## Destroy scenario +$ sudo containerlab destroy --topo srlinux.clab.yml + +## Install gNMIc +$ sudo bash -c "$(curl -sL https://get-gnmic.kmrd.dev)" + +## gNMI Capabilities request +$ gnmic -a clab-srlinux-srl1 -u admin -p NokiaSrl1! --skip-verify capabilities + +## gNMI Get request +$ gnmic -a clab-srlinux-srl1 -u admin -p NokiaSrl1! --skip-verify -e json_ietf get --path /system/name/host-name +$ gnmic -a clab-srlinux-srl1 -u admin -p NokiaSrl1! --skip-verify -e json_ietf get --path /interface[name=mgmt0] + +## gNMI Set request +$ gnmic -a clab-srlinux-srl1 -u admin -p NokiaSrl1! --skip-verify -e json_ietf set --update-path /system/name/host-name --update-value slr11 + +(we check the changed value) +$ gnmic -a clab-srlinux-srl1 -u admin -p NokiaSrl1! --skip-verify -e json_ietf get --path /system/name/host-name + +## Subscribe request +$ gnmic -a clab-srlinux-srl1 -u admin -p NokiaSrl1! --skip-verify -e json_ietf subscribe --path /interface[name=mgmt0]/statistics +(In another terminal, you can generate traffic) +$ssh admin@clab-srlinux-srl1 diff --git a/src/common/database/api/context/slice/__init__.py b/hackfest/gnmi/.gitkeep similarity index 100% rename from src/common/database/api/context/slice/__init__.py rename to hackfest/gnmi/.gitkeep diff --git a/hackfest/gnmi/sonic.clab.yml b/hackfest/gnmi/sonic.clab.yml new file mode 100644 index 0000000000000000000000000000000000000000..dc4f743213406531fab9ac5988342c2b213d88ad --- /dev/null +++ b/hackfest/gnmi/sonic.clab.yml @@ -0,0 +1,15 @@ +# file: sonic.clab.yml +name: sonic-vs + +topology: + nodes: + srl1: + kind: sonic-vs + image: docker-sonic-vs + srl2: + kind: sonic-vs + image: docker-sonic-vs + + links: + - endpoints: ["srl1:e1-1", "srl2:e1-1"] + diff --git a/hackfest/grpc/commands.txt b/hackfest/grpc/commands.txt new file mode 100644 index 0000000000000000000000000000000000000000..e0148b180c03841098781563976467d980abc464 --- /dev/null +++ b/hackfest/grpc/commands.txt @@ -0,0 +1,36 @@ +== GRPC +$ cd ~/tfs-ctrl/hackfest/grpc + +COMPILE connection.proto: +$ python -m grpc_tools.protoc -I=. --python_out=connection/ connection.proto + +RUN CREATE AND LIST CONNECTION +$ cd ~/tfs-ctrl/hackfest/grpc/connection +$ python3 create.py connection.txt +$ python3 list.py connection.txt + +COMPILE connectionService.proto +$ python -m grpc_tools.protoc -I=. --python_out=connectionService/ --grpc_python_out=connectionService/ connectionService.proto + +RUN SERVER +$ cd ~/tfs-ctrl/hackfest/grpc/connectionService +$ python3 connectionService_server.py + +RUN CLIENT (in another window) +$ cd ~/tfs-ctrl/hackfest/grpc/connectionService +$ python3 connectionService_client.py + +### EXERCISE +COMPILE connectionServiceWithNotif.proto +$ cd ~/tfs-ctrl/hackfest/grpc/ +$ python -m grpc_tools.protoc -I=. --python_out=connectionServiceWithNotif/ --grpc_python_out=connectionServiceWithNotif/ connectionServiceWithNotif.proto + +RUN SERVER +$ cd ~/tfs-ctrl/hackfest/grpc/connectionServiceWithNotif +$ python3 connectionServiceWithNotif_server.py + +RUN CLIENT (in another window) +$ cd ~/tfs-ctrl/hackfest/grpc/connectionServiceWithNotif +$ python3 connectionServiceWithNotif_client.py + + diff --git a/hackfest/grpc/connection.proto b/hackfest/grpc/connection.proto new file mode 100644 index 0000000000000000000000000000000000000000..42661cd5bcc0218d5daf4ffad31b22d6234fcc33 --- /dev/null +++ b/hackfest/grpc/connection.proto @@ -0,0 +1,24 @@ +//Example of connection +syntax = "proto3"; +package connection; + +message Connection { + string connectionId = 1; + string sourceNode = 2; + string targetNode = 3; + string sourcePort = 4; + string targetPort = 5; + uint32 bandwidth = 6; + + enum LayerProtocolName { + ETH = 0; + OPTICAL = 1; + } + + LayerProtocolName layerProtocolName = 7; + +} + +message ConnectionList { + repeated Connection connection = 1; +} diff --git a/hackfest/grpc/connection/connection_pb2.py b/hackfest/grpc/connection/connection_pb2.py new file mode 100644 index 0000000000000000000000000000000000000000..e66b665b22303fbf582de9ec378591fae4e09659 --- /dev/null +++ b/hackfest/grpc/connection/connection_pb2.py @@ -0,0 +1,176 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: connection.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='connection.proto', + package='connection', + syntax='proto3', + serialized_options=None, + serialized_pb=_b('\n\x10\x63onnection.proto\x12\nconnection\"\xf5\x01\n\nConnection\x12\x14\n\x0c\x63onnectionId\x18\x01 \x01(\t\x12\x12\n\nsourceNode\x18\x02 \x01(\t\x12\x12\n\ntargetNode\x18\x03 \x01(\t\x12\x12\n\nsourcePort\x18\x04 \x01(\t\x12\x12\n\ntargetPort\x18\x05 \x01(\t\x12\x11\n\tbandwidth\x18\x06 \x01(\r\x12\x43\n\x11layerProtocolName\x18\x07 \x01(\x0e\x32(.connection.Connection.LayerProtocolName\")\n\x11LayerProtocolName\x12\x07\n\x03\x45TH\x10\x00\x12\x0b\n\x07OPTICAL\x10\x01\"<\n\x0e\x43onnectionList\x12*\n\nconnection\x18\x01 \x03(\x0b\x32\x16.connection.Connectionb\x06proto3') +) + + + +_CONNECTION_LAYERPROTOCOLNAME = _descriptor.EnumDescriptor( + name='LayerProtocolName', + full_name='connection.Connection.LayerProtocolName', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ETH', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='OPTICAL', index=1, number=1, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=237, + serialized_end=278, +) +_sym_db.RegisterEnumDescriptor(_CONNECTION_LAYERPROTOCOLNAME) + + +_CONNECTION = _descriptor.Descriptor( + name='Connection', + full_name='connection.Connection', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='connectionId', full_name='connection.Connection.connectionId', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sourceNode', full_name='connection.Connection.sourceNode', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='targetNode', full_name='connection.Connection.targetNode', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sourcePort', full_name='connection.Connection.sourcePort', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='targetPort', full_name='connection.Connection.targetPort', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='bandwidth', full_name='connection.Connection.bandwidth', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='layerProtocolName', full_name='connection.Connection.layerProtocolName', index=6, + number=7, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _CONNECTION_LAYERPROTOCOLNAME, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=33, + serialized_end=278, +) + + +_CONNECTIONLIST = _descriptor.Descriptor( + name='ConnectionList', + full_name='connection.ConnectionList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='connection', full_name='connection.ConnectionList.connection', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=280, + serialized_end=340, +) + +_CONNECTION.fields_by_name['layerProtocolName'].enum_type = _CONNECTION_LAYERPROTOCOLNAME +_CONNECTION_LAYERPROTOCOLNAME.containing_type = _CONNECTION +_CONNECTIONLIST.fields_by_name['connection'].message_type = _CONNECTION +DESCRIPTOR.message_types_by_name['Connection'] = _CONNECTION +DESCRIPTOR.message_types_by_name['ConnectionList'] = _CONNECTIONLIST +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), dict( + DESCRIPTOR = _CONNECTION, + __module__ = 'connection_pb2' + # @@protoc_insertion_point(class_scope:connection.Connection) + )) +_sym_db.RegisterMessage(Connection) + +ConnectionList = _reflection.GeneratedProtocolMessageType('ConnectionList', (_message.Message,), dict( + DESCRIPTOR = _CONNECTIONLIST, + __module__ = 'connection_pb2' + # @@protoc_insertion_point(class_scope:connection.ConnectionList) + )) +_sym_db.RegisterMessage(ConnectionList) + + +# @@protoc_insertion_point(module_scope) diff --git a/hackfest/grpc/connection/create.py b/hackfest/grpc/connection/create.py new file mode 100755 index 0000000000000000000000000000000000000000..df5df77d631f25e0ce5368d537f4cb0f99297669 --- /dev/null +++ b/hackfest/grpc/connection/create.py @@ -0,0 +1,48 @@ +#! /usr/bin/env python3 +import connection_pb2 +import sys + +try: + raw_input # Python 2 +except NameError: + raw_input = input # Python 3 + + +# This function fills in a Connection message based on user input. +def PromptForConnection(connection): + connection.connectionId = raw_input("Enter connectionID: ") + connection.sourceNode = raw_input("Enter sourceNode: ") + connection.targetNode = raw_input("Enter targetNode: ") + connection.sourcePort = raw_input("Enter sourcePort: ") + connection.targetPort = raw_input("Enter targetPort: ") + connection.bandwidth = int( raw_input("Enter bandwidth: ") ) + + type = raw_input("Is this a eth or optical connection? ") + if type == "eth": + connection.layerProtocolName = connection_pb2.Connection.ETH + elif type == "optical": + connection.layerProtocolName = connection_pb2.Connection.OPTICAL + else: + print("Unknown layerProtocolName type; leaving as default value.") + + +if __name__ == '__main__': + if len(sys.argv) != 2: + print("Usage:", sys.argv[0], "CONNECTION_FILE") + sys.exit(-1) + + connectionList = connection_pb2.ConnectionList() + + # Read the existing address book. + try: + with open(sys.argv[1], "rb") as f: + connectionList.ParseFromString(f.read()) + except IOError: + print(sys.argv[1] + ": File not found. Creating a new file.") + + # Add an address. + PromptForConnection(connectionList.connection.add()) + + # Write the new address book back to disk. + with open(sys.argv[1], "wb") as f: + f.write(connectionList.SerializeToString()) diff --git a/hackfest/grpc/connection/list.py b/hackfest/grpc/connection/list.py new file mode 100755 index 0000000000000000000000000000000000000000..47b92cc4aa2e64cb121eddbcf4a0d10f87800fb2 --- /dev/null +++ b/hackfest/grpc/connection/list.py @@ -0,0 +1,33 @@ +#! /usr/bin/env python3 +from __future__ import print_function +import connection_pb2 +import sys + + +# Iterates though all connections in the ConnectionList and prints info about them. +def ListConnections(connectionList): + for connection in connectionList.connection: + print("connectionID:", connection.connectionId) + print(" sourceNode:", connection.sourceNode) + print(" targetNode:", connection.targetNode) + print(" sourcePort:", connection.sourcePort) + print(" targetPort:", connection.targetPort) + print(" bandwidth:", connection.bandwidth) + if connection.layerProtocolName == connection_pb2.Connection.ETH: + print(" layerProtocolName:ETH") + elif connection.layerProtocolName == connection_pb2.Connection.OPTICAL: + print(" layerProtocolName:OPTICAL") + + +if __name__ == '__main__': + if len(sys.argv) != 2: + print("Usage:", sys.argv[0], "CONNECTION_FILE") + sys.exit(-1) + + connectionList = connection_pb2.ConnectionList() + + # Read the existing address book. + with open(sys.argv[1], "rb") as f: + connectionList.ParseFromString(f.read()) + + ListConnections(connectionList) diff --git a/hackfest/grpc/connectionService.proto b/hackfest/grpc/connectionService.proto new file mode 100644 index 0000000000000000000000000000000000000000..aa3bcb4ef68ef8d3185d1b7da21ac0867b9cf59d --- /dev/null +++ b/hackfest/grpc/connectionService.proto @@ -0,0 +1,32 @@ +//Example of connection +syntax = "proto3"; +package connection; + +import "google/protobuf/empty.proto"; + +service ConnectionService { + rpc CreateConnection (Connection) returns (google.protobuf.Empty) {} + rpc ListConnection (google.protobuf.Empty) returns (ConnectionList) {} +} + + +message Connection { + string connectionId = 1; + string sourceNode = 2; + string targetNode = 3; + string sourcePort = 4; + string targetPort = 5; + uint32 bandwidth = 6; + + enum LayerProtocolName { + ETH = 0; + OPTICAL = 1; + } + + LayerProtocolName layerProtocolName = 7; + +} + +message ConnectionList { + repeated Connection connection = 1; +} diff --git a/hackfest/grpc/connectionService/connectionService_client.py b/hackfest/grpc/connectionService/connectionService_client.py new file mode 100644 index 0000000000000000000000000000000000000000..c0f45f7a90efc85bb718a25c2353595c4a12a042 --- /dev/null +++ b/hackfest/grpc/connectionService/connectionService_client.py @@ -0,0 +1,34 @@ +from __future__ import print_function + +import grpc + +import connectionService_pb2 +import connectionService_pb2_grpc +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +try: + raw_input # Python 2 +except NameError: + raw_input = input # Python 3 + +def createConnection(): + with grpc.insecure_channel('localhost:50051') as channel: + connection=connectionService_pb2.Connection() + connection.connectionId = raw_input("Enter connectionID: ") + connection.sourceNode = raw_input("Enter sourceNode: ") + connection.targetNode = raw_input("Enter targetNode: ") + connection.sourcePort = raw_input("Enter sourcePort: ") + connection.targetPort = raw_input("Enter targetPort: ") + connection.bandwidth = int( raw_input("Enter bandwidth: ") ) + stub = connectionService_pb2_grpc.ConnectionServiceStub(channel) + response = stub.CreateConnection(connection) + print("ConnectionService client received: " + str(response) ) + +def listConnection(): + with grpc.insecure_channel('localhost:50051') as channel: + stub = connectionService_pb2_grpc.ConnectionServiceStub(channel) + response = stub.ListConnection(google_dot_protobuf_dot_empty__pb2.Empty()) + print("ConnectionService client received: " + str(response) ) + +if __name__ == '__main__': + createConnection() + listConnection() \ No newline at end of file diff --git a/hackfest/grpc/connectionService/connectionService_pb2.py b/hackfest/grpc/connectionService/connectionService_pb2.py new file mode 100644 index 0000000000000000000000000000000000000000..9f1951fa92a017baf4f44470e833aae8d74e0f3b --- /dev/null +++ b/hackfest/grpc/connectionService/connectionService_pb2.py @@ -0,0 +1,211 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: connectionService.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='connectionService.proto', + package='connection', + syntax='proto3', + serialized_options=None, + serialized_pb=_b('\n\x17\x63onnectionService.proto\x12\nconnection\x1a\x1bgoogle/protobuf/empty.proto\"\xf5\x01\n\nConnection\x12\x14\n\x0c\x63onnectionId\x18\x01 \x01(\t\x12\x12\n\nsourceNode\x18\x02 \x01(\t\x12\x12\n\ntargetNode\x18\x03 \x01(\t\x12\x12\n\nsourcePort\x18\x04 \x01(\t\x12\x12\n\ntargetPort\x18\x05 \x01(\t\x12\x11\n\tbandwidth\x18\x06 \x01(\r\x12\x43\n\x11layerProtocolName\x18\x07 \x01(\x0e\x32(.connection.Connection.LayerProtocolName\")\n\x11LayerProtocolName\x12\x07\n\x03\x45TH\x10\x00\x12\x0b\n\x07OPTICAL\x10\x01\"<\n\x0e\x43onnectionList\x12*\n\nconnection\x18\x01 \x03(\x0b\x32\x16.connection.Connection2\xa1\x01\n\x11\x43onnectionService\x12\x44\n\x10\x43reateConnection\x12\x16.connection.Connection\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x0eListConnection\x12\x16.google.protobuf.Empty\x1a\x1a.connection.ConnectionList\"\x00\x62\x06proto3') + , + dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,]) + + + +_CONNECTION_LAYERPROTOCOLNAME = _descriptor.EnumDescriptor( + name='LayerProtocolName', + full_name='connection.Connection.LayerProtocolName', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ETH', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='OPTICAL', index=1, number=1, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=273, + serialized_end=314, +) +_sym_db.RegisterEnumDescriptor(_CONNECTION_LAYERPROTOCOLNAME) + + +_CONNECTION = _descriptor.Descriptor( + name='Connection', + full_name='connection.Connection', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='connectionId', full_name='connection.Connection.connectionId', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sourceNode', full_name='connection.Connection.sourceNode', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='targetNode', full_name='connection.Connection.targetNode', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sourcePort', full_name='connection.Connection.sourcePort', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='targetPort', full_name='connection.Connection.targetPort', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='bandwidth', full_name='connection.Connection.bandwidth', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='layerProtocolName', full_name='connection.Connection.layerProtocolName', index=6, + number=7, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _CONNECTION_LAYERPROTOCOLNAME, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=69, + serialized_end=314, +) + + +_CONNECTIONLIST = _descriptor.Descriptor( + name='ConnectionList', + full_name='connection.ConnectionList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='connection', full_name='connection.ConnectionList.connection', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=316, + serialized_end=376, +) + +_CONNECTION.fields_by_name['layerProtocolName'].enum_type = _CONNECTION_LAYERPROTOCOLNAME +_CONNECTION_LAYERPROTOCOLNAME.containing_type = _CONNECTION +_CONNECTIONLIST.fields_by_name['connection'].message_type = _CONNECTION +DESCRIPTOR.message_types_by_name['Connection'] = _CONNECTION +DESCRIPTOR.message_types_by_name['ConnectionList'] = _CONNECTIONLIST +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), dict( + DESCRIPTOR = _CONNECTION, + __module__ = 'connectionService_pb2' + # @@protoc_insertion_point(class_scope:connection.Connection) + )) +_sym_db.RegisterMessage(Connection) + +ConnectionList = _reflection.GeneratedProtocolMessageType('ConnectionList', (_message.Message,), dict( + DESCRIPTOR = _CONNECTIONLIST, + __module__ = 'connectionService_pb2' + # @@protoc_insertion_point(class_scope:connection.ConnectionList) + )) +_sym_db.RegisterMessage(ConnectionList) + + + +_CONNECTIONSERVICE = _descriptor.ServiceDescriptor( + name='ConnectionService', + full_name='connection.ConnectionService', + file=DESCRIPTOR, + index=0, + serialized_options=None, + serialized_start=379, + serialized_end=540, + methods=[ + _descriptor.MethodDescriptor( + name='CreateConnection', + full_name='connection.ConnectionService.CreateConnection', + index=0, + containing_service=None, + input_type=_CONNECTION, + output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ListConnection', + full_name='connection.ConnectionService.ListConnection', + index=1, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=_CONNECTIONLIST, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_CONNECTIONSERVICE) + +DESCRIPTOR.services_by_name['ConnectionService'] = _CONNECTIONSERVICE + +# @@protoc_insertion_point(module_scope) diff --git a/hackfest/grpc/connectionService/connectionService_pb2_grpc.py b/hackfest/grpc/connectionService/connectionService_pb2_grpc.py new file mode 100644 index 0000000000000000000000000000000000000000..94ffffbf7fd3c90b541f36bd1aac6f23e1b5913b --- /dev/null +++ b/hackfest/grpc/connectionService/connectionService_pb2_grpc.py @@ -0,0 +1,64 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +import connectionService_pb2 as connectionService__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +class ConnectionServiceStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.CreateConnection = channel.unary_unary( + '/connection.ConnectionService/CreateConnection', + request_serializer=connectionService__pb2.Connection.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + self.ListConnection = channel.unary_unary( + '/connection.ConnectionService/ListConnection', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=connectionService__pb2.ConnectionList.FromString, + ) + + +class ConnectionServiceServicer(object): + # missing associated documentation comment in .proto file + pass + + def CreateConnection(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListConnection(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_ConnectionServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'CreateConnection': grpc.unary_unary_rpc_method_handler( + servicer.CreateConnection, + request_deserializer=connectionService__pb2.Connection.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'ListConnection': grpc.unary_unary_rpc_method_handler( + servicer.ListConnection, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=connectionService__pb2.ConnectionList.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'connection.ConnectionService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/hackfest/grpc/connectionService/connectionService_server.py b/hackfest/grpc/connectionService/connectionService_server.py new file mode 100644 index 0000000000000000000000000000000000000000..6fbd195cdeaf22ddeab86ca0a4860f85a194448f --- /dev/null +++ b/hackfest/grpc/connectionService/connectionService_server.py @@ -0,0 +1,39 @@ +from concurrent import futures +import time +import logging +import grpc + +import connectionService_pb2 +import connectionService_pb2_grpc +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + +_ONE_DAY_IN_SECONDS = 60 * 60 * 24 + +class connectionService(connectionService_pb2_grpc.ConnectionServiceServicer): + def __init__(self): + self.connectionList = connectionService_pb2.ConnectionList() + + def CreateConnection(self, request, context): + logging.debug("Received Connection " + request.connectionId) + self.connectionList.connection.extend([request]) + return google_dot_protobuf_dot_empty__pb2.Empty() + + def ListConnection(self, request, context): + logging.debug("List Connections") + return self.connectionList + +def serve(): + server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) + connectionService_pb2_grpc.add_ConnectionServiceServicer_to_server(connectionService(), server) + server.add_insecure_port('[::]:50051') + logging.debug("Starting server") + server.start() + try: + while True: + time.sleep(_ONE_DAY_IN_SECONDS) + except KeyboardInterrupt: + server.stop(0) + +if __name__ == '__main__': + logging.basicConfig(level=logging.DEBUG) + serve() diff --git a/hackfest/grpc/connectionServiceWithNotif.proto b/hackfest/grpc/connectionServiceWithNotif.proto new file mode 100644 index 0000000000000000000000000000000000000000..8430479c525894e0e13140ad07d5691eb8601aca --- /dev/null +++ b/hackfest/grpc/connectionServiceWithNotif.proto @@ -0,0 +1,36 @@ +//Example of connection +syntax = "proto3"; +package connection; + +import "google/protobuf/empty.proto"; + +service ConnectionServiceWithNotif { + rpc CreateConnection (Connection) returns (google.protobuf.Empty) {} + rpc ListConnection (google.protobuf.Empty) returns (ConnectionList) {} + rpc GetBer(Connection) returns (stream Ber) {} +} + +message Ber { + double value = 1; +} + +message Connection { + string connectionId = 1; + string sourceNode = 2; + string targetNode = 3; + string sourcePort = 4; + string targetPort = 5; + uint32 bandwidth = 6; + + enum LayerProtocolName { + ETH = 0; + OPTICAL = 1; + } + + LayerProtocolName layerProtocolName = 7; + +} + +message ConnectionList { + repeated Connection connection = 1; +} diff --git a/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_client.py b/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_client.py new file mode 100644 index 0000000000000000000000000000000000000000..e40e0a5fa53e75a3a1ad940c9516d75ada1f180f --- /dev/null +++ b/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_client.py @@ -0,0 +1,39 @@ +from __future__ import print_function + +import grpc + +import connectionServiceWithNotif_pb2 +import connectionServiceWithNotif_pb2_grpc +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +try: + raw_input # Python 2 +except NameError: + raw_input = input # Python 3 + +def createConnection(stub): + connection=connectionServiceWithNotif_pb2.Connection() + connection.connectionId = raw_input("Enter connectionID: ") + connection.sourceNode = raw_input("Enter sourceNode: ") + connection.targetNode = raw_input("Enter targetNode: ") + connection.sourcePort = raw_input("Enter sourcePort: ") + connection.targetPort = raw_input("Enter targetPort: ") + connection.bandwidth = int( raw_input("Enter bandwidth: ") ) + + response = stub.CreateConnection(connection) + print("ConnectionService client received: " + str(response) ) + +def listConnection(stub): + response = stub.ListConnection(google_dot_protobuf_dot_empty__pb2.Empty()) + print("ConnectionService client received: " + str(response) ) + +def getBer(stub): + responses = stub.GetBer(connectionServiceWithNotif_pb2.Connection(connectionId="conn1")) + for response in responses: + print("Received Ber %s" % (response.value) ) + +if __name__ == '__main__': + with grpc.insecure_channel('localhost:50051') as channel: + stub = connectionServiceWithNotif_pb2_grpc.ConnectionServiceWithNotifStub(channel) + #createConnection(stub) + listConnection(stub) + getBer(stub) \ No newline at end of file diff --git a/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_pb2.py b/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_pb2.py new file mode 100644 index 0000000000000000000000000000000000000000..403dd0ce409700875e8fc80b011564d055c5c4cb --- /dev/null +++ b/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_pb2.py @@ -0,0 +1,259 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: connectionServiceWithNotif.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='connectionServiceWithNotif.proto', + package='connection', + syntax='proto3', + serialized_options=None, + serialized_pb=_b('\n connectionServiceWithNotif.proto\x12\nconnection\x1a\x1bgoogle/protobuf/empty.proto\"\x14\n\x03\x42\x65r\x12\r\n\x05value\x18\x01 \x01(\x01\"\xf5\x01\n\nConnection\x12\x14\n\x0c\x63onnectionId\x18\x01 \x01(\t\x12\x12\n\nsourceNode\x18\x02 \x01(\t\x12\x12\n\ntargetNode\x18\x03 \x01(\t\x12\x12\n\nsourcePort\x18\x04 \x01(\t\x12\x12\n\ntargetPort\x18\x05 \x01(\t\x12\x11\n\tbandwidth\x18\x06 \x01(\r\x12\x43\n\x11layerProtocolName\x18\x07 \x01(\x0e\x32(.connection.Connection.LayerProtocolName\")\n\x11LayerProtocolName\x12\x07\n\x03\x45TH\x10\x00\x12\x0b\n\x07OPTICAL\x10\x01\"<\n\x0e\x43onnectionList\x12*\n\nconnection\x18\x01 \x03(\x0b\x32\x16.connection.Connection2\xe1\x01\n\x1a\x43onnectionServiceWithNotif\x12\x44\n\x10\x43reateConnection\x12\x16.connection.Connection\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x0eListConnection\x12\x16.google.protobuf.Empty\x1a\x1a.connection.ConnectionList\"\x00\x12\x35\n\x06GetBer\x12\x16.connection.Connection\x1a\x0f.connection.Ber\"\x00\x30\x01\x62\x06proto3') + , + dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,]) + + + +_CONNECTION_LAYERPROTOCOLNAME = _descriptor.EnumDescriptor( + name='LayerProtocolName', + full_name='connection.Connection.LayerProtocolName', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ETH', index=0, number=0, + serialized_options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='OPTICAL', index=1, number=1, + serialized_options=None, + type=None), + ], + containing_type=None, + serialized_options=None, + serialized_start=304, + serialized_end=345, +) +_sym_db.RegisterEnumDescriptor(_CONNECTION_LAYERPROTOCOLNAME) + + +_BER = _descriptor.Descriptor( + name='Ber', + full_name='connection.Ber', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='value', full_name='connection.Ber.value', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=77, + serialized_end=97, +) + + +_CONNECTION = _descriptor.Descriptor( + name='Connection', + full_name='connection.Connection', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='connectionId', full_name='connection.Connection.connectionId', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sourceNode', full_name='connection.Connection.sourceNode', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='targetNode', full_name='connection.Connection.targetNode', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sourcePort', full_name='connection.Connection.sourcePort', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='targetPort', full_name='connection.Connection.targetPort', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='bandwidth', full_name='connection.Connection.bandwidth', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='layerProtocolName', full_name='connection.Connection.layerProtocolName', index=6, + number=7, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _CONNECTION_LAYERPROTOCOLNAME, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=100, + serialized_end=345, +) + + +_CONNECTIONLIST = _descriptor.Descriptor( + name='ConnectionList', + full_name='connection.ConnectionList', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='connection', full_name='connection.ConnectionList.connection', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=347, + serialized_end=407, +) + +_CONNECTION.fields_by_name['layerProtocolName'].enum_type = _CONNECTION_LAYERPROTOCOLNAME +_CONNECTION_LAYERPROTOCOLNAME.containing_type = _CONNECTION +_CONNECTIONLIST.fields_by_name['connection'].message_type = _CONNECTION +DESCRIPTOR.message_types_by_name['Ber'] = _BER +DESCRIPTOR.message_types_by_name['Connection'] = _CONNECTION +DESCRIPTOR.message_types_by_name['ConnectionList'] = _CONNECTIONLIST +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Ber = _reflection.GeneratedProtocolMessageType('Ber', (_message.Message,), dict( + DESCRIPTOR = _BER, + __module__ = 'connectionServiceWithNotif_pb2' + # @@protoc_insertion_point(class_scope:connection.Ber) + )) +_sym_db.RegisterMessage(Ber) + +Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), dict( + DESCRIPTOR = _CONNECTION, + __module__ = 'connectionServiceWithNotif_pb2' + # @@protoc_insertion_point(class_scope:connection.Connection) + )) +_sym_db.RegisterMessage(Connection) + +ConnectionList = _reflection.GeneratedProtocolMessageType('ConnectionList', (_message.Message,), dict( + DESCRIPTOR = _CONNECTIONLIST, + __module__ = 'connectionServiceWithNotif_pb2' + # @@protoc_insertion_point(class_scope:connection.ConnectionList) + )) +_sym_db.RegisterMessage(ConnectionList) + + + +_CONNECTIONSERVICEWITHNOTIF = _descriptor.ServiceDescriptor( + name='ConnectionServiceWithNotif', + full_name='connection.ConnectionServiceWithNotif', + file=DESCRIPTOR, + index=0, + serialized_options=None, + serialized_start=410, + serialized_end=635, + methods=[ + _descriptor.MethodDescriptor( + name='CreateConnection', + full_name='connection.ConnectionServiceWithNotif.CreateConnection', + index=0, + containing_service=None, + input_type=_CONNECTION, + output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='ListConnection', + full_name='connection.ConnectionServiceWithNotif.ListConnection', + index=1, + containing_service=None, + input_type=google_dot_protobuf_dot_empty__pb2._EMPTY, + output_type=_CONNECTIONLIST, + serialized_options=None, + ), + _descriptor.MethodDescriptor( + name='GetBer', + full_name='connection.ConnectionServiceWithNotif.GetBer', + index=2, + containing_service=None, + input_type=_CONNECTION, + output_type=_BER, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_CONNECTIONSERVICEWITHNOTIF) + +DESCRIPTOR.services_by_name['ConnectionServiceWithNotif'] = _CONNECTIONSERVICEWITHNOTIF + +# @@protoc_insertion_point(module_scope) diff --git a/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_pb2_grpc.py b/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_pb2_grpc.py new file mode 100644 index 0000000000000000000000000000000000000000..9a88a22b4bd9055f1d2e905abaa2496faadb5533 --- /dev/null +++ b/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_pb2_grpc.py @@ -0,0 +1,81 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +import connectionServiceWithNotif_pb2 as connectionServiceWithNotif__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + + +class ConnectionServiceWithNotifStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.CreateConnection = channel.unary_unary( + '/connection.ConnectionServiceWithNotif/CreateConnection', + request_serializer=connectionServiceWithNotif__pb2.Connection.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + self.ListConnection = channel.unary_unary( + '/connection.ConnectionServiceWithNotif/ListConnection', + request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + response_deserializer=connectionServiceWithNotif__pb2.ConnectionList.FromString, + ) + self.GetBer = channel.unary_stream( + '/connection.ConnectionServiceWithNotif/GetBer', + request_serializer=connectionServiceWithNotif__pb2.Connection.SerializeToString, + response_deserializer=connectionServiceWithNotif__pb2.Ber.FromString, + ) + + +class ConnectionServiceWithNotifServicer(object): + # missing associated documentation comment in .proto file + pass + + def CreateConnection(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListConnection(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetBer(self, request, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_ConnectionServiceWithNotifServicer_to_server(servicer, server): + rpc_method_handlers = { + 'CreateConnection': grpc.unary_unary_rpc_method_handler( + servicer.CreateConnection, + request_deserializer=connectionServiceWithNotif__pb2.Connection.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'ListConnection': grpc.unary_unary_rpc_method_handler( + servicer.ListConnection, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=connectionServiceWithNotif__pb2.ConnectionList.SerializeToString, + ), + 'GetBer': grpc.unary_stream_rpc_method_handler( + servicer.GetBer, + request_deserializer=connectionServiceWithNotif__pb2.Connection.FromString, + response_serializer=connectionServiceWithNotif__pb2.Ber.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'connection.ConnectionServiceWithNotif', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_server.py b/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_server.py new file mode 100644 index 0000000000000000000000000000000000000000..a9970056dbd6308e1191f4e57b7be7d20a94c43e --- /dev/null +++ b/hackfest/grpc/connectionServiceWithNotif/connectionServiceWithNotif_server.py @@ -0,0 +1,46 @@ +from concurrent import futures +import time +import logging +import grpc + +import connectionServiceWithNotif_pb2 +import connectionServiceWithNotif_pb2_grpc +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + +_ONE_DAY_IN_SECONDS = 60 * 60 * 24 + +class connectionServiceWithNotif(connectionServiceWithNotif_pb2_grpc.ConnectionServiceWithNotifServicer): + def __init__(self): + self.connectionList = connectionServiceWithNotif_pb2.ConnectionList() + + def CreateConnection(self, request, context): + logging.debug("Received Connection " + request.connectionId) + self.connectionList.connection.extend([request]) + return google_dot_protobuf_dot_empty__pb2.Empty() + + def ListConnection(self, request, context): + logging.debug("List Connections") + return self.connectionList + def GetBer (self, request, context): + logging.debug("Get Ber") + while True: + time.sleep(5) + ber=connectionServiceWithNotif_pb2.Ber(value=10) + yield ber + + +def serve(): + server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) + connectionServiceWithNotif_pb2_grpc.add_ConnectionServiceWithNotifServicer_to_server(connectionServiceWithNotif(), server) + server.add_insecure_port('[::]:50051') + logging.debug("Starting server") + server.start() + try: + while True: + time.sleep(_ONE_DAY_IN_SECONDS) + except KeyboardInterrupt: + server.stop(0) + +if __name__ == '__main__': + logging.basicConfig(level=logging.DEBUG) + serve() diff --git a/hackfest/grpc/topologyService.proto b/hackfest/grpc/topologyService.proto new file mode 100644 index 0000000000000000000000000000000000000000..cf9601a4bf4c07a5f0bf73f9feb9f1e89d50ba63 --- /dev/null +++ b/hackfest/grpc/topologyService.proto @@ -0,0 +1,38 @@ +//Example of topology +syntax = "proto3"; +package topology; + +import "google/protobuf/empty.proto"; + +service TopologyService { + rpc GetTopology (google.protobuf.Empty) returns (Topology) {} +} + + +message Link { + string link_id = 1; + string source_node = 2; + string target_node = 3; + string source_port = 4; + string target_port = 5; +} + +message Node { + string node_id = 1; + repeated Port port = 2; +} + +message Port { + string port_id = 1; + enum LayerProtocolName { + ETH = 0; + OPTICAL = 1; + } + LayerProtocolName layerProtocolName = 2; +} + +message Topology { + repeated Node node = 1; + repeated Link link = 2; +} + diff --git a/hackfest/grpc/topologyService/topologyService_client.py b/hackfest/grpc/topologyService/topologyService_client.py new file mode 100644 index 0000000000000000000000000000000000000000..24ce803b0348110acda02237058db4101d605acc --- /dev/null +++ b/hackfest/grpc/topologyService/topologyService_client.py @@ -0,0 +1,21 @@ +from __future__ import print_function + +import grpc + +import topologyService_pb2 +import topologyService_pb2_grpc +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +try: + raw_input # Python 2 +except NameError: + raw_input = input # Python 3 + + +def getTopology(): + with grpc.insecure_channel('localhost:50051') as channel: + stub = topologyService_pb2_grpc.TopologyServiceStub(channel) + response = stub.GetTopology(google_dot_protobuf_dot_empty__pb2.Empty()) + print("TopologyService client received: " + str(response) ) + +if __name__ == '__main__': + getTopology() diff --git a/hackfest/grpc/topologyService/topologyService_server.py b/hackfest/grpc/topologyService/topologyService_server.py new file mode 100644 index 0000000000000000000000000000000000000000..bb72e224239297226b2cf03bca2a72f4b0086ba2 --- /dev/null +++ b/hackfest/grpc/topologyService/topologyService_server.py @@ -0,0 +1,48 @@ +from concurrent import futures +import time +import logging +import grpc + +import topologyService_pb2 +import topologyService_pb2_grpc +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 + +_ONE_DAY_IN_SECONDS = 60 * 60 * 24 + +class topologyService(topologyService_pb2_grpc.TopologyServiceServicer): + def __init__(self): + self.topology = topologyService_pb2.Topology() + node1=self.topology.node.add() + node1.node_id = "node1" + portA = node1.port.add() + portA.port_id = "node1portA" + node2=self.topology.node.add() + node2.node_id = "node2" + portB=node2.port.add() + portB.port_id = "node2portA" + link=self.topology.link.add() + link.link_id = "link1" + link.source_node = "node1" + link.target_node = "node2" + link.source_port = "node1portA" + link.target_port = "node2portA" + + def GetTopology(self, request, context): + logging.debug("Get Topology") + return self.topology + +def serve(): + server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) + topologyService_pb2_grpc.add_TopologyServiceServicer_to_server(topologyService(), server) + server.add_insecure_port('[::]:50051') + logging.debug("Starting server") + server.start() + try: + while True: + time.sleep(_ONE_DAY_IN_SECONDS) + except KeyboardInterrupt: + server.stop(0) + +if __name__ == '__main__': + logging.basicConfig(level=logging.DEBUG) + serve() diff --git a/hackfest/kafka/commands.txt b/hackfest/kafka/commands.txt new file mode 100644 index 0000000000000000000000000000000000000000..f29d6020b5fa044b1d60020b30075c763161f31f --- /dev/null +++ b/hackfest/kafka/commands.txt @@ -0,0 +1,27 @@ +== KAFKA +$ cd ~/tfs-ctrl/hackfest/kafka + +(INSTALL) +$ pip3 install kafka-python +$ wget https://ftp.cixug.es/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz +$ tar -xzf kafka_2.13-2.8.0.tgz +(RUN) +$ cd kafka_2.13-2.8.0 +$ bin/zookeeper-server-start.sh config/zookeeper.properties +(In new window) +$ cd ~/tfs-ctrl/hackfest/kafka/kafka_2.13-2.8.0 +$ bin/kafka-server-start.sh config/server.properties + +CREATE TOPIC +(In new window) +$ cd ~/tfs-ctrl/hackfest/kafka/kafka_2.13-2.8.0 +$ bin/kafka-topics.sh --create --topic my-topic --bootstrap-server localhost:9092 + +(In new window) +$ cd ~/tfs-ctrl/hackfest/kafka +$ python3 sub.py + +(In new window) +$ cd ~/tfs-ctrl/hackfest/kafka +$ python3 pub.py + diff --git a/hackfest/kafka/kafka_2.13-2.8.0.tgz b/hackfest/kafka/kafka_2.13-2.8.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..29538c5ea8fefb4d432e4b7e53d60316d0371629 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0.tgz differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/LICENSE b/hackfest/kafka/kafka_2.13-2.8.0/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..4d8e2c76a41c83859ea80f4e25be9892e98485c9 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/LICENSE @@ -0,0 +1,320 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + +------------------------------------------------------------------------------- +This project bundles some components that are also licensed under the Apache +License Version 2.0: + +audience-annotations-0.5.0 +commons-cli-1.4 +commons-lang3-3.8.1 +jackson-annotations-2.10.5 +jackson-core-2.10.5 +jackson-databind-2.10.5.1 +jackson-dataformat-csv-2.10.5 +jackson-datatype-jdk8-2.10.5 +jackson-jaxrs-base-2.10.5 +jackson-jaxrs-json-provider-2.10.5 +jackson-module-jaxb-annotations-2.10.5 +jackson-module-paranamer-2.10.5 +jackson-module-scala_2.13-2.10.5 +jakarta.validation-api-2.0.2 +javassist-3.27.0-GA +jetty-client-9.4.38.v20210224 +jetty-continuation-9.4.38.v20210224 +jetty-http-9.4.38.v20210224 +jetty-io-9.4.38.v20210224 +jetty-security-9.4.38.v20210224 +jetty-server-9.4.38.v20210224 +jetty-servlet-9.4.38.v20210224 +jetty-servlets-9.4.38.v20210224 +jetty-util-9.4.38.v20210224 +jetty-util-ajax-9.4.38.v20210224 +jersey-common-2.31 +jersey-server-2.31 +log4j-1.2.17 +lz4-java-1.7.1 +maven-artifact-3.6.3 +metrics-core-2.2.0 +netty-buffer-4.1.59.Final +netty-codec-4.1.59.Final +netty-common-4.1.59.Final +netty-handler-4.1.59.Final +netty-resolver-4.1.59.Final +netty-transport-4.1.59.Final +netty-transport-native-epoll-4.1.59.Final +netty-transport-native-epoll-4.1.59.Final +netty-transport-native-unix-common-4.1.59.Final +plexus-utils-3.2.1 +rocksdbjni-5.18.4 +scala-collection-compat_2.13-2.3.0 +scala-library-2.13.5 +scala-logging_2.13-3.9.2 +scala-reflect-2.13.5 +scala-java8-compat_2.13-0.9.1 +snappy-java-1.1.8.1 +zookeeper-3.5.9 +zookeeper-jute-3.5.9 + +=============================================================================== +This product bundles various third-party components under other open source +licenses. This section summarizes those components and their licenses. +See licenses/ for text of these licenses. + +--------------------------------------- +Eclipse Distribution License - v 1.0 +see: licenses/eclipse-distribution-license-1.0 + +jakarta.activation-api-1.2.1 +jakarta.xml.bind-api-2.3.2 + +--------------------------------------- +Eclipse Public License - v 2.0 +see: licenses/eclipse-public-license-2.0 + +jakarta.annotation-api-1.3.5 +jakarta.ws.rs-api-2.1.6 +javax.ws.rs-api-2.1.1 +hk2-api-2.6.1 +hk2-locator-2.6.1 +hk2-utils-2.6.1 +osgi-resource-locator-1.0.3 +aopalliance-repackaged-2.6.1 +jakarta.inject-2.6.1 +jersey-container-servlet-2.31 +jersey-container-servlet-core-2.31 +jersey-client-2.31 +jersey-hk2-2.31 +jersey-media-jaxb-2.31 + +--------------------------------------- +CDDL 1.1 + GPLv2 with classpath exception +see: licenses/CDDL+GPL-1.1 + +javax.servlet-api-3.1.0 +jaxb-api-2.3.0 +activation-1.1.1 + +--------------------------------------- +MIT License + +argparse4j-0.7.0, see: licenses/argparse-MIT +jopt-simple-5.0.4, see: licenses/jopt-simple-MIT +slf4j-api-1.7.30, see: licenses/slf4j-MIT +slf4j-log4j12-1.7.30, see: licenses/slf4j-MIT + +--------------------------------------- +BSD 2-Clause + +zstd-jni-1.4.9-1, see: licenses/zstd-jni-BSD-2-clause + +--------------------------------------- +BSD 3-Clause + +paranamer-2.8, see: licenses/paranamer-BSD-3-clause + +--------------------------------------- +Do What The F*ck You Want To Public License +see: licenses/DWTFYWTPL + +reflections-0.9.12 \ No newline at end of file diff --git a/hackfest/kafka/kafka_2.13-2.8.0/NOTICE b/hackfest/kafka/kafka_2.13-2.8.0/NOTICE new file mode 100644 index 0000000000000000000000000000000000000000..674c942b127bb637d086bd9caadb5f152358518c --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/NOTICE @@ -0,0 +1,19 @@ +Apache Kafka +Copyright 2021 The Apache Software Foundation. + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). + +This distribution has a binary dependency on jersey, which is available under the CDDL +License. The source code of jersey can be found at https://github.com/jersey/jersey/. + +The streams-scala (streams/streams-scala) module was donated by Lightbend and the original code was copyrighted by them: +Copyright (C) 2018 Lightbend Inc. +Copyright (C) 2017-2018 Alexis Seigneurin. + +This project contains the following code copied from Apache Hadoop: +clients/src/main/java/org/apache/kafka/common/utils/PureJavaCrc32C.java +Some portions of this file Copyright (c) 2004-2006 Intel Corporation and licensed under the BSD license. + +This project contains the following code copied from Apache Hive: +streams/src/main/java/org/apache/kafka/streams/state/internals/Murmur3.java diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/connect-distributed.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/connect-distributed.sh new file mode 100755 index 0000000000000000000000000000000000000000..b8088ad92345137d6861553619ba9843dce2fb5a --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/connect-distributed.sh @@ -0,0 +1,45 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ $# -lt 1 ]; +then + echo "USAGE: $0 [-daemon] connect-distributed.properties" + exit 1 +fi + +base_dir=$(dirname $0) + +if [ "x$KAFKA_LOG4J_OPTS" = "x" ]; then + export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/connect-log4j.properties" +fi + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xms256M -Xmx2G" +fi + +EXTRA_ARGS=${EXTRA_ARGS-'-name connectDistributed'} + +COMMAND=$1 +case $COMMAND in + -daemon) + EXTRA_ARGS="-daemon "$EXTRA_ARGS + shift + ;; + *) + ;; +esac + +exec $(dirname $0)/kafka-run-class.sh $EXTRA_ARGS org.apache.kafka.connect.cli.ConnectDistributed "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/connect-mirror-maker.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/connect-mirror-maker.sh new file mode 100755 index 0000000000000000000000000000000000000000..8e2b2e162daac7e026c499da03f10ab1b08937a9 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/connect-mirror-maker.sh @@ -0,0 +1,45 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ $# -lt 1 ]; +then + echo "USAGE: $0 [-daemon] mm2.properties" + exit 1 +fi + +base_dir=$(dirname $0) + +if [ "x$KAFKA_LOG4J_OPTS" = "x" ]; then + export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/connect-log4j.properties" +fi + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xms256M -Xmx2G" +fi + +EXTRA_ARGS=${EXTRA_ARGS-'-name mirrorMaker'} + +COMMAND=$1 +case $COMMAND in + -daemon) + EXTRA_ARGS="-daemon "$EXTRA_ARGS + shift + ;; + *) + ;; +esac + +exec $(dirname $0)/kafka-run-class.sh $EXTRA_ARGS org.apache.kafka.connect.mirror.MirrorMaker "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/connect-standalone.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/connect-standalone.sh new file mode 100755 index 0000000000000000000000000000000000000000..441069fed31393c8469778538e504171a73eb304 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/connect-standalone.sh @@ -0,0 +1,45 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ $# -lt 1 ]; +then + echo "USAGE: $0 [-daemon] connect-standalone.properties" + exit 1 +fi + +base_dir=$(dirname $0) + +if [ "x$KAFKA_LOG4J_OPTS" = "x" ]; then + export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/connect-log4j.properties" +fi + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xms256M -Xmx2G" +fi + +EXTRA_ARGS=${EXTRA_ARGS-'-name connectStandalone'} + +COMMAND=$1 +case $COMMAND in + -daemon) + EXTRA_ARGS="-daemon "$EXTRA_ARGS + shift + ;; + *) + ;; +esac + +exec $(dirname $0)/kafka-run-class.sh $EXTRA_ARGS org.apache.kafka.connect.cli.ConnectStandalone "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-acls.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-acls.sh new file mode 100755 index 0000000000000000000000000000000000000000..8fa65542e10bfa32e3a9fea7e0ec0d3161d92e92 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-acls.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.AclCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-broker-api-versions.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-broker-api-versions.sh new file mode 100755 index 0000000000000000000000000000000000000000..4f560a0a60cd599b6a66bc573167dee26d36c67d --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-broker-api-versions.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.BrokerApiVersionsCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-cluster.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-cluster.sh new file mode 100755 index 0000000000000000000000000000000000000000..574007e9cd4b8ad540a3ab3918d52df195fd90a1 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-cluster.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.tools.ClusterTool "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-configs.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-configs.sh new file mode 100755 index 0000000000000000000000000000000000000000..2f9eb8c239f596ec8d171f40ddec38a13177a2e8 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-configs.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.ConfigCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-console-consumer.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-console-consumer.sh new file mode 100755 index 0000000000000000000000000000000000000000..dbaac2b83b1890eeeeb1a19c5831254fe408d788 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-console-consumer.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xmx512M" +fi + +exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleConsumer "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-console-producer.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-console-producer.sh new file mode 100755 index 0000000000000000000000000000000000000000..e5187b8b5335fa2a688f9c18665266731ced0506 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-console-producer.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xmx512M" +fi +exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleProducer "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-consumer-groups.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-consumer-groups.sh new file mode 100755 index 0000000000000000000000000000000000000000..feb063de75693b73d0f874a03d14ce87294df7c5 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-consumer-groups.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.ConsumerGroupCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-consumer-perf-test.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-consumer-perf-test.sh new file mode 100755 index 0000000000000000000000000000000000000000..77cda721d6c5238d354f3f133bab93c5352edd6a --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-consumer-perf-test.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xmx512M" +fi +exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsumerPerformance "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-delegation-tokens.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-delegation-tokens.sh new file mode 100755 index 0000000000000000000000000000000000000000..49cb276ab318289f690c6855a326804d2cf720ab --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-delegation-tokens.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.DelegationTokenCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-delete-records.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-delete-records.sh new file mode 100755 index 0000000000000000000000000000000000000000..8726f919992329db81c4e1b8da6765e34184f1e0 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-delete-records.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.DeleteRecordsCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-dump-log.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-dump-log.sh new file mode 100755 index 0000000000000000000000000000000000000000..a97ea7d3d9f8cf57b9ea41012ab8c9b92d389d8d --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-dump-log.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.tools.DumpLogSegments "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-features.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-features.sh new file mode 100755 index 0000000000000000000000000000000000000000..9dd9f16fd1b05568db04418be9c0c99adf8f9324 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-features.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.FeatureCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-leader-election.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-leader-election.sh new file mode 100755 index 0000000000000000000000000000000000000000..88baef398de95cd1cf737a6d8589d9fdd5a5ac3f --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-leader-election.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.LeaderElectionCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-log-dirs.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-log-dirs.sh new file mode 100755 index 0000000000000000000000000000000000000000..dc16edcc7c5ebefff42ea3089472560427f25727 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-log-dirs.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.LogDirsCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-metadata-shell.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-metadata-shell.sh new file mode 100755 index 0000000000000000000000000000000000000000..289f0c1b51f27cd6e93126bc51c81ab4357440db --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-metadata-shell.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh org.apache.kafka.shell.MetadataShell "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-mirror-maker.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-mirror-maker.sh new file mode 100755 index 0000000000000000000000000000000000000000..981f2711af960be2dc2dc3ce2374c6db3303aa1a --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-mirror-maker.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.tools.MirrorMaker "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-preferred-replica-election.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-preferred-replica-election.sh new file mode 100755 index 0000000000000000000000000000000000000000..638a92ad6e053092f95d0bedc8c6876b31b6bb97 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-preferred-replica-election.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.PreferredReplicaLeaderElectionCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-producer-perf-test.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-producer-perf-test.sh new file mode 100755 index 0000000000000000000000000000000000000000..73a62888a13d547fe21fc89d41035c775f26026f --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-producer-perf-test.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xmx512M" +fi +exec $(dirname $0)/kafka-run-class.sh org.apache.kafka.tools.ProducerPerformance "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-reassign-partitions.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-reassign-partitions.sh new file mode 100755 index 0000000000000000000000000000000000000000..4c7f1bc35e0a98b2ba978ce07ab9465c841d8b1b --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-reassign-partitions.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.ReassignPartitionsCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-replica-verification.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-replica-verification.sh new file mode 100755 index 0000000000000000000000000000000000000000..4960836c0d034f338bec16fdb5e7dccc4fa18821 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-replica-verification.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.tools.ReplicaVerificationTool "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-run-class.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-run-class.sh new file mode 100755 index 0000000000000000000000000000000000000000..3889be7e3e5f8d074cf94938ab9113c2fdb00df1 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-run-class.sh @@ -0,0 +1,331 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ $# -lt 1 ]; +then + echo "USAGE: $0 [-daemon] [-name servicename] [-loggc] classname [opts]" + exit 1 +fi + +# CYGWIN == 1 if Cygwin is detected, else 0. +if [[ $(uname -a) =~ "CYGWIN" ]]; then + CYGWIN=1 +else + CYGWIN=0 +fi + +if [ -z "$INCLUDE_TEST_JARS" ]; then + INCLUDE_TEST_JARS=false +fi + +# Exclude jars not necessary for running commands. +regex="(-(test|test-sources|src|scaladoc|javadoc)\.jar|jar.asc)$" +should_include_file() { + if [ "$INCLUDE_TEST_JARS" = true ]; then + return 0 + fi + file=$1 + if [ -z "$(echo "$file" | egrep "$regex")" ] ; then + return 0 + else + return 1 + fi +} + +base_dir=$(dirname $0)/.. + +if [ -z "$SCALA_VERSION" ]; then + SCALA_VERSION=2.13.5 + if [[ -f "$base_dir/gradle.properties" ]]; then + SCALA_VERSION=`grep "^scalaVersion=" "$base_dir/gradle.properties" | cut -d= -f 2` + fi +fi + +if [ -z "$SCALA_BINARY_VERSION" ]; then + SCALA_BINARY_VERSION=$(echo $SCALA_VERSION | cut -f 1-2 -d '.') +fi + +# run ./gradlew copyDependantLibs to get all dependant jars in a local dir +shopt -s nullglob +if [ -z "$UPGRADE_KAFKA_STREAMS_TEST_VERSION" ]; then + for dir in "$base_dir"/core/build/dependant-libs-${SCALA_VERSION}*; + do + CLASSPATH="$CLASSPATH:$dir/*" + done +fi + +for file in "$base_dir"/examples/build/libs/kafka-examples*.jar; +do + if should_include_file "$file"; then + CLASSPATH="$CLASSPATH":"$file" + fi +done + +if [ -z "$UPGRADE_KAFKA_STREAMS_TEST_VERSION" ]; then + clients_lib_dir=$(dirname $0)/../clients/build/libs + streams_lib_dir=$(dirname $0)/../streams/build/libs + streams_dependant_clients_lib_dir=$(dirname $0)/../streams/build/dependant-libs-${SCALA_VERSION} +else + clients_lib_dir=/opt/kafka-$UPGRADE_KAFKA_STREAMS_TEST_VERSION/libs + streams_lib_dir=$clients_lib_dir + streams_dependant_clients_lib_dir=$streams_lib_dir +fi + + +for file in "$clients_lib_dir"/kafka-clients*.jar; +do + if should_include_file "$file"; then + CLASSPATH="$CLASSPATH":"$file" + fi +done + +for file in "$streams_lib_dir"/kafka-streams*.jar; +do + if should_include_file "$file"; then + CLASSPATH="$CLASSPATH":"$file" + fi +done + +if [ -z "$UPGRADE_KAFKA_STREAMS_TEST_VERSION" ]; then + for file in "$base_dir"/streams/examples/build/libs/kafka-streams-examples*.jar; + do + if should_include_file "$file"; then + CLASSPATH="$CLASSPATH":"$file" + fi + done +else + VERSION_NO_DOTS=`echo $UPGRADE_KAFKA_STREAMS_TEST_VERSION | sed 's/\.//g'` + SHORT_VERSION_NO_DOTS=${VERSION_NO_DOTS:0:((${#VERSION_NO_DOTS} - 1))} # remove last char, ie, bug-fix number + for file in "$base_dir"/streams/upgrade-system-tests-$SHORT_VERSION_NO_DOTS/build/libs/kafka-streams-upgrade-system-tests*.jar; + do + if should_include_file "$file"; then + CLASSPATH="$file":"$CLASSPATH" + fi + done + if [ "$SHORT_VERSION_NO_DOTS" = "0100" ]; then + CLASSPATH="/opt/kafka-$UPGRADE_KAFKA_STREAMS_TEST_VERSION/libs/zkclient-0.8.jar":"$CLASSPATH" + CLASSPATH="/opt/kafka-$UPGRADE_KAFKA_STREAMS_TEST_VERSION/libs/zookeeper-3.4.6.jar":"$CLASSPATH" + fi + if [ "$SHORT_VERSION_NO_DOTS" = "0101" ]; then + CLASSPATH="/opt/kafka-$UPGRADE_KAFKA_STREAMS_TEST_VERSION/libs/zkclient-0.9.jar":"$CLASSPATH" + CLASSPATH="/opt/kafka-$UPGRADE_KAFKA_STREAMS_TEST_VERSION/libs/zookeeper-3.4.8.jar":"$CLASSPATH" + fi +fi + +for file in "$streams_dependant_clients_lib_dir"/rocksdb*.jar; +do + CLASSPATH="$CLASSPATH":"$file" +done + +for file in "$streams_dependant_clients_lib_dir"/*hamcrest*.jar; +do + CLASSPATH="$CLASSPATH":"$file" +done + +for file in "$base_dir"/shell/build/libs/kafka-shell*.jar; +do + if should_include_file "$file"; then + CLASSPATH="$CLASSPATH":"$file" + fi +done + +for dir in "$base_dir"/shell/build/dependant-libs-${SCALA_VERSION}*; +do + CLASSPATH="$CLASSPATH:$dir/*" +done + +for file in "$base_dir"/tools/build/libs/kafka-tools*.jar; +do + if should_include_file "$file"; then + CLASSPATH="$CLASSPATH":"$file" + fi +done + +for dir in "$base_dir"/tools/build/dependant-libs-${SCALA_VERSION}*; +do + CLASSPATH="$CLASSPATH:$dir/*" +done + +for cc_pkg in "api" "transforms" "runtime" "file" "mirror" "mirror-client" "json" "tools" "basic-auth-extension" +do + for file in "$base_dir"/connect/${cc_pkg}/build/libs/connect-${cc_pkg}*.jar; + do + if should_include_file "$file"; then + CLASSPATH="$CLASSPATH":"$file" + fi + done + if [ -d "$base_dir/connect/${cc_pkg}/build/dependant-libs" ] ; then + CLASSPATH="$CLASSPATH:$base_dir/connect/${cc_pkg}/build/dependant-libs/*" + fi +done + +# classpath addition for release +for file in "$base_dir"/libs/*; +do + if should_include_file "$file"; then + CLASSPATH="$CLASSPATH":"$file" + fi +done + +for file in "$base_dir"/core/build/libs/kafka_${SCALA_BINARY_VERSION}*.jar; +do + if should_include_file "$file"; then + CLASSPATH="$CLASSPATH":"$file" + fi +done +shopt -u nullglob + +if [ -z "$CLASSPATH" ] ; then + echo "Classpath is empty. Please build the project first e.g. by running './gradlew jar -PscalaVersion=$SCALA_VERSION'" + exit 1 +fi + +# JMX settings +if [ -z "$KAFKA_JMX_OPTS" ]; then + KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false " +fi + +# JMX port to use +if [ $JMX_PORT ]; then + KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT " +fi + +# Log directory to use +if [ "x$LOG_DIR" = "x" ]; then + LOG_DIR="$base_dir/logs" +fi + +# Log4j settings +if [ -z "$KAFKA_LOG4J_OPTS" ]; then + # Log to console. This is a tool. + LOG4J_DIR="$base_dir/config/tools-log4j.properties" + # If Cygwin is detected, LOG4J_DIR is converted to Windows format. + (( CYGWIN )) && LOG4J_DIR=$(cygpath --path --mixed "${LOG4J_DIR}") + KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:${LOG4J_DIR}" +else + # create logs directory + if [ ! -d "$LOG_DIR" ]; then + mkdir -p "$LOG_DIR" + fi +fi + +# If Cygwin is detected, LOG_DIR is converted to Windows format. +(( CYGWIN )) && LOG_DIR=$(cygpath --path --mixed "${LOG_DIR}") +KAFKA_LOG4J_OPTS="-Dkafka.logs.dir=$LOG_DIR $KAFKA_LOG4J_OPTS" + +# Generic jvm settings you want to add +if [ -z "$KAFKA_OPTS" ]; then + KAFKA_OPTS="" +fi + +# Set Debug options if enabled +if [ "x$KAFKA_DEBUG" != "x" ]; then + + # Use default ports + DEFAULT_JAVA_DEBUG_PORT="5005" + + if [ -z "$JAVA_DEBUG_PORT" ]; then + JAVA_DEBUG_PORT="$DEFAULT_JAVA_DEBUG_PORT" + fi + + # Use the defaults if JAVA_DEBUG_OPTS was not set + DEFAULT_JAVA_DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=${DEBUG_SUSPEND_FLAG:-n},address=$JAVA_DEBUG_PORT" + if [ -z "$JAVA_DEBUG_OPTS" ]; then + JAVA_DEBUG_OPTS="$DEFAULT_JAVA_DEBUG_OPTS" + fi + + echo "Enabling Java debug options: $JAVA_DEBUG_OPTS" + KAFKA_OPTS="$JAVA_DEBUG_OPTS $KAFKA_OPTS" +fi + +# Which java to use +if [ -z "$JAVA_HOME" ]; then + JAVA="java" +else + JAVA="$JAVA_HOME/bin/java" +fi + +# Memory options +if [ -z "$KAFKA_HEAP_OPTS" ]; then + KAFKA_HEAP_OPTS="-Xmx256M" +fi + +# JVM performance options +# MaxInlineLevel=15 is the default since JDK 14 and can be removed once older JDKs are no longer supported +if [ -z "$KAFKA_JVM_PERFORMANCE_OPTS" ]; then + KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:MaxInlineLevel=15 -Djava.awt.headless=true" +fi + +while [ $# -gt 0 ]; do + COMMAND=$1 + case $COMMAND in + -name) + DAEMON_NAME=$2 + CONSOLE_OUTPUT_FILE=$LOG_DIR/$DAEMON_NAME.out + shift 2 + ;; + -loggc) + if [ -z "$KAFKA_GC_LOG_OPTS" ]; then + GC_LOG_ENABLED="true" + fi + shift + ;; + -daemon) + DAEMON_MODE="true" + shift + ;; + *) + break + ;; + esac +done + +# GC options +GC_FILE_SUFFIX='-gc.log' +GC_LOG_FILE_NAME='' +if [ "x$GC_LOG_ENABLED" = "xtrue" ]; then + GC_LOG_FILE_NAME=$DAEMON_NAME$GC_FILE_SUFFIX + + # The first segment of the version number, which is '1' for releases before Java 9 + # it then becomes '9', '10', ... + # Some examples of the first line of `java --version`: + # 8 -> java version "1.8.0_152" + # 9.0.4 -> java version "9.0.4" + # 10 -> java version "10" 2018-03-20 + # 10.0.1 -> java version "10.0.1" 2018-04-17 + # We need to match to the end of the line to prevent sed from printing the characters that do not match + JAVA_MAJOR_VERSION=$("$JAVA" -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p') + if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]] ; then + KAFKA_GC_LOG_OPTS="-Xlog:gc*:file=$LOG_DIR/$GC_LOG_FILE_NAME:time,tags:filecount=10,filesize=100M" + else + KAFKA_GC_LOG_OPTS="-Xloggc:$LOG_DIR/$GC_LOG_FILE_NAME -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M" + fi +fi + +# Remove a possible colon prefix from the classpath (happens at lines like `CLASSPATH="$CLASSPATH:$file"` when CLASSPATH is blank) +# Syntax used on the right side is native Bash string manipulation; for more details see +# http://tldp.org/LDP/abs/html/string-manipulation.html, specifically the section titled "Substring Removal" +CLASSPATH=${CLASSPATH#:} + +# If Cygwin is detected, classpath is converted to Windows format. +(( CYGWIN )) && CLASSPATH=$(cygpath --path --mixed "${CLASSPATH}") + +# Launch mode +if [ "x$DAEMON_MODE" = "xtrue" ]; then + nohup "$JAVA" $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp "$CLASSPATH" $KAFKA_OPTS "$@" > "$CONSOLE_OUTPUT_FILE" 2>&1 < /dev/null & +else + exec "$JAVA" $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp "$CLASSPATH" $KAFKA_OPTS "$@" +fi diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-server-start.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-server-start.sh new file mode 100755 index 0000000000000000000000000000000000000000..5a53126172de9d024891942d9f4748b7fcd4592b --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-server-start.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ $# -lt 1 ]; +then + echo "USAGE: $0 [-daemon] server.properties [--override property=value]*" + exit 1 +fi +base_dir=$(dirname $0) + +if [ "x$KAFKA_LOG4J_OPTS" = "x" ]; then + export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/log4j.properties" +fi + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" +fi + +EXTRA_ARGS=${EXTRA_ARGS-'-name kafkaServer -loggc'} + +COMMAND=$1 +case $COMMAND in + -daemon) + EXTRA_ARGS="-daemon "$EXTRA_ARGS + shift + ;; + *) + ;; +esac + +exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-server-stop.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-server-stop.sh new file mode 100755 index 0000000000000000000000000000000000000000..437189f4a5b4ca92579f5803762e392eb31bb6f7 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-server-stop.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# 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 +# +# 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. +SIGNAL=${SIGNAL:-TERM} + +OSNAME=$(uname -s) +if [[ "$OSNAME" == "OS/390" ]]; then + if [ -z $JOBNAME ]; then + JOBNAME="KAFKSTRT" + fi + PIDS=$(ps -A -o pid,jobname,comm | grep -i $JOBNAME | grep java | grep -v grep | awk '{print $1}') +elif [[ "$OSNAME" == "OS400" ]]; then + PIDS=$(ps -Af | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk '{print $2}') +else + PIDS=$(ps ax | grep ' kafka\.Kafka ' | grep java | grep -v grep | awk '{print $1}') +fi + +if [ -z "$PIDS" ]; then + echo "No kafka server to stop" + exit 1 +else + kill -s $SIGNAL $PIDS +fi diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-storage.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-storage.sh new file mode 100755 index 0000000000000000000000000000000000000000..eef93423877f02afe15e9a517f76d700baba522d --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-storage.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.tools.StorageTool "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-streams-application-reset.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-streams-application-reset.sh new file mode 100755 index 0000000000000000000000000000000000000000..336373254004ea9b2027082b1efcedbf9ab8ddd4 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-streams-application-reset.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xmx512M" +fi + +exec $(dirname $0)/kafka-run-class.sh kafka.tools.StreamsResetter "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-topics.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-topics.sh new file mode 100755 index 0000000000000000000000000000000000000000..ad6a2d4d2a0160c0fba70820a70a6f6d208b5ca7 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-topics.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.TopicCommand "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-verifiable-consumer.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-verifiable-consumer.sh new file mode 100755 index 0000000000000000000000000000000000000000..852847df03ba5cfe420d9337d5c76f810383092f --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-verifiable-consumer.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xmx512M" +fi +exec $(dirname $0)/kafka-run-class.sh org.apache.kafka.tools.VerifiableConsumer "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-verifiable-producer.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-verifiable-producer.sh new file mode 100755 index 0000000000000000000000000000000000000000..b59bae7d2beae882715ce5b8cf83fe8ef3e3acf0 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/kafka-verifiable-producer.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xmx512M" +fi +exec $(dirname $0)/kafka-run-class.sh org.apache.kafka.tools.VerifiableProducer "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/trogdor.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/trogdor.sh new file mode 100755 index 0000000000000000000000000000000000000000..3324c4ea8ec3e7ae8d687d67250d8bfd71ec98cf --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/trogdor.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# 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 +# +# 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. + +usage() { + cat <nul 2>&1 + IF NOT ERRORLEVEL 1 ( + rem 32-bit OS + set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M + ) ELSE ( + rem 64-bit OS + set KAFKA_HEAP_OPTS=-Xmx1G -Xms1G + ) +) +"%~dp0kafka-run-class.bat" kafka.Kafka %* +EndLocal diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/kafka-server-stop.bat b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/kafka-server-stop.bat new file mode 100644 index 0000000000000000000000000000000000000000..676577cf958645fde5ec95cb521f7e02f1616099 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/kafka-server-stop.bat @@ -0,0 +1,18 @@ +@echo off +rem Licensed to the Apache Software Foundation (ASF) under one or more +rem contributor license agreements. See the NOTICE file distributed with +rem this work for additional information regarding copyright ownership. +rem The ASF licenses this file to You under the Apache License, Version 2.0 +rem (the "License"); you may not use this file except in compliance with +rem the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. + +wmic process where (commandline like "%%kafka.Kafka%%" and not name="wmic.exe") delete +rem ps ax | grep -i 'kafka.Kafka' | grep -v grep | awk '{print $1}' | xargs kill -SIGTERM diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/kafka-streams-application-reset.bat b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/kafka-streams-application-reset.bat new file mode 100644 index 0000000000000000000000000000000000000000..1cfb6f518c824e0e77db2272ef65ca0d49662e21 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/kafka-streams-application-reset.bat @@ -0,0 +1,23 @@ +@echo off +rem Licensed to the Apache Software Foundation (ASF) under one or more +rem contributor license agreements. See the NOTICE file distributed with +rem this work for additional information regarding copyright ownership. +rem The ASF licenses this file to You under the Apache License, Version 2.0 +rem (the "License"); you may not use this file except in compliance with +rem the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. + +SetLocal +IF ["%KAFKA_HEAP_OPTS%"] EQU [""] ( + set KAFKA_HEAP_OPTS=-Xmx512M +) + +"%~dp0kafka-run-class.bat" kafka.tools.StreamsResetter %* +EndLocal diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/kafka-topics.bat b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/kafka-topics.bat new file mode 100644 index 0000000000000000000000000000000000000000..677b09d077d99691b8b1f0197f2e4a3676e4b27b --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/kafka-topics.bat @@ -0,0 +1,17 @@ +@echo off +rem Licensed to the Apache Software Foundation (ASF) under one or more +rem contributor license agreements. See the NOTICE file distributed with +rem this work for additional information regarding copyright ownership. +rem The ASF licenses this file to You under the Apache License, Version 2.0 +rem (the "License"); you may not use this file except in compliance with +rem the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. + +"%~dp0kafka-run-class.bat" kafka.admin.TopicCommand %* diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/zookeeper-server-start.bat b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/zookeeper-server-start.bat new file mode 100644 index 0000000000000000000000000000000000000000..f201a585135d2db55a15d8e45004feb6a536fe7f --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/zookeeper-server-start.bat @@ -0,0 +1,30 @@ +@echo off +rem Licensed to the Apache Software Foundation (ASF) under one or more +rem contributor license agreements. See the NOTICE file distributed with +rem this work for additional information regarding copyright ownership. +rem The ASF licenses this file to You under the Apache License, Version 2.0 +rem (the "License"); you may not use this file except in compliance with +rem the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. + +IF [%1] EQU [] ( + echo USAGE: %0 zookeeper.properties + EXIT /B 1 +) + +SetLocal +IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] ( + set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../config/log4j.properties +) +IF ["%KAFKA_HEAP_OPTS%"] EQU [""] ( + set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M +) +"%~dp0kafka-run-class.bat" org.apache.zookeeper.server.quorum.QuorumPeerMain %* +EndLocal diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/zookeeper-server-stop.bat b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/zookeeper-server-stop.bat new file mode 100644 index 0000000000000000000000000000000000000000..8b57dd8d63069ef579e7f41a60bba71f1018e29d --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/zookeeper-server-stop.bat @@ -0,0 +1,17 @@ +@echo off +rem Licensed to the Apache Software Foundation (ASF) under one or more +rem contributor license agreements. See the NOTICE file distributed with +rem this work for additional information regarding copyright ownership. +rem The ASF licenses this file to You under the Apache License, Version 2.0 +rem (the "License"); you may not use this file except in compliance with +rem the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. + +wmic process where (commandline like "%%zookeeper%%" and not name="wmic.exe") delete diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/zookeeper-shell.bat b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/zookeeper-shell.bat new file mode 100644 index 0000000000000000000000000000000000000000..f1c86c430c1709744a0f31acbc70706dc27cfbec --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/windows/zookeeper-shell.bat @@ -0,0 +1,22 @@ +@echo off +rem Licensed to the Apache Software Foundation (ASF) under one or more +rem contributor license agreements. See the NOTICE file distributed with +rem this work for additional information regarding copyright ownership. +rem The ASF licenses this file to You under the Apache License, Version 2.0 +rem (the "License"); you may not use this file except in compliance with +rem the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. + +IF [%1] EQU [] ( + echo USAGE: %0 zookeeper_host:port[/path] [-zk-tls-config-file file] [args...] + EXIT /B 1 +) + +"%~dp0kafka-run-class.bat" org.apache.zookeeper.ZooKeeperMainWithTlsSupportForKafka -server %* diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-security-migration.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-security-migration.sh new file mode 100755 index 0000000000000000000000000000000000000000..722bde7cc4c621cf8f7f7279397f7776fb66eff9 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-security-migration.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# 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 +# +# 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. + +exec $(dirname $0)/kafka-run-class.sh kafka.admin.ZkSecurityMigrator "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-server-start.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-server-start.sh new file mode 100755 index 0000000000000000000000000000000000000000..bd9c1142817c082b19b1c71cc39fb0149ed7dba1 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-server-start.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ $# -lt 1 ]; +then + echo "USAGE: $0 [-daemon] zookeeper.properties" + exit 1 +fi +base_dir=$(dirname $0) + +if [ "x$KAFKA_LOG4J_OPTS" = "x" ]; then + export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/log4j.properties" +fi + +if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then + export KAFKA_HEAP_OPTS="-Xmx512M -Xms512M" +fi + +EXTRA_ARGS=${EXTRA_ARGS-'-name zookeeper -loggc'} + +COMMAND=$1 +case $COMMAND in + -daemon) + EXTRA_ARGS="-daemon "$EXTRA_ARGS + shift + ;; + *) + ;; +esac + +exec $base_dir/kafka-run-class.sh $EXTRA_ARGS org.apache.zookeeper.server.quorum.QuorumPeerMain "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-server-stop.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-server-stop.sh new file mode 100755 index 0000000000000000000000000000000000000000..11665f32707f872698de907ea3580db83d427d14 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-server-stop.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# 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 +# +# 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. +SIGNAL=${SIGNAL:-TERM} + +OSNAME=$(uname -s) +if [[ "$OSNAME" == "OS/390" ]]; then + if [ -z $JOBNAME ]; then + JOBNAME="ZKEESTRT" + fi + PIDS=$(ps -A -o pid,jobname,comm | grep -i $JOBNAME | grep java | grep -v grep | awk '{print $1}') +elif [[ "$OSNAME" == "OS400" ]]; then + PIDS=$(ps -Af | grep java | grep -i QuorumPeerMain | grep -v grep | awk '{print $2}') +else + PIDS=$(ps ax | grep java | grep -i QuorumPeerMain | grep -v grep | awk '{print $1}') +fi + +if [ -z "$PIDS" ]; then + echo "No zookeeper server to stop" + exit 1 +else + kill -s $SIGNAL $PIDS +fi diff --git a/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-shell.sh b/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-shell.sh new file mode 100755 index 0000000000000000000000000000000000000000..2f1d0f2c61670a56f89cb62c52a1a3373fafeab1 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/bin/zookeeper-shell.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# 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 +# +# 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. + +if [ $# -lt 1 ]; +then + echo "USAGE: $0 zookeeper_host:port[/path] [-zk-tls-config-file file] [args...]" + exit 1 +fi + +exec $(dirname $0)/kafka-run-class.sh org.apache.zookeeper.ZooKeeperMainWithTlsSupportForKafka -server "$@" diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/connect-console-sink.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-console-sink.properties new file mode 100644 index 0000000000000000000000000000000000000000..e240a8f0dd8dd41b22c77fc80671e6ece995dba4 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-console-sink.properties @@ -0,0 +1,19 @@ +# 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 +# +# 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. + +name=local-console-sink +connector.class=org.apache.kafka.connect.file.FileStreamSinkConnector +tasks.max=1 +topics=connect-test \ No newline at end of file diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/connect-console-source.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-console-source.properties new file mode 100644 index 0000000000000000000000000000000000000000..d0e20690e7c6446c7a8e6de8d47b17148fb9a0cf --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-console-source.properties @@ -0,0 +1,19 @@ +# 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 +# +# 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. + +name=local-console-source +connector.class=org.apache.kafka.connect.file.FileStreamSourceConnector +tasks.max=1 +topic=connect-test \ No newline at end of file diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/connect-distributed.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-distributed.properties new file mode 100644 index 0000000000000000000000000000000000000000..72db145f3f892fb9eee72f94e2bee4b78f36a196 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-distributed.properties @@ -0,0 +1,86 @@ +## +# 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 +# +# 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. +## + +# This file contains some of the configurations for the Kafka Connect distributed worker. This file is intended +# to be used with the examples, and some settings may differ from those used in a production system, especially +# the `bootstrap.servers` and those specifying replication factors. + +# A list of host/port pairs to use for establishing the initial connection to the Kafka cluster. +bootstrap.servers=localhost:9092 + +# unique name for the cluster, used in forming the Connect cluster group. Note that this must not conflict with consumer group IDs +group.id=connect-cluster + +# The converters specify the format of data in Kafka and how to translate it into Connect data. Every Connect user will +# need to configure these based on the format they want their data in when loaded from or stored into Kafka +key.converter=org.apache.kafka.connect.json.JsonConverter +value.converter=org.apache.kafka.connect.json.JsonConverter +# Converter-specific settings can be passed in by prefixing the Converter's setting with the converter we want to apply +# it to +key.converter.schemas.enable=true +value.converter.schemas.enable=true + +# Topic to use for storing offsets. This topic should have many partitions and be replicated and compacted. +# Kafka Connect will attempt to create the topic automatically when needed, but you can always manually create +# the topic before starting Kafka Connect if a specific topic configuration is needed. +# Most users will want to use the built-in default replication factor of 3 or in some cases even specify a larger value. +# Since this means there must be at least as many brokers as the maximum replication factor used, we'd like to be able +# to run this example on a single-broker cluster and so here we instead set the replication factor to 1. +offset.storage.topic=connect-offsets +offset.storage.replication.factor=1 +#offset.storage.partitions=25 + +# Topic to use for storing connector and task configurations; note that this should be a single partition, highly replicated, +# and compacted topic. Kafka Connect will attempt to create the topic automatically when needed, but you can always manually create +# the topic before starting Kafka Connect if a specific topic configuration is needed. +# Most users will want to use the built-in default replication factor of 3 or in some cases even specify a larger value. +# Since this means there must be at least as many brokers as the maximum replication factor used, we'd like to be able +# to run this example on a single-broker cluster and so here we instead set the replication factor to 1. +config.storage.topic=connect-configs +config.storage.replication.factor=1 + +# Topic to use for storing statuses. This topic can have multiple partitions and should be replicated and compacted. +# Kafka Connect will attempt to create the topic automatically when needed, but you can always manually create +# the topic before starting Kafka Connect if a specific topic configuration is needed. +# Most users will want to use the built-in default replication factor of 3 or in some cases even specify a larger value. +# Since this means there must be at least as many brokers as the maximum replication factor used, we'd like to be able +# to run this example on a single-broker cluster and so here we instead set the replication factor to 1. +status.storage.topic=connect-status +status.storage.replication.factor=1 +#status.storage.partitions=5 + +# Flush much faster than normal, which is useful for testing/debugging +offset.flush.interval.ms=10000 + +# These are provided to inform the user about the presence of the REST host and port configs +# Hostname & Port for the REST API to listen on. If this is set, it will bind to the interface used to listen to requests. +#rest.host.name= +#rest.port=8083 + +# The Hostname & Port that will be given out to other workers to connect to i.e. URLs that are routable from other servers. +#rest.advertised.host.name= +#rest.advertised.port= + +# Set to a list of filesystem paths separated by commas (,) to enable class loading isolation for plugins +# (connectors, converters, transformations). The list should consist of top level directories that include +# any combination of: +# a) directories immediately containing jars with plugins and their dependencies +# b) uber-jars with plugins and their dependencies +# c) directories immediately containing the package directory structure of classes of plugins and their dependencies +# Examples: +# plugin.path=/usr/local/share/java,/usr/local/share/kafka/plugins,/opt/connectors, +#plugin.path= diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/connect-file-sink.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-file-sink.properties new file mode 100644 index 0000000000000000000000000000000000000000..594ccc6e953c5494a9ac8958b848a267e1631dd8 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-file-sink.properties @@ -0,0 +1,20 @@ +# 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 +# +# 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. + +name=local-file-sink +connector.class=FileStreamSink +tasks.max=1 +file=test.sink.txt +topics=connect-test \ No newline at end of file diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/connect-file-source.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-file-source.properties new file mode 100644 index 0000000000000000000000000000000000000000..599cf4cb2ac79e7c015f6e7b78fd8eb037cb2091 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-file-source.properties @@ -0,0 +1,20 @@ +# 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 +# +# 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. + +name=local-file-source +connector.class=FileStreamSource +tasks.max=1 +file=test.txt +topic=connect-test \ No newline at end of file diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/connect-log4j.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-log4j.properties new file mode 100644 index 0000000000000000000000000000000000000000..f695e37eb348b6efa6752e28fbbe0ae67f4d68c5 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-log4j.properties @@ -0,0 +1,43 @@ +# 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 +# +# 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. + +log4j.rootLogger=INFO, stdout, connectAppender + +# Send the logs to the console. +# +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout + +# Send the logs to a file, rolling the file at midnight local time. For example, the `File` option specifies the +# location of the log files (e.g. ${kafka.logs.dir}/connect.log), and at midnight local time the file is closed +# and copied in the same directory but with a filename that ends in the `DatePattern` option. +# +log4j.appender.connectAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.connectAppender.DatePattern='.'yyyy-MM-dd-HH +log4j.appender.connectAppender.File=${kafka.logs.dir}/connect.log +log4j.appender.connectAppender.layout=org.apache.log4j.PatternLayout + +# The `%X{connector.context}` parameter in the layout includes connector-specific and task-specific information +# in the log message, where appropriate. This makes it easier to identify those log messages that apply to a +# specific connector. Simply add this parameter to the log layout configuration below to include the contextual information. +# +connect.log.pattern=[%d] %p %m (%c:%L)%n +#connect.log.pattern=[%d] %p %X{connector.context}%m (%c:%L)%n + +log4j.appender.stdout.layout.ConversionPattern=${connect.log.pattern} +log4j.appender.connectAppender.layout.ConversionPattern=${connect.log.pattern} + +log4j.logger.org.apache.zookeeper=ERROR +log4j.logger.org.reflections=ERROR diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/connect-mirror-maker.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-mirror-maker.properties new file mode 100644 index 0000000000000000000000000000000000000000..40afda5e4ad68d3c76345d63b4b5bb1d4a4bf301 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-mirror-maker.properties @@ -0,0 +1,59 @@ +# Licensed to the Apache Software Foundation (ASF) under A 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 +# +# 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. +# see org.apache.kafka.clients.consumer.ConsumerConfig for more details + +# Sample MirrorMaker 2.0 top-level configuration file +# Run with ./bin/connect-mirror-maker.sh connect-mirror-maker.properties + +# specify any number of cluster aliases +clusters = A, B + +# connection information for each cluster +# This is a comma separated host:port pairs for each cluster +# for e.g. "A_host1:9092, A_host2:9092, A_host3:9092" +A.bootstrap.servers = A_host1:9092, A_host2:9092, A_host3:9092 +B.bootstrap.servers = B_host1:9092, B_host2:9092, B_host3:9092 + +# enable and configure individual replication flows +A->B.enabled = true + +# regex which defines which topics gets replicated. For eg "foo-.*" +A->B.topics = .* + +B->A.enabled = true +B->A.topics = .* + +# Setting replication factor of newly created remote topics +replication.factor=1 + +############################# Internal Topic Settings ############################# +# The replication factor for mm2 internal topics "heartbeats", "B.checkpoints.internal" and +# "mm2-offset-syncs.B.internal" +# For anything other than development testing, a value greater than 1 is recommended to ensure availability such as 3. +checkpoints.topic.replication.factor=1 +heartbeats.topic.replication.factor=1 +offset-syncs.topic.replication.factor=1 + +# The replication factor for connect internal topics "mm2-configs.B.internal", "mm2-offsets.B.internal" and +# "mm2-status.B.internal" +# For anything other than development testing, a value greater than 1 is recommended to ensure availability such as 3. +offset.storage.replication.factor=1 +status.storage.replication.factor=1 +config.storage.replication.factor=1 + +# customize as needed +# replication.policy.separator = _ +# sync.topic.acls.enabled = false +# emit.heartbeats.interval.seconds = 5 diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/connect-standalone.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-standalone.properties new file mode 100644 index 0000000000000000000000000000000000000000..a340a3bf315cc76d1bf5aae1e62932ebd5faf792 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/connect-standalone.properties @@ -0,0 +1,41 @@ +# 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 +# +# 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. + +# These are defaults. This file just demonstrates how to override some settings. +bootstrap.servers=localhost:9092 + +# The converters specify the format of data in Kafka and how to translate it into Connect data. Every Connect user will +# need to configure these based on the format they want their data in when loaded from or stored into Kafka +key.converter=org.apache.kafka.connect.json.JsonConverter +value.converter=org.apache.kafka.connect.json.JsonConverter +# Converter-specific settings can be passed in by prefixing the Converter's setting with the converter we want to apply +# it to +key.converter.schemas.enable=true +value.converter.schemas.enable=true + +offset.storage.file.filename=/tmp/connect.offsets +# Flush much faster than normal, which is useful for testing/debugging +offset.flush.interval.ms=10000 + +# Set to a list of filesystem paths separated by commas (,) to enable class loading isolation for plugins +# (connectors, converters, transformations). The list should consist of top level directories that include +# any combination of: +# a) directories immediately containing jars with plugins and their dependencies +# b) uber-jars with plugins and their dependencies +# c) directories immediately containing the package directory structure of classes of plugins and their dependencies +# Note: symlinks will be followed to discover dependencies or plugins. +# Examples: +# plugin.path=/usr/local/share/java,/usr/local/share/kafka/plugins,/opt/connectors, +#plugin.path= diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/consumer.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/consumer.properties new file mode 100644 index 0000000000000000000000000000000000000000..01bb12eb0899f43945307afeba09e6b96013defa --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/consumer.properties @@ -0,0 +1,26 @@ +# 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 +# +# 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. +# see org.apache.kafka.clients.consumer.ConsumerConfig for more details + +# list of brokers used for bootstrapping knowledge about the rest of the cluster +# format: host1:port1,host2:port2 ... +bootstrap.servers=localhost:9092 + +# consumer group id +group.id=test-consumer-group + +# What to do when there is no initial offset in Kafka or if the current +# offset does not exist any more on the server: latest, earliest, none +#auto.offset.reset= diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/README.md b/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/README.md new file mode 100644 index 0000000000000000000000000000000000000000..466dbe08e193c55e2c64d77fb6284e51fddb0fec --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/README.md @@ -0,0 +1,178 @@ +KRaft (aka KIP-500) mode Early Access Release +========================================================= + +# Introduction +It is now possible to run Apache Kafka without Apache ZooKeeper! We call this the [Kafka Raft metadata mode](https://cwiki.apache.org/confluence/display/KAFKA/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum), typically shortened to `KRaft mode`. +`KRaft` is intended to be pronounced like `craft` (as in `craftsmanship`). It is currently *EARLY ACCESS AND SHOULD NOT BE USED IN PRODUCTION*, but it +is available for testing in the Kafka 2.8 release. + +When the Kafka cluster is in KRaft mode, it does not store its metadata in ZooKeeper. In fact, you do not have to run ZooKeeper at all, because it stores its metadata in a KRaft quorum of controller nodes. + +KRaft mode has many benefits -- some obvious, and some not so obvious. Clearly, it is nice to manage and configure one service rather than two services. In addition, you can now run a single process Kafka cluster. +Most important of all, KRaft mode is more scalable. We expect to be able to [support many more topics and partitions](https://www.confluent.io/kafka-summit-san-francisco-2019/kafka-needs-no-keeper/) in this mode. + +# Quickstart + +## Warning +KRaft mode in Kafka 2.8 is provided for testing only, *NOT* for production. We do not yet support upgrading existing ZooKeeper-based Kafka clusters into this mode. In fact, when Kafka 3.0 is released, +it will not be possible to upgrade your KRaft clusters from 2.8 to 3.0. There may be bugs, including serious ones. You should *assume that your data could be lost at any time* if you try the early access release of KRaft mode. + +## Generate a cluster ID +The first step is to generate an ID for your new cluster, using the kafka-storage tool: + +~~~~ +$ ./bin/kafka-storage.sh random-uuid +xtzWWN4bTjitpL3kfd9s5g +~~~~ + +## Format Storage Directories +The next step is to format your storage directories. If you are running in single-node mode, you can do this with one command: + +~~~~ +$ ./bin/kafka-storage.sh format -t -c ./config/kraft/server.properties +Formatting /tmp/kraft-combined-logs +~~~~ + +If you are using multiple nodes, then you should run the format command on each node. Be sure to use the same cluster ID for each one. + +## Start the Kafka Server +Finally, you are ready to start the Kafka server on each node. + +~~~~ +$ ./bin/kafka-server-start.sh ./config/kraft/server.properties +[2021-02-26 15:37:11,071] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$) +[2021-02-26 15:37:11,294] INFO Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation (org.apache.zookeeper.common.X509Util) +[2021-02-26 15:37:11,466] INFO [Log partition=@metadata-0, dir=/tmp/kraft-combined-logs] Loading producer state till offset 0 with message format version 2 (kafka.log.Log) +[2021-02-26 15:37:11,509] INFO [raft-expiration-reaper]: Starting (kafka.raft.TimingWheelExpirationService$ExpiredOperationReaper) +[2021-02-26 15:37:11,640] INFO [RaftManager nodeId=1] Completed transition to Unattached(epoch=0, voters=[1], electionTimeoutMs=9037) (org.apache.kafka.raft.QuorumState) +... +~~~~ + +Just like with a ZooKeeper based broker, you can connect to port 9092 (or whatever port you configured) to perform administrative operations or produce or consume data. + +~~~~ +$ ./bin/kafka-topics.sh --create --topic foo --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092 +Created topic foo. +~~~~ + +# Deployment + +## Controller Servers +In KRaft mode, only a small group of specially selected servers can act as controllers (unlike the ZooKeeper-based mode, where any server can become the +Controller). The specially selected controller servers will participate in the metadata quorum. Each controller server is either active, or a hot +standby for the current active controller server. + +You will typically select 3 or 5 servers for this role, depending on factors like cost and the number of concurrent failures your system should withstand +without availability impact. Just like with ZooKeeper, you must keep a majority of the controllers alive in order to maintain availability. So if you have 3 +controllers, you can tolerate 1 failure; with 5 controllers, you can tolerate 2 failures. + +## Process Roles +Each Kafka server now has a new configuration key called `process.roles` which can have the following values: + +* If `process.roles` is set to `broker`, the server acts as a broker in KRaft mode. +* If `process.roles` is set to `controller`, the server acts as a controller in KRaft mode. +* If `process.roles` is set to `broker,controller`, the server acts as both a broker and a controller in KRaft mode. +* If `process.roles` is not set at all then we are assumed to be in ZooKeeper mode. As mentioned earlier, you can't currently transition back and forth between ZooKeeper mode and KRaft mode without reformatting. + +Nodes that act as both brokers and controllers are referred to as "combined" nodes. Combined nodes are simpler to operate for simple use cases and allow you to avoid +some fixed memory overheads associated with JVMs. The key disadvantage is that the controller will be less isolated from the rest of the system. For example, if activity on the broker causes an out of +memory condition, the controller part of the server is not isolated from that OOM condition. + +## Quorum Voters +All nodes in the system must set the `controller.quorum.voters` configuration. This identifies the quorum controller servers that should be used. All the controllers must be enumerated. +This is similar to how, when using ZooKeeper, the `zookeeper.connect` configuration must contain all the ZooKeeper servers. Unlike with the ZooKeeper config, however, `controller.quorum.voters` +also has IDs for each node. The format is id1@host1:port1,id2@host2:port2, etc. + +So if you have 10 brokers and 3 controllers named controller1, controller2, controller3, you might have the following configuration on controller1: +``` +process.roles=controller +node.id=1 +listeners=CONTROLLER://controller1.example.com:9093 +controller.quorum.voters=1@controller1.example.com:9093,2@controller2.example.com:9093,3@controller3.example.com:9093 +``` + +Each broker and each controller must set `controller.quorum.voters`. Note that the node ID supplied in the `controller.quorum.voters` configuration must match that supplied to the server. +So on controller1, node.id must be set to 1, and so forth. Note that there is no requirement for controller IDs to start at 0 or 1. However, the easiest and least confusing way to allocate +node IDs is probably just to give each server a numeric ID, starting from 0. + +Note that clients never need to configure `controller.quorum.voters`; only servers do. + +## Kafka Storage Tool +As described above in the QuickStart section, you must use the `kafka-storage.sh` tool to generate a cluster ID for your new cluster, and then run the format command on each node before starting the node. + +This is different from how Kafka has operated in the past. Previously, Kafka would format blank storage directories automatically, and also generate a new cluster UUID automatically. One reason for the change +is that auto-formatting can sometimes obscure an error condition. For example, under UNIX, if a data directory can't be mounted, it may show up as blank. In this case, auto-formatting would be the wrong thing to do. + +This is particularly important for the metadata log maintained by the controller servers. If two controllers out of three controllers were able to start with blank logs, a leader might be able to be elected with +nothing in the log, which would cause all metadata to be lost. + +# Missing Features +We do not yet support generating or loading KIP-630 metadata snapshots. This means that after a while, the time required to restart a broker will become very large. This is a known issue and we are working on +completing snapshots for the next release. + +We also don't support any kind of upgrade right now, either to or from KRaft mode. This is another important gap that we are working on. + +Finally, the following Kafka features have not yet been fully implemented: + +* Support for certain security features: configuring an Authorizer, setting up SCRAM, delegation tokens, and so forth +* Support for transactions and exactly-once semantics +* Support for adding partitions to existing topics +* Support for partition reassignment +* Support for some configurations, like enabling unclean leader election by default or dynamically changing broker endpoints +* Support for KIP-112 "JBOD" modes +* Support for KIP-631 controller metrics + +We've tried to make it clear when a feature is not supported in the early access release, but you may encounter some rough edges. We will cover these feature gaps incrementally in the `trunk` branch. + +# Debugging +If you encounter an issue, you might want to take a look at the metadata log. + +## kafka-dump-log +One way to view the metadata log is with kafka-dump-log.sh tool, like so: + +~~~~ +$ ./bin/kafka-dump-log.sh --cluster-metadata-decoder --skip-record-metadata --files /tmp/kraft-combined-logs/\@metadata-0/*.log +Dumping /tmp/kraft-combined-logs/@metadata-0/00000000000000000000.log +Starting offset: 0 +baseOffset: 0 lastOffset: 0 count: 1 baseSequence: -1 lastSequence: -1 producerId: -1 producerEpoch: -1 partitionLeaderEpoch: 1 isTransactional: false isControl: true position: 0 CreateTime: 1614382631640 size: 89 magic: 2 compresscodec: NONE crc: 1438115474 isvalid: true + +baseOffset: 1 lastOffset: 1 count: 1 baseSequence: -1 lastSequence: -1 producerId: -1 producerEpoch: -1 partitionLeaderEpoch: 1 isTransactional: false isControl: false position: 89 CreateTime: 1614382632329 size: 137 magic: 2 compresscodec: NONE crc: 1095855865 isvalid: true + payload: {"type":"REGISTER_BROKER_RECORD","version":0,"data":{"brokerId":1,"incarnationId":"P3UFsWoNR-erL9PK98YLsA","brokerEpoch":0,"endPoints":[{"name":"PLAINTEXT","host":"localhost","port":9092,"securityProtocol":0}],"features":[],"rack":null}} +baseOffset: 2 lastOffset: 2 count: 1 baseSequence: -1 lastSequence: -1 producerId: -1 producerEpoch: -1 partitionLeaderEpoch: 1 isTransactional: false isControl: false position: 226 CreateTime: 1614382632453 size: 83 magic: 2 compresscodec: NONE crc: 455187130 isvalid: true + payload: {"type":"UNFENCE_BROKER_RECORD","version":0,"data":{"id":1,"epoch":0}} +baseOffset: 3 lastOffset: 3 count: 1 baseSequence: -1 lastSequence: -1 producerId: -1 producerEpoch: -1 partitionLeaderEpoch: 1 isTransactional: false isControl: false position: 309 CreateTime: 1614382634484 size: 83 magic: 2 compresscodec: NONE crc: 4055692847 isvalid: true + payload: {"type":"FENCE_BROKER_RECORD","version":0,"data":{"id":1,"epoch":0}} +baseOffset: 4 lastOffset: 4 count: 1 baseSequence: -1 lastSequence: -1 producerId: -1 producerEpoch: -1 partitionLeaderEpoch: 2 isTransactional: false isControl: true position: 392 CreateTime: 1614382671857 size: 89 magic: 2 compresscodec: NONE crc: 1318571838 isvalid: true + +baseOffset: 5 lastOffset: 5 count: 1 baseSequence: -1 lastSequence: -1 producerId: -1 producerEpoch: -1 partitionLeaderEpoch: 2 isTransactional: false isControl: false position: 481 CreateTime: 1614382672440 size: 137 magic: 2 compresscodec: NONE crc: 841144615 isvalid: true + payload: {"type":"REGISTER_BROKER_RECORD","version":0,"data":{"brokerId":1,"incarnationId":"RXRJu7cnScKRZOnWQGs86g","brokerEpoch":4,"endPoints":[{"name":"PLAINTEXT","host":"localhost","port":9092,"securityProtocol":0}],"features":[],"rack":null}} +baseOffset: 6 lastOffset: 6 count: 1 baseSequence: -1 lastSequence: -1 producerId: -1 producerEpoch: -1 partitionLeaderEpoch: 2 isTransactional: false isControl: false position: 618 CreateTime: 1614382672544 size: 83 magic: 2 compresscodec: NONE crc: 4155905922 isvalid: true + payload: {"type":"UNFENCE_BROKER_RECORD","version":0,"data":{"id":1,"epoch":4}} +baseOffset: 7 lastOffset: 8 count: 2 baseSequence: -1 lastSequence: -1 producerId: -1 producerEpoch: -1 partitionLeaderEpoch: 2 isTransactional: false isControl: false position: 701 CreateTime: 1614382712158 size: 159 magic: 2 compresscodec: NONE crc: 3726758683 isvalid: true + payload: {"type":"TOPIC_RECORD","version":0,"data":{"name":"foo","topicId":"5zoAlv-xEh9xRANKXt1Lbg"}} + payload: {"type":"PARTITION_RECORD","version":0,"data":{"partitionId":0,"topicId":"5zoAlv-xEh9xRANKXt1Lbg","replicas":[1],"isr":[1],"removingReplicas":null,"addingReplicas":null,"leader":1,"leaderEpoch":0,"partitionEpoch":0}} +~~~~ + +## The Metadata Shell +Another tool for examining the metadata logs is the Kafka metadata shell. Just like the ZooKeeper shell, this allows you to inspect the metadata of the cluster. + +~~~~ +$ ./bin/kafka-metadata-shell.sh --snapshot /tmp/kraft-combined-logs/\@metadata-0/00000000000000000000.log +>> ls / +brokers local metadataQuorum topicIds topics +>> ls /topics +foo +>> cat /topics/foo/0/data +{ + "partitionId" : 0, + "topicId" : "5zoAlv-xEh9xRANKXt1Lbg", + "replicas" : [ 1 ], + "isr" : [ 1 ], + "removingReplicas" : null, + "addingReplicas" : null, + "leader" : 1, + "leaderEpoch" : 0, + "partitionEpoch" : 0 +} +>> exit +~~~~ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/broker.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/broker.properties new file mode 100644 index 0000000000000000000000000000000000000000..1b71803093acd9ca92e6aa0f1cd4b7984a4c2221 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/broker.properties @@ -0,0 +1,128 @@ +# 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 +# +# 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. + +# +# This configuration file is intended for use in KRaft mode, where +# Apache ZooKeeper is not present. See config/kraft/README.md for details. +# + +############################# Server Basics ############################# + +# The role of this server. Setting this puts us in KRaft mode +process.roles=broker + +# The node id associated with this instance's roles +node.id=1 + +# The connect string for the controller quorum +controller.quorum.voters=1@localhost:9093 + +############################# Socket Server Settings ############################# + +# The address the socket server listens on. It will get the value returned from +# java.net.InetAddress.getCanonicalHostName() if not configured. +# FORMAT: +# listeners = listener_name://host_name:port +# EXAMPLE: +# listeners = PLAINTEXT://your.host.name:9092 +listeners=PLAINTEXT://localhost:9092 +inter.broker.listener.name=PLAINTEXT + +# Hostname and port the broker will advertise to producers and consumers. If not set, +# it uses the value for "listeners" if configured. Otherwise, it will use the value +# returned from java.net.InetAddress.getCanonicalHostName(). +advertised.listeners=PLAINTEXT://localhost:9092 + +# Listener, host name, and port for the controller to advertise to the brokers. If +# this server is a controller, this listener must be configured. +controller.listener.names=CONTROLLER + +# Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more details +listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL + +# The number of threads that the server uses for receiving requests from the network and sending responses to the network +num.network.threads=3 + +# The number of threads that the server uses for processing requests, which may include disk I/O +num.io.threads=8 + +# The send buffer (SO_SNDBUF) used by the socket server +socket.send.buffer.bytes=102400 + +# The receive buffer (SO_RCVBUF) used by the socket server +socket.receive.buffer.bytes=102400 + +# The maximum size of a request that the socket server will accept (protection against OOM) +socket.request.max.bytes=104857600 + + +############################# Log Basics ############################# + +# A comma separated list of directories under which to store log files +log.dirs=/tmp/kraft-broker-logs + +# The default number of log partitions per topic. More partitions allow greater +# parallelism for consumption, but this will also result in more files across +# the brokers. +num.partitions=1 + +# The number of threads per data directory to be used for log recovery at startup and flushing at shutdown. +# This value is recommended to be increased for installations with data dirs located in RAID array. +num.recovery.threads.per.data.dir=1 + +############################# Internal Topic Settings ############################# +# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state" +# For anything other than development testing, a value greater than 1 is recommended to ensure availability such as 3. +offsets.topic.replication.factor=1 +transaction.state.log.replication.factor=1 +transaction.state.log.min.isr=1 + +############################# Log Flush Policy ############################# + +# Messages are immediately written to the filesystem but by default we only fsync() to sync +# the OS cache lazily. The following configurations control the flush of data to disk. +# There are a few important trade-offs here: +# 1. Durability: Unflushed data may be lost if you are not using replication. +# 2. Latency: Very large flush intervals may lead to latency spikes when the flush does occur as there will be a lot of data to flush. +# 3. Throughput: The flush is generally the most expensive operation, and a small flush interval may lead to excessive seeks. +# The settings below allow one to configure the flush policy to flush data after a period of time or +# every N messages (or both). This can be done globally and overridden on a per-topic basis. + +# The number of messages to accept before forcing a flush of data to disk +#log.flush.interval.messages=10000 + +# The maximum amount of time a message can sit in a log before we force a flush +#log.flush.interval.ms=1000 + +############################# Log Retention Policy ############################# + +# The following configurations control the disposal of log segments. The policy can +# be set to delete segments after a period of time, or after a given size has accumulated. +# A segment will be deleted whenever *either* of these criteria are met. Deletion always happens +# from the end of the log. + +# The minimum age of a log file to be eligible for deletion due to age +log.retention.hours=168 + +# A size-based retention policy for logs. Segments are pruned from the log unless the remaining +# segments drop below log.retention.bytes. Functions independently of log.retention.hours. +#log.retention.bytes=1073741824 + +# The maximum size of a log segment file. When this size is reached a new log segment will be created. +log.segment.bytes=1073741824 + +# The interval at which log segments are checked to see if they can be deleted according +# to the retention policies +log.retention.check.interval.ms=300000 diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/controller.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/controller.properties new file mode 100644 index 0000000000000000000000000000000000000000..30fe3e78f3ad8e5c7e65c78e9d35cf5c0b4f7038 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/controller.properties @@ -0,0 +1,127 @@ +# 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 +# +# 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. + +# +# This configuration file is intended for use in KRaft mode, where +# Apache ZooKeeper is not present. See config/kraft/README.md for details. +# + +############################# Server Basics ############################# + +# The role of this server. Setting this puts us in KRaft mode +process.roles=controller + +# The node id associated with this instance's roles +node.id=1 + +# The connect string for the controller quorum +controller.quorum.voters=1@localhost:9093 + +############################# Socket Server Settings ############################# + +# The address the socket server listens on. It will get the value returned from +# java.net.InetAddress.getCanonicalHostName() if not configured. +# FORMAT: +# listeners = listener_name://host_name:port +# EXAMPLE: +# listeners = PLAINTEXT://your.host.name:9092 +listeners=PLAINTEXT://:9093 + +# Hostname and port the broker will advertise to producers and consumers. If not set, +# it uses the value for "listeners" if configured. Otherwise, it will use the value +# returned from java.net.InetAddress.getCanonicalHostName(). +#advertised.listeners=PLAINTEXT://your.host.name:9092 + +# Listener, host name, and port for the controller to advertise to the brokers. If +# this server is a controller, this listener must be configured. +controller.listener.names=PLAINTEXT + +# Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more details +#listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL + +# The number of threads that the server uses for receiving requests from the network and sending responses to the network +num.network.threads=3 + +# The number of threads that the server uses for processing requests, which may include disk I/O +num.io.threads=8 + +# The send buffer (SO_SNDBUF) used by the socket server +socket.send.buffer.bytes=102400 + +# The receive buffer (SO_RCVBUF) used by the socket server +socket.receive.buffer.bytes=102400 + +# The maximum size of a request that the socket server will accept (protection against OOM) +socket.request.max.bytes=104857600 + + +############################# Log Basics ############################# + +# A comma separated list of directories under which to store log files +log.dirs=/tmp/raft-controller-logs + +# The default number of log partitions per topic. More partitions allow greater +# parallelism for consumption, but this will also result in more files across +# the brokers. +num.partitions=1 + +# The number of threads per data directory to be used for log recovery at startup and flushing at shutdown. +# This value is recommended to be increased for installations with data dirs located in RAID array. +num.recovery.threads.per.data.dir=1 + +############################# Internal Topic Settings ############################# +# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state" +# For anything other than development testing, a value greater than 1 is recommended to ensure availability such as 3. +offsets.topic.replication.factor=1 +transaction.state.log.replication.factor=1 +transaction.state.log.min.isr=1 + +############################# Log Flush Policy ############################# + +# Messages are immediately written to the filesystem but by default we only fsync() to sync +# the OS cache lazily. The following configurations control the flush of data to disk. +# There are a few important trade-offs here: +# 1. Durability: Unflushed data may be lost if you are not using replication. +# 2. Latency: Very large flush intervals may lead to latency spikes when the flush does occur as there will be a lot of data to flush. +# 3. Throughput: The flush is generally the most expensive operation, and a small flush interval may lead to excessive seeks. +# The settings below allow one to configure the flush policy to flush data after a period of time or +# every N messages (or both). This can be done globally and overridden on a per-topic basis. + +# The number of messages to accept before forcing a flush of data to disk +#log.flush.interval.messages=10000 + +# The maximum amount of time a message can sit in a log before we force a flush +#log.flush.interval.ms=1000 + +############################# Log Retention Policy ############################# + +# The following configurations control the disposal of log segments. The policy can +# be set to delete segments after a period of time, or after a given size has accumulated. +# A segment will be deleted whenever *either* of these criteria are met. Deletion always happens +# from the end of the log. + +# The minimum age of a log file to be eligible for deletion due to age +log.retention.hours=168 + +# A size-based retention policy for logs. Segments are pruned from the log unless the remaining +# segments drop below log.retention.bytes. Functions independently of log.retention.hours. +#log.retention.bytes=1073741824 + +# The maximum size of a log segment file. When this size is reached a new log segment will be created. +log.segment.bytes=1073741824 + +# The interval at which log segments are checked to see if they can be deleted according +# to the retention policies +log.retention.check.interval.ms=300000 diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/server.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/server.properties new file mode 100644 index 0000000000000000000000000000000000000000..8e6406c3b43f2e14d2dcc30b828bbd997d8048ef --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/kraft/server.properties @@ -0,0 +1,128 @@ +# 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 +# +# 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. + +# +# This configuration file is intended for use in KRaft mode, where +# Apache ZooKeeper is not present. See config/kraft/README.md for details. +# + +############################# Server Basics ############################# + +# The role of this server. Setting this puts us in KRaft mode +process.roles=broker,controller + +# The node id associated with this instance's roles +node.id=1 + +# The connect string for the controller quorum +controller.quorum.voters=1@localhost:9093 + +############################# Socket Server Settings ############################# + +# The address the socket server listens on. It will get the value returned from +# java.net.InetAddress.getCanonicalHostName() if not configured. +# FORMAT: +# listeners = listener_name://host_name:port +# EXAMPLE: +# listeners = PLAINTEXT://your.host.name:9092 +listeners=PLAINTEXT://:9092,CONTROLLER://:9093 +inter.broker.listener.name=PLAINTEXT + +# Hostname and port the broker will advertise to producers and consumers. If not set, +# it uses the value for "listeners" if configured. Otherwise, it will use the value +# returned from java.net.InetAddress.getCanonicalHostName(). +advertised.listeners=PLAINTEXT://localhost:9092 + +# Listener, host name, and port for the controller to advertise to the brokers. If +# this server is a controller, this listener must be configured. +controller.listener.names=CONTROLLER + +# Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more details +listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL + +# The number of threads that the server uses for receiving requests from the network and sending responses to the network +num.network.threads=3 + +# The number of threads that the server uses for processing requests, which may include disk I/O +num.io.threads=8 + +# The send buffer (SO_SNDBUF) used by the socket server +socket.send.buffer.bytes=102400 + +# The receive buffer (SO_RCVBUF) used by the socket server +socket.receive.buffer.bytes=102400 + +# The maximum size of a request that the socket server will accept (protection against OOM) +socket.request.max.bytes=104857600 + + +############################# Log Basics ############################# + +# A comma separated list of directories under which to store log files +log.dirs=/tmp/kraft-combined-logs + +# The default number of log partitions per topic. More partitions allow greater +# parallelism for consumption, but this will also result in more files across +# the brokers. +num.partitions=1 + +# The number of threads per data directory to be used for log recovery at startup and flushing at shutdown. +# This value is recommended to be increased for installations with data dirs located in RAID array. +num.recovery.threads.per.data.dir=1 + +############################# Internal Topic Settings ############################# +# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state" +# For anything other than development testing, a value greater than 1 is recommended to ensure availability such as 3. +offsets.topic.replication.factor=1 +transaction.state.log.replication.factor=1 +transaction.state.log.min.isr=1 + +############################# Log Flush Policy ############################# + +# Messages are immediately written to the filesystem but by default we only fsync() to sync +# the OS cache lazily. The following configurations control the flush of data to disk. +# There are a few important trade-offs here: +# 1. Durability: Unflushed data may be lost if you are not using replication. +# 2. Latency: Very large flush intervals may lead to latency spikes when the flush does occur as there will be a lot of data to flush. +# 3. Throughput: The flush is generally the most expensive operation, and a small flush interval may lead to excessive seeks. +# The settings below allow one to configure the flush policy to flush data after a period of time or +# every N messages (or both). This can be done globally and overridden on a per-topic basis. + +# The number of messages to accept before forcing a flush of data to disk +#log.flush.interval.messages=10000 + +# The maximum amount of time a message can sit in a log before we force a flush +#log.flush.interval.ms=1000 + +############################# Log Retention Policy ############################# + +# The following configurations control the disposal of log segments. The policy can +# be set to delete segments after a period of time, or after a given size has accumulated. +# A segment will be deleted whenever *either* of these criteria are met. Deletion always happens +# from the end of the log. + +# The minimum age of a log file to be eligible for deletion due to age +log.retention.hours=168 + +# A size-based retention policy for logs. Segments are pruned from the log unless the remaining +# segments drop below log.retention.bytes. Functions independently of log.retention.hours. +#log.retention.bytes=1073741824 + +# The maximum size of a log segment file. When this size is reached a new log segment will be created. +log.segment.bytes=1073741824 + +# The interval at which log segments are checked to see if they can be deleted according +# to the retention policies +log.retention.check.interval.ms=300000 diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/log4j.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/log4j.properties new file mode 100644 index 0000000000000000000000000000000000000000..4cbce9d104291fe0a8c6d6acb7e6fc67dde4ecc5 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/log4j.properties @@ -0,0 +1,91 @@ +# 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 +# +# 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. + +# Unspecified loggers and loggers with additivity=true output to server.log and stdout +# Note that INFO only applies to unspecified loggers, the log level of the child logger is used otherwise +log4j.rootLogger=INFO, stdout, kafkaAppender + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n + +log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH +log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log +log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n + +log4j.appender.stateChangeAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.stateChangeAppender.DatePattern='.'yyyy-MM-dd-HH +log4j.appender.stateChangeAppender.File=${kafka.logs.dir}/state-change.log +log4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n + +log4j.appender.requestAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.requestAppender.DatePattern='.'yyyy-MM-dd-HH +log4j.appender.requestAppender.File=${kafka.logs.dir}/kafka-request.log +log4j.appender.requestAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.requestAppender.layout.ConversionPattern=[%d] %p %m (%c)%n + +log4j.appender.cleanerAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.cleanerAppender.DatePattern='.'yyyy-MM-dd-HH +log4j.appender.cleanerAppender.File=${kafka.logs.dir}/log-cleaner.log +log4j.appender.cleanerAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.cleanerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n + +log4j.appender.controllerAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.controllerAppender.DatePattern='.'yyyy-MM-dd-HH +log4j.appender.controllerAppender.File=${kafka.logs.dir}/controller.log +log4j.appender.controllerAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.controllerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n + +log4j.appender.authorizerAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.authorizerAppender.DatePattern='.'yyyy-MM-dd-HH +log4j.appender.authorizerAppender.File=${kafka.logs.dir}/kafka-authorizer.log +log4j.appender.authorizerAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.authorizerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n + +# Change the line below to adjust ZK client logging +log4j.logger.org.apache.zookeeper=INFO + +# Change the two lines below to adjust the general broker logging level (output to server.log and stdout) +log4j.logger.kafka=INFO +log4j.logger.org.apache.kafka=INFO + +# Change to DEBUG or TRACE to enable request logging +log4j.logger.kafka.request.logger=WARN, requestAppender +log4j.additivity.kafka.request.logger=false + +# Uncomment the lines below and change log4j.logger.kafka.network.RequestChannel$ to TRACE for additional output +# related to the handling of requests +#log4j.logger.kafka.network.Processor=TRACE, requestAppender +#log4j.logger.kafka.server.KafkaApis=TRACE, requestAppender +#log4j.additivity.kafka.server.KafkaApis=false +log4j.logger.kafka.network.RequestChannel$=WARN, requestAppender +log4j.additivity.kafka.network.RequestChannel$=false + +log4j.logger.kafka.controller=TRACE, controllerAppender +log4j.additivity.kafka.controller=false + +log4j.logger.kafka.log.LogCleaner=INFO, cleanerAppender +log4j.additivity.kafka.log.LogCleaner=false + +log4j.logger.state.change.logger=INFO, stateChangeAppender +log4j.additivity.state.change.logger=false + +# Access denials are logged at INFO level, change to DEBUG to also log allowed accesses +log4j.logger.kafka.authorizer.logger=INFO, authorizerAppender +log4j.additivity.kafka.authorizer.logger=false + diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/producer.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/producer.properties new file mode 100644 index 0000000000000000000000000000000000000000..4786b988a29b84436280b361a4749aba8d9a02b1 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/producer.properties @@ -0,0 +1,45 @@ +# 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 +# +# 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. +# see org.apache.kafka.clients.producer.ProducerConfig for more details + +############################# Producer Basics ############################# + +# list of brokers used for bootstrapping knowledge about the rest of the cluster +# format: host1:port1,host2:port2 ... +bootstrap.servers=localhost:9092 + +# specify the compression codec for all data generated: none, gzip, snappy, lz4, zstd +compression.type=none + +# name of the partitioner class for partitioning events; default partition spreads data randomly +#partitioner.class= + +# the maximum amount of time the client will wait for the response of a request +#request.timeout.ms= + +# how long `KafkaProducer.send` and `KafkaProducer.partitionsFor` will block for +#max.block.ms= + +# the producer will wait for up to the given delay to allow other records to be sent so that the sends can be batched together +#linger.ms= + +# the maximum size of a request in bytes +#max.request.size= + +# the default batch size in bytes when batching multiple records sent to a partition +#batch.size= + +# the total bytes of memory the producer can use to buffer records waiting to be sent to the server +#buffer.memory= diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/server.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/server.properties new file mode 100644 index 0000000000000000000000000000000000000000..b1cf5c454169c2f08d56f4af09ef1726f622728d --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/server.properties @@ -0,0 +1,136 @@ +# 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 +# +# 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. + +# see kafka.server.KafkaConfig for additional details and defaults + +############################# Server Basics ############################# + +# The id of the broker. This must be set to a unique integer for each broker. +broker.id=0 + +############################# Socket Server Settings ############################# + +# The address the socket server listens on. It will get the value returned from +# java.net.InetAddress.getCanonicalHostName() if not configured. +# FORMAT: +# listeners = listener_name://host_name:port +# EXAMPLE: +# listeners = PLAINTEXT://your.host.name:9092 +#listeners=PLAINTEXT://:9092 + +# Hostname and port the broker will advertise to producers and consumers. If not set, +# it uses the value for "listeners" if configured. Otherwise, it will use the value +# returned from java.net.InetAddress.getCanonicalHostName(). +#advertised.listeners=PLAINTEXT://your.host.name:9092 + +# Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more details +#listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL + +# The number of threads that the server uses for receiving requests from the network and sending responses to the network +num.network.threads=3 + +# The number of threads that the server uses for processing requests, which may include disk I/O +num.io.threads=8 + +# The send buffer (SO_SNDBUF) used by the socket server +socket.send.buffer.bytes=102400 + +# The receive buffer (SO_RCVBUF) used by the socket server +socket.receive.buffer.bytes=102400 + +# The maximum size of a request that the socket server will accept (protection against OOM) +socket.request.max.bytes=104857600 + + +############################# Log Basics ############################# + +# A comma separated list of directories under which to store log files +log.dirs=/tmp/kafka-logs + +# The default number of log partitions per topic. More partitions allow greater +# parallelism for consumption, but this will also result in more files across +# the brokers. +num.partitions=1 + +# The number of threads per data directory to be used for log recovery at startup and flushing at shutdown. +# This value is recommended to be increased for installations with data dirs located in RAID array. +num.recovery.threads.per.data.dir=1 + +############################# Internal Topic Settings ############################# +# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state" +# For anything other than development testing, a value greater than 1 is recommended to ensure availability such as 3. +offsets.topic.replication.factor=1 +transaction.state.log.replication.factor=1 +transaction.state.log.min.isr=1 + +############################# Log Flush Policy ############################# + +# Messages are immediately written to the filesystem but by default we only fsync() to sync +# the OS cache lazily. The following configurations control the flush of data to disk. +# There are a few important trade-offs here: +# 1. Durability: Unflushed data may be lost if you are not using replication. +# 2. Latency: Very large flush intervals may lead to latency spikes when the flush does occur as there will be a lot of data to flush. +# 3. Throughput: The flush is generally the most expensive operation, and a small flush interval may lead to excessive seeks. +# The settings below allow one to configure the flush policy to flush data after a period of time or +# every N messages (or both). This can be done globally and overridden on a per-topic basis. + +# The number of messages to accept before forcing a flush of data to disk +#log.flush.interval.messages=10000 + +# The maximum amount of time a message can sit in a log before we force a flush +#log.flush.interval.ms=1000 + +############################# Log Retention Policy ############################# + +# The following configurations control the disposal of log segments. The policy can +# be set to delete segments after a period of time, or after a given size has accumulated. +# A segment will be deleted whenever *either* of these criteria are met. Deletion always happens +# from the end of the log. + +# The minimum age of a log file to be eligible for deletion due to age +log.retention.hours=168 + +# A size-based retention policy for logs. Segments are pruned from the log unless the remaining +# segments drop below log.retention.bytes. Functions independently of log.retention.hours. +#log.retention.bytes=1073741824 + +# The maximum size of a log segment file. When this size is reached a new log segment will be created. +log.segment.bytes=1073741824 + +# The interval at which log segments are checked to see if they can be deleted according +# to the retention policies +log.retention.check.interval.ms=300000 + +############################# Zookeeper ############################# + +# Zookeeper connection string (see zookeeper docs for details). +# This is a comma separated host:port pairs, each corresponding to a zk +# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002". +# You can also append an optional chroot string to the urls to specify the +# root directory for all kafka znodes. +zookeeper.connect=localhost:2181 + +# Timeout in ms for connecting to zookeeper +zookeeper.connection.timeout.ms=18000 + + +############################# Group Coordinator Settings ############################# + +# The following configuration specifies the time, in milliseconds, that the GroupCoordinator will delay the initial consumer rebalance. +# The rebalance will be further delayed by the value of group.initial.rebalance.delay.ms as new members join the group, up to a maximum of max.poll.interval.ms. +# The default value for this is 3 seconds. +# We override this to 0 here as it makes for a better out-of-the-box experience for development and testing. +# However, in production environments the default value of 3 seconds is more suitable as this will help to avoid unnecessary, and potentially expensive, rebalances during application startup. +group.initial.rebalance.delay.ms=0 diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/tools-log4j.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/tools-log4j.properties new file mode 100644 index 0000000000000000000000000000000000000000..b19e343265fc3601423cfb08535a139639116375 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/tools-log4j.properties @@ -0,0 +1,21 @@ +# 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 +# +# 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. + +log4j.rootLogger=WARN, stderr + +log4j.appender.stderr=org.apache.log4j.ConsoleAppender +log4j.appender.stderr.layout=org.apache.log4j.PatternLayout +log4j.appender.stderr.layout.ConversionPattern=[%d] %p %m (%c)%n +log4j.appender.stderr.Target=System.err diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/trogdor.conf b/hackfest/kafka/kafka_2.13-2.8.0/config/trogdor.conf new file mode 100644 index 0000000000000000000000000000000000000000..320cbe7560cd0c45f076de4801826424f9df3882 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/trogdor.conf @@ -0,0 +1,25 @@ +{ + "_comment": [ + "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", + "", + "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." + ], + "platform": "org.apache.kafka.trogdor.basic.BasicPlatform", "nodes": { + "node0": { + "hostname": "localhost", + "trogdor.agent.port": 8888, + "trogdor.coordinator.port": 8889 + } + } +} diff --git a/hackfest/kafka/kafka_2.13-2.8.0/config/zookeeper.properties b/hackfest/kafka/kafka_2.13-2.8.0/config/zookeeper.properties new file mode 100644 index 0000000000000000000000000000000000000000..90f4332ec31cf5e6612daa5fb75c4ac0d0093dd8 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/config/zookeeper.properties @@ -0,0 +1,24 @@ +# 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 +# +# 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. +# the directory where the snapshot is stored. +dataDir=/tmp/zookeeper +# the port at which the clients will connect +clientPort=2181 +# disable the per-ip limit on the number of connections since this is a non-production config +maxClientCnxns=0 +# Disable the adminserver by default to avoid port conflicts. +# Set the port to something non-conflicting if choosing to enable this +admin.enableServer=false +# admin.serverPort=8080 diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/activation-1.1.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/activation-1.1.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..1b703ab283e0cddabf9c1b5e28658f9198c0def4 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/activation-1.1.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/aopalliance-repackaged-2.6.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/aopalliance-repackaged-2.6.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..35502f09dcaa845e9ad63fa1ea6f5989cf97731a Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/aopalliance-repackaged-2.6.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/argparse4j-0.7.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/argparse4j-0.7.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..b1865dd3827eada57d396d4fc1e012ff990c5f3b Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/argparse4j-0.7.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/audience-annotations-0.5.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/audience-annotations-0.5.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..52491a7ea2048e9ab82534472a1c9fff7396d031 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/audience-annotations-0.5.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/commons-cli-1.4.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/commons-cli-1.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..22deb3089e2f79a983406bd13a75a3e6238afdcf Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/commons-cli-1.4.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/commons-lang3-3.8.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/commons-lang3-3.8.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..2c65ce67d5c2b746e0583e4879c35ed0751b505e Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/commons-lang3-3.8.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-api-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-api-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..7c5ba4316738de9603684b5ee3f81d6ca187f052 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-api-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-basic-auth-extension-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-basic-auth-extension-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..86fcdd7b7f76b7a11df061692bc92c3495712039 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-basic-auth-extension-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-file-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-file-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..ba1b1b19b53fec6727ccad01aaf1df14e54149a0 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-file-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-json-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-json-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..b96a4b00566737cba09a8690ed7c075677ba80ea Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-json-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-mirror-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-mirror-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..9947af91f87c2e13ec32b08094f93319fd850c6f Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-mirror-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-mirror-client-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-mirror-client-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..4099b02b464300e3da31fb289855a88402726e98 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-mirror-client-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-runtime-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-runtime-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..ce0fb813f99fb33e5f105ec76b59d192843ee0a9 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-runtime-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-transforms-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-transforms-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..b72a124106678af9728fd050fc14ae833e506c6a Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/connect-transforms-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/hk2-api-2.6.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/hk2-api-2.6.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..03d6eb05921f28d7fdca0f7bf1af7b187cdf1a8b Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/hk2-api-2.6.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/hk2-locator-2.6.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/hk2-locator-2.6.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..0906bd1bdaca955a54c37a2b70ed393d5aa9fcca Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/hk2-locator-2.6.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/hk2-utils-2.6.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/hk2-utils-2.6.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..768bc48800fee6da4526f9b8cff0de1773a7bc3f Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/hk2-utils-2.6.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-annotations-2.10.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-annotations-2.10.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..74a8b1ba76ed2ba3498f38338f96f1615ad6d65d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-annotations-2.10.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-core-2.10.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-core-2.10.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..ed1817300546847acc182edb40b0f068a605d711 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-core-2.10.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-databind-2.10.5.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-databind-2.10.5.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..3246c3d3c27860b7ae0579dd7b2474d0a800d7e3 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-databind-2.10.5.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-dataformat-csv-2.10.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-dataformat-csv-2.10.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..df564d944d0a752a58825dc8e9f094f7a5f13764 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-dataformat-csv-2.10.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-datatype-jdk8-2.10.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-datatype-jdk8-2.10.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..32d020097821a02469a843129cd6c9b055f9fd4b Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-datatype-jdk8-2.10.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-jaxrs-base-2.10.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-jaxrs-base-2.10.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..74d74f53703a8b92803a9d7d0cf4b2c8afdb6cb5 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-jaxrs-base-2.10.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-jaxrs-json-provider-2.10.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-jaxrs-json-provider-2.10.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..9d6dde11b2661743a97b296f34653a5514a33bf1 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-jaxrs-json-provider-2.10.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-module-jaxb-annotations-2.10.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-module-jaxb-annotations-2.10.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..ea23eb79435cc855c6b7c97e542caf54ddd6cb05 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-module-jaxb-annotations-2.10.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-module-paranamer-2.10.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-module-paranamer-2.10.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..63efc6ac43de3ed20d3034ec4074f7f8b62911af Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-module-paranamer-2.10.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-module-scala_2.13-2.10.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-module-scala_2.13-2.10.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..51326637eff340dbfa724e4f554fd28ec57bdefb Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jackson-module-scala_2.13-2.10.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.activation-api-1.2.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.activation-api-1.2.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..bbfb52ff01e082afd65ee6444f2645e999f98ee0 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.activation-api-1.2.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.annotation-api-1.3.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.annotation-api-1.3.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..606d992eb235afffc3284caf6a2f97939e8a1682 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.annotation-api-1.3.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.inject-2.6.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.inject-2.6.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..cee6acd2a0a81094bb1b6f8b75f2c6913301ba6d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.inject-2.6.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.validation-api-2.0.2.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.validation-api-2.0.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..d68c9f7f36d2cfda66f0b89e0719b73b034143b5 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.validation-api-2.0.2.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.ws.rs-api-2.1.6.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.ws.rs-api-2.1.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..4850659bb6c9f2872836f4d0d5f4600da774d440 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.ws.rs-api-2.1.6.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.xml.bind-api-2.3.2.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.xml.bind-api-2.3.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..b16236d561c08c177f79a99e2c7a47be1f81616d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jakarta.xml.bind-api-2.3.2.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/javassist-3.27.0-GA.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/javassist-3.27.0-GA.jar new file mode 100644 index 0000000000000000000000000000000000000000..092e59b4d68c3d5832cef4e04324212fd319ab48 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/javassist-3.27.0-GA.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/javax.servlet-api-3.1.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/javax.servlet-api-3.1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..6b14c3d267867e76c04948bb31b3de18e01412ee Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/javax.servlet-api-3.1.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/javax.ws.rs-api-2.1.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/javax.ws.rs-api-2.1.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..3eabbf0874c4a56edf5f47fb9e26c2c125dc23b2 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/javax.ws.rs-api-2.1.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jaxb-api-2.3.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jaxb-api-2.3.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..0817c083ad9965d72e18c87dd23b63f8241adc50 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jaxb-api-2.3.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-client-2.31.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-client-2.31.jar new file mode 100644 index 0000000000000000000000000000000000000000..6f4cbe1f0181c85eb4fa1351b55a86ca13a26719 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-client-2.31.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-common-2.31.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-common-2.31.jar new file mode 100644 index 0000000000000000000000000000000000000000..22a163898ff67d1bfed6c81feb806e2371ca4b53 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-common-2.31.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-container-servlet-2.31.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-container-servlet-2.31.jar new file mode 100644 index 0000000000000000000000000000000000000000..5395f6d31d9c070a8b31ff699d56e70dad3db935 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-container-servlet-2.31.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-container-servlet-core-2.31.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-container-servlet-core-2.31.jar new file mode 100644 index 0000000000000000000000000000000000000000..9e0d13fd4cf64859d2c2e106bf1b5c003acfe822 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-container-servlet-core-2.31.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-hk2-2.31.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-hk2-2.31.jar new file mode 100644 index 0000000000000000000000000000000000000000..1c8faeaae7a57fa13e8f1bf642c95782f7747345 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-hk2-2.31.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-media-jaxb-2.31.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-media-jaxb-2.31.jar new file mode 100644 index 0000000000000000000000000000000000000000..b30472a94abce99d9379cf0f3c08df226a3913f4 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-media-jaxb-2.31.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-server-2.31.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-server-2.31.jar new file mode 100644 index 0000000000000000000000000000000000000000..8093610a304e2c1f8c4b0422261368b0c47be8bf Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jersey-server-2.31.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-client-9.4.39.v20210325.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-client-9.4.39.v20210325.jar new file mode 100644 index 0000000000000000000000000000000000000000..8f3456444abdace3451d6abbf5f849adb38d8159 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-client-9.4.39.v20210325.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-continuation-9.4.39.v20210325.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-continuation-9.4.39.v20210325.jar new file mode 100644 index 0000000000000000000000000000000000000000..628c66adb35f67ef4083337f943633ee5a21359d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-continuation-9.4.39.v20210325.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-http-9.4.39.v20210325.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-http-9.4.39.v20210325.jar new file mode 100644 index 0000000000000000000000000000000000000000..0e4b3a626f5c445f7f94956e7547cfaf41e42a77 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-http-9.4.39.v20210325.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-io-9.4.39.v20210325.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-io-9.4.39.v20210325.jar new file mode 100644 index 0000000000000000000000000000000000000000..410024d7c32c47ec1a910e59f349d463af084fb9 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-io-9.4.39.v20210325.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-security-9.4.39.v20210325.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-security-9.4.39.v20210325.jar new file mode 100644 index 0000000000000000000000000000000000000000..959f42617384cd30caf86e2f2528164f9aad2fc7 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-security-9.4.39.v20210325.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-server-9.4.39.v20210325.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-server-9.4.39.v20210325.jar new file mode 100644 index 0000000000000000000000000000000000000000..93ef391b9669a8c2e8d720d04af7fe058af699e0 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-server-9.4.39.v20210325.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-servlet-9.4.39.v20210325.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-servlet-9.4.39.v20210325.jar new file mode 100644 index 0000000000000000000000000000000000000000..87712d80c28bfe61ab993917e2561286c542057d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-servlet-9.4.39.v20210325.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-servlets-9.4.39.v20210325.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-servlets-9.4.39.v20210325.jar new file mode 100644 index 0000000000000000000000000000000000000000..6fb55c290838080c1278fbc7fa1149fdbd707f5a Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-servlets-9.4.39.v20210325.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-util-9.4.39.v20210325.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-util-9.4.39.v20210325.jar new file mode 100644 index 0000000000000000000000000000000000000000..a55699def34d2aa97981fa41296da44d31a3671d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-util-9.4.39.v20210325.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-util-ajax-9.4.39.v20210325.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-util-ajax-9.4.39.v20210325.jar new file mode 100644 index 0000000000000000000000000000000000000000..edfdee3e9bbf4bd19d6bdd46538616ff2c6f4e52 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jetty-util-ajax-9.4.39.v20210325.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jline-3.12.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jline-3.12.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..fcb8d4dd6d1450ee214cce78eff1942a1cc1a9d3 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jline-3.12.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/jopt-simple-5.0.4.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/jopt-simple-5.0.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..317b2b069c413d1b58a471e7d49d85e03e4425d6 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/jopt-simple-5.0.4.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-clients-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-clients-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..375b2f82a46b67cae763c06166757bfa6ebf8ec5 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-clients-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-log4j-appender-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-log4j-appender-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..83ca256013d5076a283dd4ca413e8dc130bde93d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-log4j-appender-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-metadata-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-metadata-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..ab64f115e1d856ebf866029f342d78430272ee62 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-metadata-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-raft-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-raft-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..93b2c24b40312b89f7419f0d49b861085790984c Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-raft-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-shell-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-shell-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..4f1271f7e37292832911395c0c9909030e969d7b Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-shell-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..fc135def8c22b6ad32deba9f3a723444c2a69d22 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-examples-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-examples-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..7bc625021f55234fcdadc5f3b19e27e419ef3bd9 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-examples-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-scala_2.13-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-scala_2.13-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..49b1bd169f5e052d8d7a2f7a1b09ea3df8efcc2f Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-scala_2.13-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-test-utils-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-test-utils-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..50e01359e90596c87a296622276dee3a95b95459 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-streams-test-utils-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-tools-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-tools-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..ef49b423f6db1a79258437f816d49a7621317219 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka-tools-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-javadoc.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-javadoc.jar new file mode 100644 index 0000000000000000000000000000000000000000..31705d79e6163ebc7636b3d610b64c3744b83f6f Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-javadoc.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-javadoc.jar.asc b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-javadoc.jar.asc new file mode 100644 index 0000000000000000000000000000000000000000..fb9b148683c4d81ac9a6b09c5fdfea76b9b996e6 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-javadoc.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJgdv10AAoJEAFsz8oOL9Vh/HQP/ixN0ulA7WE41KuceF60xJ7+ +kiM3r4pJaJkcUuJRn8Q2U9w5vym0AMlRe7OlbHtRztpsHnUj2fyNvw/lIcWvvHey +G9UWCrjfReq7+Lcb7XsCRJZ1KCnlyKz6r2Jdh5E7nNlH9Fxe1pZv/1M4SZVXeud9 +Rq5byoQsVWGdNinmPvwckFbdmcmyiSGWbUlCVe9MYx+NfxcUisREGDkPdqaOeN+Y +HCEdmY0vpeMgkIpJOEDJHGwrJmp5sWT50Qor5J4FFtBlVPFyEeWVxyL9/025WyZe +wFzAVBmUXYLdhuF1Tq2fmfYTJWasbnu34PHsduq3t0TVAFzOyLDbgoRUnLWRA2Ws +eJgRRn2gKzB40vNpLTk79PjPEe37BKto2HxK/hhZebgl4TlhwR+atn54mfnuL73W ++eCoNikh2Xww1d83Fyv43dUggIr6H+3yipIRqoch4gf5Q40CFArbTDY5QBjWwiTW +2Ee8QuqxK5J21+ThwH+O/3ThcHZPWQvSqKz5AdpgF0JR2/Tzp/or93fthuBAJ+cM +op4IrfCt2uJlUNHzZL5x+WVxwVyhoC7HGJ9tq90aeN1F8d+2wT7gWRVtfASDnbE2 +Se8G3rfJEx2YD2Q0d1oxRR8na0mtfxT3gu4jcxhjlfRaBEBoGZ20nhnaIh2ZT7xN +9FBtpv1yg9q9PW0pordO +=heAh +-----END PGP SIGNATURE----- diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-sources.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..75d51d1b5c0f5335db597a7cd8720b0122dedb64 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-sources.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-sources.jar.asc b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-sources.jar.asc new file mode 100644 index 0000000000000000000000000000000000000000..6abc5e320f316dca38e6c58f66da64fff8cc70e7 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-sources.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJgdv10AAoJEAFsz8oOL9VhPeUP/0ZRAJo+0KZ4JycjaR1ea09S +FKXedSNGRMtU/ttwOuTMeICqvPDqxS5OvJD60Kp1yahODUIHvSb30WfjnQEdfM+5 +UiqOYz809NYVbwdLx951dm/c4++aQ+/cnucJLjl6R8Wj0hxOSU/Whb383tl7RBx8 +GVScgAEN+q0qC+jjNi6dm5TKjBxJqFbMcSlc34yk8Wno0d8y1ls1dBvNFmEtIZ1I ++gMUCuRKHrooudis5zPKXLrjCL8VZxqDAuovuRDLbVJDawbMB8sHYXE9phfOvoYi +27SDc7gpQJZ6Xwy2Ns1QaX8DowZgEx4xgZSzO1zHJfTvUoIxIFrg76L9CxbChr+P +eoWY0/UVpIiHRjLwkiVoHSCvgTKohL4kv74fID3xELdvClU4AMNAy9jVVakhLcgq +D/qK4t7+4VlWj/CZOoiN8ZrT/A2l3RcBp6OuXLcLQrEfuL1b2d/SkP9N3VGB3qfV +OUomFztr/CLxR8CNHvMWG2GbbVY/zDVaYPGMtHaorszLV/0+Fpz7+W0WRj4ZwU72 +fxIDKwM/nUrctJZS/D8zXveHtPypDvxsJVIwCGqULhtoYvKBmSaMFtVJ8eq8yO7A +BSbC1/nRGj8aaVItfKPjFoQtjOByzkuqQnG7WgwGIdiwOjOJz0kSkNvRAuRDntUa +j5ACmAY/hiwWEcmEqh7t +=zTA7 +-----END PGP SIGNATURE----- diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test-sources.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..d9bfb261c615da12118f37f3c9a316ea0f7713bc Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test-sources.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test-sources.jar.asc b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test-sources.jar.asc new file mode 100644 index 0000000000000000000000000000000000000000..cb147011ea03462b4f3e34e66659d98ae0947d97 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test-sources.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJgdv1zAAoJEAFsz8oOL9Vh3gIP/00PY5XCwsUFDR9hYnqdNAbZ +5xQWW5hCpnIWNbpAFPY5qf+oW40IuhsjcoJFKk6PNnAwptekx1I/2avz3PD3F613 +mj4b1fPx1LPFtS7+IUEHdb+KuzS4pIQ6zMyRwbISjmJFyPUsxULsx6nrFix53201 ++EPSlxdrygGIb1nlGzSaBe+4UybdsODo1HagXV6jBIsMntFkW7Y5wZAZh+QFQnOm +wPZPFBiwZ1Ly2R1eTs2uWvPfOhoG7Vgdoc1LWIJfWXnlLqE+eSdn7/TMxQ9KYKkZ +1UjWzLE5YEj6rVj4TnxpqNKq8hMGSX6ZDFEXlu95UJuqSZt+o4Z4PxYXY8SNo3U+ +uYpfftnkL26DVyqQS3BjLILSsnICtsuGLnlVdJJr3NzWQRCFVvsuWKyKRixlruk9 +KUDvZN4aR2FJW5N0Xy3cCS6b5m0WoiH14PiA0rgAq1KYD0QMPgFm/FhZkovTslcG +wfZYHtTULWO3NImkPSfRYUX+2RyEkHhfELfnLmQ8P560ULFW8Ckj3OoBk/Im5Faw +rO//gVonTKOuyh9EiGjHVx+VaihbIjf8GBZ7b9q/yZZqTybAashDpqnFD+vAo+jy +YwvxM6fF2CekJpD0Sk+eOcJNB9Ujwz973bDGuqSYhXG330xa1JbJ1hH73p10fsvR +g6OUBQRbTDCXmODUTcsf +=gek7 +-----END PGP SIGNATURE----- diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test.jar new file mode 100644 index 0000000000000000000000000000000000000000..7a7e9f7d6efffa2728bf404fd51469338a8eb265 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test.jar.asc b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test.jar.asc new file mode 100644 index 0000000000000000000000000000000000000000..85b5dfe93c5708432c5229ba8011cc366ee5ce0d --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0-test.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJgdv1zAAoJEAFsz8oOL9VhGp0QAKRfapWQIdqIRBWZUEzHFlbJ +Z+x0pLGiRJMDyoKj4pDqMyHWaTkW1Oav+XXQXlXHrZVClTiAnwyvYtpVQ42NbDu1 ++EyNuJ20phLVRMRhlMYYNaOVsI309a13RmmRxKWy4L147SZr9v+ay3g+jkjWU/GO +SjnQpT4VrmZjBvbfNYBlP7+yXevoIajpaozau1pIfROzsTdAXDW4pYbDZq7R/htq +fyxrqM2X3pY+WvMm2NpJ+zG3oZtAfSfI4/57PQse9dqWFzxzoGBDW/S9EJdqBWMT +M+6q36N+vYDQ8Y3Wlhe3lZfpsbQ8s2+JbloxO+c5qLyTJpLFnj0lMuc5AqQ4f8pd +B2uVQ3J/dlhj9JL9KA2nL0l1kQ40itUrzSEEsyhkeM/JExpG3GOjUrh0i1fAqaAA +kl04d9cfRNTYnOLL3d1D6M1rcQA9ydBk3MbvAV+3pQLSjKpkGuYDQeH4IcBBKW0F +XvIZEp+xw0eFLoT3DqPYkZJ/ry0r7+JFGJ+zVRU/djs8msspx5nRsEhB+6hvD3sj +SFGwAyJXmi8PMDrJTBqIewNgFC0OXoN4RQVxN0mQKaKVy98gqD2JaRQOjALJvDQQ +kJN2lyZ6OYLfsD8vHm2lYVU3WtRFMugWj/gWs2qJ6ikrDIkLbsFav83pS59gRao/ +vCnwpEMCseMe6XiLH2x5 +=0naQ +-----END PGP SIGNATURE----- diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..158454d4dc57312add0b36eb4d6c85a9496c0078 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0.jar.asc b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0.jar.asc new file mode 100644 index 0000000000000000000000000000000000000000..1ea0782e60696919ca50267ac8ff5c3d4d44738d --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/libs/kafka_2.13-2.8.0.jar.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: BCPG v1.64 + +iQIcBAABCgAGBQJgdv10AAoJEAFsz8oOL9VhscQP/2Fac2u6DezA+EToziIjIBMh +9gUfnWBBsY//tAaxosYnKp/VX2eRUd2XZ3ChKj1mk1qSosQ8jUOpu8fHgDV45t1T +uWsV1KsTTHu+fgy8zdQ/G4XGQYPdFalc9v8kvHI//ZlHWXcSTvR/B8m4pKyLg/mu +1xQuaLycrEt5dpXIxq+FYG+GnA+lJIrQlq11ZDTWJMSg1qnGVAXLX333HLIIlC5V +YoG7HFCImqX7aHe6sapKGlXYSeMLgO+wnLFXL9cjvxv+2wd+G4DSAz8s05mYiPjf +Bqx2Pp34ah3Oqh8lh4RL9aRqGWAmHrbFQkKQmo4sx8RW1qXp6qaMwSASPAcJQC5e +8gpwGwwo781l1HeKZO633ASrQs9RbQ4rgs4BciT+fhCu63ytjN1vRLz7vLbh9D5t +ZkXsJw33BU6h639sFPKu8eMyYe6ArqQ/5QsLMA+kE88b0wH5qCi57zf40iQQ+HAc +uULfefE+PnEIJrALvOcY9QDJVGxyvS6SOINZ0Fl6sLnfkxLMG/CV5B0UVWWWntNA +ei9F8b7utP8PzSxTnxCr3yWGnE2qVz2hrJeYkXdadZS3Tq6Qt2lVMZ+n0hf1szVn +0DmY27c/cADLIeviJHQzmB2ifVRCZP5dBGn1WqUWSg8oZfh5z+nYktuvdbZIROOQ +DvZIiIsAYS7eJHuJBYQs +=oHk2 +-----END PGP SIGNATURE----- diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/log4j-1.2.17.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/log4j-1.2.17.jar new file mode 100644 index 0000000000000000000000000000000000000000..1d425cf7d7e25f81be64d32c406ff66cfb6c4766 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/log4j-1.2.17.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/lz4-java-1.7.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/lz4-java-1.7.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..95f57ca102eb37f7f1a911aa7d45f0ba58c60c9c Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/lz4-java-1.7.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/maven-artifact-3.6.3.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/maven-artifact-3.6.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..42c81115aa98ff96892a048b0ca93533b5bbfef6 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/maven-artifact-3.6.3.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/metrics-core-2.2.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/metrics-core-2.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..0f6d1cb0ecbd37f673bc87e109cacc535e23350a Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/metrics-core-2.2.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-buffer-4.1.62.Final.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-buffer-4.1.62.Final.jar new file mode 100644 index 0000000000000000000000000000000000000000..2f021341cc3c8318c058cb1343ec8d5b8f53e4fb Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-buffer-4.1.62.Final.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-codec-4.1.62.Final.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-codec-4.1.62.Final.jar new file mode 100644 index 0000000000000000000000000000000000000000..d637c6b933624a3d8fbf1259d86ad082a0ba580f Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-codec-4.1.62.Final.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-common-4.1.62.Final.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-common-4.1.62.Final.jar new file mode 100644 index 0000000000000000000000000000000000000000..b9c80a8efc70065d3f12462d45ea25acef260cc2 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-common-4.1.62.Final.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-handler-4.1.62.Final.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-handler-4.1.62.Final.jar new file mode 100644 index 0000000000000000000000000000000000000000..c28e942be8ef401f64434e5407cbbe36ac9eb0a1 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-handler-4.1.62.Final.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-resolver-4.1.62.Final.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-resolver-4.1.62.Final.jar new file mode 100644 index 0000000000000000000000000000000000000000..45e3662a7299a6e27128fc102c4a51346824c09e Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-resolver-4.1.62.Final.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-transport-4.1.62.Final.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-transport-4.1.62.Final.jar new file mode 100644 index 0000000000000000000000000000000000000000..e277f71afc865c510847223b534d25933331c03d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-transport-4.1.62.Final.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-transport-native-epoll-4.1.62.Final.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-transport-native-epoll-4.1.62.Final.jar new file mode 100644 index 0000000000000000000000000000000000000000..0d1ea389e28b4108b077c4a95adcec87b8eef411 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-transport-native-epoll-4.1.62.Final.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-transport-native-unix-common-4.1.62.Final.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-transport-native-unix-common-4.1.62.Final.jar new file mode 100644 index 0000000000000000000000000000000000000000..66e66cc1c58d302046c31c0637f4b5c0c930c83a Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/netty-transport-native-unix-common-4.1.62.Final.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/osgi-resource-locator-1.0.3.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/osgi-resource-locator-1.0.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..0f3c38653fb6182b0833f554340dd0c7ca7c4093 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/osgi-resource-locator-1.0.3.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/paranamer-2.8.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/paranamer-2.8.jar new file mode 100644 index 0000000000000000000000000000000000000000..0bf659b93e74bb53003bc521f59c855d0ab8e692 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/paranamer-2.8.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/plexus-utils-3.2.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/plexus-utils-3.2.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..d749dd7256acf0748f47ffcb88df78f9e113a7e4 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/plexus-utils-3.2.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/reflections-0.9.12.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/reflections-0.9.12.jar new file mode 100644 index 0000000000000000000000000000000000000000..0f176b914126b6893fa8ae34ce21b2d710f60cae Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/reflections-0.9.12.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/rocksdbjni-5.18.4.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/rocksdbjni-5.18.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..86ddb6e01d843af1956f1fbc4d070d056cc00a8c Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/rocksdbjni-5.18.4.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-collection-compat_2.13-2.3.0.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-collection-compat_2.13-2.3.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..cf5a1ea639da93205480fd3cb02a9ef537b9629d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-collection-compat_2.13-2.3.0.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-java8-compat_2.13-0.9.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-java8-compat_2.13-0.9.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..506333953adecdf8929446e1b69a32f1fa606230 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-java8-compat_2.13-0.9.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-library-2.13.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-library-2.13.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..1eb317d14db71a69da63d378882e093937b31b8d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-library-2.13.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-logging_2.13-3.9.2.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-logging_2.13-3.9.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..1e4465168d033a52bec61ac3fdd5f430a61ecb6a Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-logging_2.13-3.9.2.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-reflect-2.13.5.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-reflect-2.13.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..ebd9e242e32320d733eb07ee6043f54f8f8b39e1 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/scala-reflect-2.13.5.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/slf4j-api-1.7.30.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/slf4j-api-1.7.30.jar new file mode 100644 index 0000000000000000000000000000000000000000..29ac26fb8cad7ef5934377a8c269c4e521520e5c Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/slf4j-api-1.7.30.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/slf4j-log4j12-1.7.30.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/slf4j-log4j12-1.7.30.jar new file mode 100644 index 0000000000000000000000000000000000000000..c6bc8b2efe5f92db94964defab9a80818758d613 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/slf4j-log4j12-1.7.30.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/snappy-java-1.1.8.1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/snappy-java-1.1.8.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..896967f9bd87c47505c0bf7b22512e675acd8510 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/snappy-java-1.1.8.1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/zookeeper-3.5.9.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/zookeeper-3.5.9.jar new file mode 100644 index 0000000000000000000000000000000000000000..f5eceaab89c99f8ebff3aeaf82dfc9355e7bb80e Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/zookeeper-3.5.9.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/zookeeper-jute-3.5.9.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/zookeeper-jute-3.5.9.jar new file mode 100644 index 0000000000000000000000000000000000000000..3c9c184a068aa5efdf64ba7767acd543653463d6 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/zookeeper-jute-3.5.9.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/libs/zstd-jni-1.4.9-1.jar b/hackfest/kafka/kafka_2.13-2.8.0/libs/zstd-jni-1.4.9-1.jar new file mode 100644 index 0000000000000000000000000000000000000000..5e88a7b99f71cf7ebe742c611187c99f5b41746d Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/libs/zstd-jni-1.4.9-1.jar differ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/licenses/CDDL+GPL-1.1 b/hackfest/kafka/kafka_2.13-2.8.0/licenses/CDDL+GPL-1.1 new file mode 100644 index 0000000000000000000000000000000000000000..4b156e6e78b43d59b07391bda0e39b62ca2f4e29 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/licenses/CDDL+GPL-1.1 @@ -0,0 +1,760 @@ +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1 + +1. Definitions. + + 1.1. "Contributor" means each individual or entity that creates or + contributes to the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Software, prior Modifications used by a Contributor (if any), and + the Modifications made by that particular Contributor. + + 1.3. "Covered Software" means (a) the Original Software, or (b) + Modifications, or (c) the combination of files containing Original + Software with files containing Modifications, in each case including + portions thereof. + + 1.4. "Executable" means the Covered Software in any form other than + Source Code. + + 1.5. "Initial Developer" means the individual or entity that first + makes Original Software available under this License. + + 1.6. "Larger Work" means a work which combines Covered Software or + portions thereof with code not governed by the terms of this License. + + 1.7. "License" means this document. + + 1.8. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means the Source Code and Executable form of + any of the following: + + A. Any file that results from an addition to, deletion from or + modification of the contents of a file containing Original Software + or previous Modifications; + + B. Any new file that contains any part of the Original Software or + previous Modification; or + + C. Any new file that is contributed or otherwise made available + under the terms of this License. + + 1.10. "Original Software" means the Source Code and Executable form + of computer software code that is originally released under this + License. + + 1.11. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.12. "Source Code" means (a) the common form of computer software + code in which modifications are made and (b) associated + documentation included in or with such code. + + 1.13. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, + this License. For legal entities, "You" includes any entity which + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants. + + 2.1. The Initial Developer Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject + to third party intellectual property claims, the Initial Developer + hereby grants You a world-wide, royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer, to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Software (or portions thereof), with or without Modifications, + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using or selling of + Original Software, to make, have made, use, practice, sell, and + offer for sale, and/or otherwise dispose of the Original Software + (or portions thereof). + + (c) The licenses granted in Sections 2.1(a) and (b) are effective on + the date Initial Developer first distributes or otherwise makes the + Original Software available to a third party under the terms of this + License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: (1) for code that You delete from the Original Software, or + (2) for infringements caused by: (i) the modification of the + Original Software, or (ii) the combination of the Original Software + with other software or devices. + + 2.2. Contributor Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject + to third party intellectual property claims, each Contributor hereby + grants You a world-wide, royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof), either on an + unmodified basis, with other Modifications, as Covered Software + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or selling + of Modifications made by that Contributor either alone and/or in + combination with its Contributor Version (or portions of such + combination), to make, use, sell, offer for sale, have made, and/or + otherwise dispose of: (1) Modifications made by that Contributor (or + portions thereof); and (2) the combination of Modifications made by + that Contributor with its Contributor Version (or portions of such + combination). + + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective + on the date Contributor first distributes or otherwise makes the + Modifications available to a third party. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: (1) for any code that Contributor has deleted from the + Contributor Version; (2) for infringements caused by: (i) third + party modifications of Contributor Version, or (ii) the combination + of Modifications made by that Contributor with other software + (except as part of the Contributor Version) or other devices; or (3) + under Patent Claims infringed by Covered Software in the absence of + Modifications made by that Contributor. + +3. Distribution Obligations. + + 3.1. Availability of Source Code. + + Any Covered Software that You distribute or otherwise make available + in Executable form must also be made available in Source Code form + and that Source Code form must be distributed only under the terms + of this License. You must include a copy of this License with every + copy of the Source Code form of the Covered Software You distribute + or otherwise make available. You must inform recipients of any such + Covered Software in Executable form as to how they can obtain such + Covered Software in Source Code form in a reasonable manner on or + through a medium customarily used for software exchange. + + 3.2. Modifications. + + The Modifications that You create or to which You contribute are + governed by the terms of this License. You represent that You + believe Your Modifications are Your original creation(s) and/or You + have sufficient rights to grant the rights conveyed by this License. + + 3.3. Required Notices. + + You must include a notice in each of Your Modifications that + identifies You as the Contributor of the Modification. You may not + remove or alter any copyright, patent or trademark notices contained + within the Covered Software, or any notices of licensing or any + descriptive text giving attribution to any Contributor or the + Initial Developer. + + 3.4. Application of Additional Terms. + + You may not offer or impose any terms on any Covered Software in + Source Code form that alters or restricts the applicable version of + this License or the recipients' rights hereunder. You may choose to + offer, and to charge a fee for, warranty, support, indemnity or + liability obligations to one or more recipients of Covered Software. + However, you may do so only on Your own behalf, and not on behalf of + the Initial Developer or any Contributor. You must make it + absolutely clear that any such warranty, support, indemnity or + liability obligation is offered by You alone, and You hereby agree + to indemnify the Initial Developer and every Contributor for any + liability incurred by the Initial Developer or such Contributor as a + result of warranty, support, indemnity or liability terms You offer. + + 3.5. Distribution of Executable Versions. + + You may distribute the Executable form of the Covered Software under + the terms of this License or under the terms of a license of Your + choice, which may contain terms different from this License, + provided that You are in compliance with the terms of this License + and that the license for the Executable form does not attempt to + limit or alter the recipient's rights in the Source Code form from + the rights set forth in this License. If You distribute the Covered + Software in Executable form under a different license, You must make + it absolutely clear that any terms which differ from this License + are offered by You alone, not by the Initial Developer or + Contributor. You hereby agree to indemnify the Initial Developer and + every Contributor for any liability incurred by the Initial + Developer or such Contributor as a result of any such terms You offer. + + 3.6. Larger Works. + + You may create a Larger Work by combining Covered Software with + other code not governed by the terms of this License and distribute + the Larger Work as a single product. In such a case, You must make + sure the requirements of this License are fulfilled for the Covered + Software. + +4. Versions of the License. + + 4.1. New Versions. + + Oracle is the initial license steward and may publish revised and/or + new versions of this License from time to time. Each version will be + given a distinguishing version number. Except as provided in Section + 4.3, no one other than the license steward has the right to modify + this License. + + 4.2. Effect of New Versions. + + You may always continue to use, distribute or otherwise make the + Covered Software available under the terms of the version of the + License under which You originally received the Covered Software. If + the Initial Developer includes a notice in the Original Software + prohibiting it from being distributed or otherwise made available + under any subsequent version of the License, You must distribute and + make the Covered Software available under the terms of the version + of the License under which You originally received the Covered + Software. Otherwise, You may also choose to use, distribute or + otherwise make the Covered Software available under the terms of any + subsequent version of the License published by the license steward. + + 4.3. Modified Versions. + + When You are an Initial Developer and You want to create a new + license for Your Original Software, You may create and use a + modified version of this License if You: (a) rename the license and + remove any references to the name of the license steward (except to + note that the license differs from this License); and (b) otherwise + make it clear that the license contains terms which differ from this + License. + +5. DISCLAIMER OF WARRANTY. + + COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, + INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE + IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR + NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF + THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE + DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY + OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, + REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN + ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS + AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +6. TERMINATION. + + 6.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to + cure such breach within 30 days of becoming aware of the breach. + Provisions which, by their nature, must remain in effect beyond the + termination of this License shall survive. + + 6.2. If You assert a patent infringement claim (excluding + declaratory judgment actions) against Initial Developer or a + Contributor (the Initial Developer or Contributor against whom You + assert such claim is referred to as "Participant") alleging that the + Participant Software (meaning the Contributor Version where the + Participant is a Contributor or the Original Software where the + Participant is the Initial Developer) directly or indirectly + infringes any patent, then any and all rights granted directly or + indirectly to You by such Participant, the Initial Developer (if the + Initial Developer is not the Participant) and all Contributors under + Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice + from Participant terminate prospectively and automatically at the + expiration of such 60 day notice period, unless if within such 60 + day period You withdraw Your claim with respect to the Participant + Software against such Participant either unilaterally or pursuant to + a written agreement with Participant. + + 6.3. If You assert a patent infringement claim against Participant + alleging that the Participant Software directly or indirectly + infringes any patent where such claim is resolved (such as by + license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 6.4. In the event of termination under Sections 6.1 or 6.2 above, + all end user licenses that have been validly granted by You or any + distributor hereunder prior to termination (excluding licenses + granted to You by any distributor) shall survive termination. + +7. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE + INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF + COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE + TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR + CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT + LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER + FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR + LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE + POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT + APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH + PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH + LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR + LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION + AND LIMITATION MAY NOT APPLY TO YOU. + +8. U.S. GOVERNMENT END USERS. + + The Covered Software is a "commercial item," as that term is defined + in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" (as that term is defined at 48 C.F.R. § + 252.227-7014(a)(1)) and "commercial computer software documentation" + as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent + with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 + (June 1995), all U.S. Government End Users acquire Covered Software + with only those rights set forth herein. This U.S. Government Rights + clause is in lieu of, and supersedes, any other FAR, DFAR, or other + clause or provision that addresses Government rights in computer + software under this License. + +9. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + the law of the jurisdiction specified in a notice contained within + the Original Software (except to the extent applicable law, if any, + provides otherwise), excluding such jurisdiction's conflict-of-law + provisions. Any litigation relating to this License shall be subject + to the jurisdiction of the courts located in the jurisdiction and + venue specified in a notice contained within the Original Software, + with the losing party responsible for costs, including, without + limitation, court costs and reasonable attorneys' fees and expenses. + The application of the United Nations Convention on Contracts for + the International Sale of Goods is expressly excluded. Any law or + regulation which provides that the language of a contract shall be + construed against the drafter shall not apply to this License. You + agree that You alone are responsible for compliance with the United + States export administration regulations (and the export control + laws and regulation of any other countries) when You use, distribute + or otherwise make available any Covered Software. + +10. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +------------------------------------------------------------------------ + +NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION +LICENSE (CDDL) + +The code released under the CDDL shall be governed by the laws of the +State of California (excluding conflict-of-law provisions). Any +litigation relating to this License shall be subject to the jurisdiction +of the Federal Courts of the Northern District of California and the +state courts of the State of California, with venue lying in Santa Clara +County, California. + + + + The GNU General Public License (GPL) Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor +Boston, MA 02110-1335 +USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free software--to +make sure the software is free for all its users. This General Public +License applies to most of the Free Software Foundation's software and +to any other program whose authors commit to using it. (Some other Free +Software Foundation software is covered by the GNU Library General +Public License instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. +Our General Public Licenses are designed to make sure that you have the +freedom to distribute copies of free software (and charge for this +service if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone +to deny you these rights or to ask you to surrender the rights. These +restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis +or for a fee, you must give the recipients all the rights that you have. +You must make sure that they, too, receive or can get the source code. +And you must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + +Finally, any free program is threatened constantly by software patents. +We wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program +proprietary. To prevent this, we have made it clear that any patent must +be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and +modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a +notice placed by the copyright holder saying it may be distributed under +the terms of this General Public License. The "Program", below, refers +to any such program or work, and a "work based on the Program" means +either the Program or any derivative work under copyright law: that is +to say, a work containing the Program or a portion of it, either +verbatim or with modifications and/or translated into another language. +(Hereinafter, translation is included without limitation in the term +"modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of running +the Program is not restricted, and the output from the Program is +covered only if its contents constitute a work based on the Program +(independent of having been made by running the Program). Whether that +is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously +and appropriately publish on each copy an appropriate copyright notice +and disclaimer of warranty; keep intact all the notices that refer to +this License and to the absence of any warranty; and give any other +recipients of the Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of +it, thus forming a work based on the Program, and copy and distribute +such modifications or work under the terms of Section 1 above, provided +that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any part + thereof, to be licensed as a whole at no charge to all third parties + under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this License. + (Exception: if the Program itself is interactive but does not + normally print such an announcement, your work based on the Program + is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, and +can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based on +the Program, the distribution of the whole must be on the terms of this +License, whose permissions for other licensees extend to the entire +whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of a +storage or distribution medium does not bring the other work under the +scope of this License. + +3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your cost + of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed + only for noncommercial distribution and only if you received the + program in object code or executable form with such an offer, in + accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source code +means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to control +compilation and installation of the executable. However, as a special +exception, the source code distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies the +executable. + +If distribution of executable or object code is made by offering access +to copy from a designated place, then offering equivalent access to copy +the source code from the same place counts as distribution of the source +code, even though third parties are not compelled to copy the source +along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt otherwise +to copy, modify, sublicense or distribute the Program is void, and will +automatically terminate your rights under this License. However, parties +who have received copies, or rights, from you under this License will +not have their licenses terminated so long as such parties remain in +full compliance. + +5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and all +its terms and conditions for copying, distributing or modifying the +Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further restrictions +on the recipients' exercise of the rights granted herein. You are not +responsible for enforcing compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot distribute +so as to satisfy simultaneously your obligations under this License and +any other pertinent obligations, then as a consequence you may not +distribute the Program at all. For example, if a patent license would +not permit royalty-free redistribution of the Program by all those who +receive copies directly or indirectly through you, then the only way you +could satisfy both it and this License would be to refrain entirely from +distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is implemented +by public license practices. Many people have made generous +contributions to the wide range of software distributed through that +system in reliance on consistent application of that system; it is up to +the author/donor to decide if he or she is willing to distribute +software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be +a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License may +add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among countries +not thus excluded. In such case, this License incorporates the +limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new +versions of the General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Program does not specify a version +number of this License, you may choose any version ever published by the +Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the +author to ask for permission. For software which is copyrighted by the +Free Software Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be guided by the +two goals of preserving the free status of all derivatives of our free +software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE +ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH +YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL +NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR +DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL +DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM +(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF +THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR +OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + One line to give the program's name and a brief idea of what it does. + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type + `show w'. This is free software, and you are welcome to redistribute + it under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the commands +you use may be called something other than `show w' and `show c'; they +could even be mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (which makes passes at compilers) written by + James Hacker. + + signature of Ty Coon, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications +with the library. If this is what you want to do, use the GNU Library +General Public License instead of this License. + +# + +Certain source files distributed by Oracle America, Inc. and/or its +affiliates are subject to the following clarification and special +exception to the GPLv2, based on the GNU Project exception for its +Classpath libraries, known as the GNU Classpath Exception, but only +where Oracle has expressly included in the particular source file's +header the words "Oracle designates this particular file as subject to +the "Classpath" exception as provided by Oracle in the LICENSE file +that accompanied this code." + +You should also note that Oracle includes multiple, independent +programs in this software package. Some of those programs are provided +under licenses deemed incompatible with the GPLv2 by the Free Software +Foundation and others. For example, the package includes programs +licensed under the Apache License, Version 2.0. Such programs are +licensed to you under their original licenses. + +Oracle facilitates your further distribution of this package by adding +the Classpath Exception to the necessary parts of its GPLv2 code, which +permits you to use that code in combination with other independent +modules not licensed under the GPLv2. However, note that this would +not permit you to commingle code under an incompatible license with +Oracle's GPLv2 licensed code by, for example, cutting and pasting such +code into a file also containing Oracle's GPLv2 licensed code and then +distributing the result. Additionally, if you were to remove the +Classpath Exception from any of the files to which it applies and +distribute the result, you would likely be required to license some or +all of the other code in that distribution under the GPLv2 as well, and +since the GPLv2 is incompatible with the license terms of some items +included in the distribution by Oracle, removing the Classpath +Exception could therefore effectively compromise your ability to +further distribute the package. + +Proceed with caution and we recommend that you obtain the advice of a +lawyer skilled in open source matters before removing the Classpath +Exception or making modifications to this package which may +subsequently be redistributed and/or involve the use of third party +software. + +CLASSPATH EXCEPTION +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License version 2 cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from or +based on this library. If you modify this library, you may extend this +exception to your version of the library, but you are not obligated to +do so. If you do not wish to do so, delete this exception statement +from your version. + diff --git a/hackfest/kafka/kafka_2.13-2.8.0/licenses/DWTFYWTPL b/hackfest/kafka/kafka_2.13-2.8.0/licenses/DWTFYWTPL new file mode 100644 index 0000000000000000000000000000000000000000..5a8e332545f667aab9bf3a17f11dba27c70b656a --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/licenses/DWTFYWTPL @@ -0,0 +1,14 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/hackfest/kafka/kafka_2.13-2.8.0/licenses/argparse-MIT b/hackfest/kafka/kafka_2.13-2.8.0/licenses/argparse-MIT new file mode 100644 index 0000000000000000000000000000000000000000..773b0df0e35919182940e77905607e6219243028 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/licenses/argparse-MIT @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2011-2017 Tatsuhiro Tsujikawa + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/licenses/eclipse-distribution-license-1.0 b/hackfest/kafka/kafka_2.13-2.8.0/licenses/eclipse-distribution-license-1.0 new file mode 100644 index 0000000000000000000000000000000000000000..5f06513abf5fedd6b0d480ab36a2f941ba1b4545 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/licenses/eclipse-distribution-license-1.0 @@ -0,0 +1,13 @@ +Eclipse Distribution License - v 1.0 + +Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of the Eclipse Foundation, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/hackfest/kafka/kafka_2.13-2.8.0/licenses/eclipse-public-license-2.0 b/hackfest/kafka/kafka_2.13-2.8.0/licenses/eclipse-public-license-2.0 new file mode 100644 index 0000000000000000000000000000000000000000..c9f1425f82d02665b3ecd4d24b84e86437e7ea8a --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/licenses/eclipse-public-license-2.0 @@ -0,0 +1,87 @@ +Eclipse Public License - v 2.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. +1. DEFINITIONS + +“Contribution” means: + + a) in the case of the initial Contributor, the initial content Distributed under this Agreement, and + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from and are Distributed by that particular Contributor. A Contribution “originates” from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include changes or additions to the Program that are not Modified Works. + +“Contributor” means any person or entity that Distributes the Program. + +“Licensed Patents” mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. + +“Program” means the Contributions Distributed in accordance with this Agreement. + +“Recipient” means anyone who receives the Program under this Agreement or any Secondary License (as applicable), including Contributors. + +“Derivative Works” shall mean any work, whether in Source Code or other form, that is based on (or derived from) the Program and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. + +“Modified Works” shall mean any work in Source Code or other form that results from an addition to, deletion from, or modification of the contents of the Program, including, for purposes of clarity any new file in Source Code form that contains any contents of the Program. Modified Works shall not include works that contain only declarations, interfaces, types, classes, structures, or files of the Program solely in each case in order to link to, bind by name, or subclass the Program or Modified Works thereof. + +“Distribute” means the acts of a) distributing or b) making available in any manner that enables the transfer of a copy. + +“Source Code” means the form of a Program preferred for making modifications, including but not limited to software source code, documentation source, and configuration files. + +“Secondary License” means either the GNU General Public License, Version 2.0, or any later versions of that license, including any exceptions or additional permissions as identified by the initial Contributor. +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, Distribute and sublicense the Contribution of such Contributor, if any, and such Derivative Works. + b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in Source Code or other form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to Distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. + d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. + e) Notwithstanding the terms of any Secondary License, no Contributor makes additional grants to any Recipient (other than those set forth in this Agreement) as a result of such Recipient's receipt of the Program under the terms of a Secondary License (if permitted under the terms of Section 3). + +3. REQUIREMENTS + +3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in accordance with section 3.2, and the Contributor must accompany the Program with a statement that the Source Code for the Program is available under this Agreement, and informs Recipients how to obtain it in a reasonable manner on or through a medium customarily used for software exchange; and + b) the Contributor may Distribute the Program under a license different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; + ii) effectively excludes on behalf of all other Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; + iii) does not attempt to limit or alter the recipients' rights in the Source Code under section 3.2; and + iv) requires any subsequent distribution of the Program by any party to be under a license that satisfies the requirements of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the Program (i) is combined with other material in a separate file or files made available under a Secondary License, and (ii) the initial Contributor attached to the Source Code the notice described in Exhibit A of this Agreement, then the Program may be made available under the terms of such Secondary Licenses, and + b) a copy of this Agreement must be included with each copy of the Program. + +3.3 Contributors may not remove or alter any copyright, patent, trademark, attribution notices, disclaimers of warranty, or limitations of liability (‘notices’) contained within the Program from any copy of the Program which they Distribute, provided that Contributors may add their own appropriate notices. +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (“Commercial Contributor”) hereby agrees to defend and indemnify every other Contributor (“Indemnified Contributor”) against any losses, damages and costs (collectively “Losses”) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be Distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to Distribute the Program (including its Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. Nothing in this Agreement is intended to be enforceable by any entity that is not a Contributor or Recipient. No third-party beneficiary rights are created under this Agreement. +Exhibit A – Form of Secondary Licenses Notice + +“This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), version(s), and exceptions or additional permissions here}.” + + Simply including a copy of this Agreement, including this Exhibit A is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. + + You may add additional accurate notices of copyright ownership. + diff --git a/hackfest/kafka/kafka_2.13-2.8.0/licenses/jopt-simple-MIT b/hackfest/kafka/kafka_2.13-2.8.0/licenses/jopt-simple-MIT new file mode 100644 index 0000000000000000000000000000000000000000..54b27325bb6b2b92043e23932329dc2ef107e291 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/licenses/jopt-simple-MIT @@ -0,0 +1,24 @@ +/* + The MIT License + + Copyright (c) 2004-2016 Paul R. Holser, Jr. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ diff --git a/hackfest/kafka/kafka_2.13-2.8.0/licenses/paranamer-BSD-3-clause b/hackfest/kafka/kafka_2.13-2.8.0/licenses/paranamer-BSD-3-clause new file mode 100644 index 0000000000000000000000000000000000000000..9eab87918636a2933a9e780689d08839f515c898 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/licenses/paranamer-BSD-3-clause @@ -0,0 +1,29 @@ +[ ParaNamer used to be 'Pubic Domain', but since it includes a small piece of ASM it is now the same license as that: BSD ] + + Portions copyright (c) 2006-2018 Paul Hammant & ThoughtWorks Inc + Portions copyright (c) 2000-2007 INRIA, France Telecom + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. diff --git a/hackfest/kafka/kafka_2.13-2.8.0/licenses/slf4j-MIT b/hackfest/kafka/kafka_2.13-2.8.0/licenses/slf4j-MIT new file mode 100644 index 0000000000000000000000000000000000000000..315bd4979f1558116a47bf33cea913c2b60c39f3 --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/licenses/slf4j-MIT @@ -0,0 +1,24 @@ +Copyright (c) 2004-2017 QOS.ch +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + diff --git a/hackfest/kafka/kafka_2.13-2.8.0/licenses/zstd-jni-BSD-2-clause b/hackfest/kafka/kafka_2.13-2.8.0/licenses/zstd-jni-BSD-2-clause new file mode 100644 index 0000000000000000000000000000000000000000..66abb8ae782c862428611d37f6c646cf9cc50fca --- /dev/null +++ b/hackfest/kafka/kafka_2.13-2.8.0/licenses/zstd-jni-BSD-2-clause @@ -0,0 +1,26 @@ +Zstd-jni: JNI bindings to Zstd Library + +Copyright (c) 2015-present, Luben Karavelov/ All rights reserved. + +BSD License + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/hackfest/kafka/kafka_2.13-2.8.0/logs/.gitkeep b/hackfest/kafka/kafka_2.13-2.8.0/logs/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/hackfest/kafka/kafka_2.13-2.8.0/site-docs/kafka_2.13-2.8.0-site-docs.tgz b/hackfest/kafka/kafka_2.13-2.8.0/site-docs/kafka_2.13-2.8.0-site-docs.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0d17c747bb0dad60e3815b7073d8b6a0c3c0cdc6 Binary files /dev/null and b/hackfest/kafka/kafka_2.13-2.8.0/site-docs/kafka_2.13-2.8.0-site-docs.tgz differ diff --git a/hackfest/kafka/pub.py b/hackfest/kafka/pub.py new file mode 100644 index 0000000000000000000000000000000000000000..12d3dc2ddef1a9da4396893b72d99d6afc322076 --- /dev/null +++ b/hackfest/kafka/pub.py @@ -0,0 +1,12 @@ +from time import sleep +from json import dumps +from kafka import KafkaProducer + +producer = KafkaProducer(bootstrap_servers=['localhost:9092'], + value_serializer=lambda x: + dumps(x).encode('utf-8')) + +for e in range(10): + data = {'number' : e} + producer.send('my-topic', value=data) + sleep(5) diff --git a/hackfest/kafka/sub.py b/hackfest/kafka/sub.py new file mode 100644 index 0000000000000000000000000000000000000000..f61ab4d47c157f957f670380a5bea2d2684940f8 --- /dev/null +++ b/hackfest/kafka/sub.py @@ -0,0 +1,16 @@ +from kafka import KafkaConsumer +from json import loads + +consumer = KafkaConsumer( + 'my-topic', + bootstrap_servers=['localhost:9092'], + auto_offset_reset='earliest', + enable_auto_commit=True, + group_id='my-group', + value_deserializer=lambda x: loads(x.decode('utf-8'))) + + +for message in consumer: + message = message.value + print('{} received'.format(message)) + diff --git a/src/compute/tests/mock_osm/MockOSM.py b/hackfest/mock_osm/MockOSM.py similarity index 100% rename from src/compute/tests/mock_osm/MockOSM.py rename to hackfest/mock_osm/MockOSM.py diff --git a/src/compute/tests/mock_osm/WimconnectorIETFL2VPN.py b/hackfest/mock_osm/WimconnectorIETFL2VPN.py similarity index 91% rename from src/compute/tests/mock_osm/WimconnectorIETFL2VPN.py rename to hackfest/mock_osm/WimconnectorIETFL2VPN.py index b9639e8046593c1dbf4017cff963ceb7c51d0532..e1273b4e483a06df23d94bdf107005ce7585fb5e 100644 --- a/src/compute/tests/mock_osm/WimconnectorIETFL2VPN.py +++ b/hackfest/mock_osm/WimconnectorIETFL2VPN.py @@ -33,6 +33,7 @@ the Layer 2 service. import requests import uuid import logging +import copy #from osm_ro_plugin.sdnconn import SdnConnectorBase, SdnConnectorError from .sdnconn import SdnConnectorBase, SdnConnectorError @@ -222,8 +223,29 @@ class WimconnectorIETFL2VPN(SdnConnectorBase): http_code=response_service_creation.status_code, ) - """Second step, create the connections and vpn attachments""" + self.logger.info('connection_points = {:s}'.format(str(connection_points))) + + # Check if protected paths are requested + extended_connection_points = [] for connection_point in connection_points: + extended_connection_points.append(connection_point) + + connection_point_wan_info = self.search_mapp(connection_point) + service_mapping_info = connection_point_wan_info.get('service_mapping_info', {}) + redundant_service_endpoint_ids = service_mapping_info.get('redundant') + + if redundant_service_endpoint_ids is None: continue + if len(redundant_service_endpoint_ids) == 0: continue + + for redundant_service_endpoint_id in redundant_service_endpoint_ids: + redundant_connection_point = copy.deepcopy(connection_point) + redundant_connection_point['service_endpoint_id'] = redundant_service_endpoint_id + extended_connection_points.append(redundant_connection_point) + + self.logger.info('extended_connection_points = {:s}'.format(str(extended_connection_points))) + + """Second step, create the connections and vpn attachments""" + for connection_point in extended_connection_points: connection_point_wan_info = self.search_mapp(connection_point) site_network_access = {} connection = {} @@ -264,6 +286,23 @@ class WimconnectorIETFL2VPN(SdnConnectorBase): site_network_access["bearer"] = connection_point_wan_info[ "service_mapping_info" ]["bearer"] + + access_priority = connection_point_wan_info["service_mapping_info"].get("priority") + if access_priority is not None: + availability = {} + availability["access-priority"] = access_priority + availability["single-active"] = [None] + site_network_access["availability"] = availability + + constraint = {} + constraint['constraint-type'] = 'end-to-end-diverse' + constraint['target'] = {'all-other-accesses': [None]} + + access_diversity = {} + access_diversity['constraints'] = {'constraint': []} + access_diversity['constraints']['constraint'].append(constraint) + site_network_access["access-diversity"] = access_diversity + site_network_accesses = {} site_network_access_list = [] site_network_access_list.append(site_network_access) @@ -332,7 +371,7 @@ class WimconnectorIETFL2VPN(SdnConnectorBase): self.delete_connectivity_service(vpn_service["vpn-id"]) raise SdnConnectorError( - "Request no accepted", + "Request not accepted", http_code=response_endpoint_site_network_access_creation.status_code, ) except requests.exceptions.ConnectionError: diff --git a/src/common/rpc_method_wrapper/__init__.py b/hackfest/mock_osm/__init__.py similarity index 100% rename from src/common/rpc_method_wrapper/__init__.py rename to hackfest/mock_osm/__init__.py diff --git a/hackfest/mock_osm/__main__.py b/hackfest/mock_osm/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..e76616eab38cc072f959231e08743e312cf6b0b2 --- /dev/null +++ b/hackfest/mock_osm/__main__.py @@ -0,0 +1,94 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import cmd, logging +from .MockOSM import MockOSM + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +WIM_URL = 'http://10.0.2.15:80' +WIM_USERNAME = 'admin' +WIM_PASSWORD = 'admin' + +# Ref: https://osm.etsi.org/wikipub/index.php/WIM +def create_port_mapping(device_id, port_id, service_endpoint_id, site_id): + bearer_ref = '{:s}:{:s}'.format(device_id, port_id) + return { + 'device-id' : device_id, # pop_switch_dpid + 'service_endpoint_id' : service_endpoint_id, # wan_service_endpoint_id + 'service_mapping_info': { # wan_service_mapping_info, other extra info + 'bearer': {'bearer-reference': bearer_ref}, + 'site-id': site_id, + }, + } + +WIM_PORT_MAPPING = [ + create_port_mapping('R1', '1/2', 'ep-R1-1/2', '1'), + create_port_mapping('R1', '1/3', 'ep-R1-1/3', '1'), + create_port_mapping('R2', '1/2', 'ep-R2-1/2', '2'), + create_port_mapping('R2', '1/3', 'ep-R2-1/3', '2'), + create_port_mapping('R3', '1/2', 'ep-R3-1/2', '3'), + create_port_mapping('R3', '1/3', 'ep-R3-1/3', '3'), + create_port_mapping('R4', '1/2', 'ep-R4-1/2', '4'), + create_port_mapping('R4', '1/3', 'ep-R4-1/3', '4'), +] + +SERVICE_TYPE = 'ELINE' +SERVICE_CONNECTION_POINTS = [ + {'service_endpoint_id': 'ep-R1-1/2', + 'service_endpoint_encapsulation_type': 'dot1q', + 'service_endpoint_encapsulation_info': {'vlan': 1234}}, + {'service_endpoint_id': 'ep-R4-1/3', + 'service_endpoint_encapsulation_type': 'dot1q', + 'service_endpoint_encapsulation_info': {'vlan': 1234}}, +] + +class MockOSMShell(cmd.Cmd): + intro = 'Welcome to the MockOSM shell.\nType help or ? to list commands.\n' + prompt = '(mock-osm) ' + file = None + + def __init__(self, *args, **kwargs) -> None: + super().__init__(*args, **kwargs) + self.mock_osm = MockOSM(WIM_URL, WIM_PORT_MAPPING, WIM_USERNAME, WIM_PASSWORD) + + # ----- basic turtle commands ----- + def do_create(self, arg): + 'Create an ELINE (L2) service' + service_uuid = self.mock_osm.create_connectivity_service( + SERVICE_TYPE, SERVICE_CONNECTION_POINTS) + print('Service {:s} created'.format(service_uuid)) + + def do_status(self, arg): + 'Retrieve status of services' + service_uuids = list(self.mock_osm.conn_info.keys()) + for service_uuid in service_uuids: + status = self.mock_osm.get_connectivity_service_status(service_uuid) + print('Status of Service {:s} is {:s}'.format(service_uuid, str(status))) + + def do_delete(self, arg): + 'Delete all services' + service_uuids = list(self.mock_osm.conn_info.keys()) + for service_uuid in service_uuids: + self.mock_osm.delete_connectivity_service(service_uuid) + print('Service {:s} deleted'.format(service_uuid)) + + def do_exit(self, arg): + 'Exit MockOSM' + print('Bye!') + return True + +if __name__ == '__main__': + MockOSMShell().cmdloop() diff --git a/src/compute/tests/mock_osm/acknowledgements.txt b/hackfest/mock_osm/acknowledgements.txt similarity index 100% rename from src/compute/tests/mock_osm/acknowledgements.txt rename to hackfest/mock_osm/acknowledgements.txt diff --git a/hackfest/mock_osm/commands.txt b/hackfest/mock_osm/commands.txt new file mode 100644 index 0000000000000000000000000000000000000000..4e21bac3d668f6f6b1c20ceb485d3a4ad679f95e --- /dev/null +++ b/hackfest/mock_osm/commands.txt @@ -0,0 +1,25 @@ +############ +# Mock OSM +############ + +$ cd ~/tfs-ctrl/hackfest/ +$ python -m mock_osm +Welcome to the MockOSM shell. +Type help or ? to list commands. + +(mock-osm) create +Service b8c99e2c-39d8-424d-9833-554634269555 created +# Service should be created in TFS. Check "Slice" and "Service" pages on WebUI. +# Check configuration rules in "Devices" + +(mock-osm) status +response.status_code=200 +Status of Service b8c99e2c-39d8-424d-9833-554634269555 is {'sdn_status': 'ACTIVE'} + +(mock-osm) delete +Service b8c99e2c-39d8-424d-9833-554634269555 deleted +# Service should be removed from TFS. Check "Slice" and "Service" pages on WebUI. +# Check configuration rules in "Devices" + +(mock-osm) exit +Bye! diff --git a/src/compute/tests/mock_osm/sdnconn.py b/hackfest/mock_osm/sdnconn.py similarity index 100% rename from src/compute/tests/mock_osm/sdnconn.py rename to hackfest/mock_osm/sdnconn.py diff --git a/hackfest/netconf-oc/build-instructions.txt b/hackfest/netconf-oc/build-instructions.txt new file mode 100644 index 0000000000000000000000000000000000000000..c485bc006d25244d170f6c515ea985d7cec6d75b --- /dev/null +++ b/hackfest/netconf-oc/build-instructions.txt @@ -0,0 +1,14 @@ +# Build a Netconf server supporting basic OpenConfig data model + +mkdir -p ~/tfs-ctrl/netconf-oc/{git_openconfig,openconfig} + +git clone https://github.com/openconfig/public.git ~/tfs-ctrl/netconf-oc/git_openconfig + +cd ~/tfs-ctrl/netconf-oc + +export PYBINDPLUGIN=`/usr/bin/env python -c 'import pyangbind; import os; print ("{}/plugin".format(os.path.dirname(pyangbind.__file__)))'` +pyang --plugindir $PYBINDPLUGIN -p git_openconfig/release/models/ -f pybind --split-class-dir openconfig \ + git_openconfig/release/models/interfaces/openconfig-interfaces.yang \ + git_openconfig/release/models/interfaces/openconfig-if-ethernet.yang \ + git_openconfig/release/models/platform/openconfig-platform.yang \ + git_openconfig/release/models/platform/openconfig-platform-port.yang diff --git a/hackfest/netconf-oc/device_definition.py b/hackfest/netconf-oc/device_definition.py new file mode 100644 index 0000000000000000000000000000000000000000..15efdee42794ebba474ed4a1c5573e6ed5b688a1 --- /dev/null +++ b/hackfest/netconf-oc/device_definition.py @@ -0,0 +1,24 @@ +from lxml import etree +from netconf import util +from pyangbind.lib.serialise import pybindIETFXMLEncoder + +from openconfig.components import components +from openconfig.interfaces import interfaces + +def get_device_definition(): + occ = components() + port_1_1 = occ.component.add("1/1") + port_1_1.state._set_type("PORT") # state.type is read-only; use special method to set it + + port_1_2 = occ.component.add("1/2") + port_1_2.state._set_type("PORT") # state.type is read-only; use special method to set it + + port_1_3 = occ.component.add("1/3") + port_1_3.state._set_type("PORT") # state.type is read-only; use special method to set it + + ocif = interfaces() + + data = util.elm("nc:data") + data.append(etree.XML(pybindIETFXMLEncoder.serialise(occ))) + data.append(etree.XML(pybindIETFXMLEncoder.serialise(ocif))) + return data diff --git a/hackfest/netconf-oc/interfaces.xml b/hackfest/netconf-oc/interfaces.xml new file mode 100644 index 0000000000000000000000000000000000000000..8358a0595573953b61c28f0deeca2e99d554f4ce --- /dev/null +++ b/hackfest/netconf-oc/interfaces.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hackfest/netconf-oc/openconfig/__init__.py b/hackfest/netconf-oc/openconfig/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..ccaf6ed7248d84e4f7b154ceb40c906debe512b8 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/__init__.py @@ -0,0 +1,399 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import interfaces +class openconfig_interfaces(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /openconfig-interfaces. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Model for managing network interfaces and subinterfaces. This +module also defines convenience types / groupings for other +models to create references to interfaces: + + base-interface-ref (type) - reference to a base interface + interface-ref (grouping) - container for reference to a + interface + subinterface + interface-ref-state (grouping) - container for read-only + (opstate) reference to interface + subinterface + +This model reuses data items defined in the IETF YANG model for +interfaces described by RFC 7223 with an alternate structure +(particularly for operational state data) and with +additional configuration items. + +Portions of this code were derived from IETF RFC 7223. +Please reproduce this note if possible. + +IETF code is subject to the following copyright and license: +Copyright (c) IETF Trust and the persons identified as authors of +the code. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, is permitted pursuant to, and subject to the license +terms contained in, the Simplified BSD License set forth in +Section 4.c of the IETF Trust's Legal Provisions Relating +to IETF Documents (http://trustee.ietf.org/license-info). + """ + __slots__ = ('_path_helper', '_extmethods', '__interfaces',) + + _yang_name = 'openconfig-interfaces' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__interfaces = YANGDynClass(base=interfaces.interfaces, is_container='container', yang_name="interfaces", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [] + + def _get_interfaces(self): + """ + Getter method for interfaces, mapped from YANG variable /interfaces (container) + + YANG Description: Top level container for interfaces, including configuration +and state data. + """ + return self.__interfaces + + def _set_interfaces(self, v, load=False): + """ + Setter method for interfaces, mapped from YANG variable /interfaces (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_interfaces is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_interfaces() directly. + + YANG Description: Top level container for interfaces, including configuration +and state data. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=interfaces.interfaces, is_container='container', yang_name="interfaces", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """interfaces must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=interfaces.interfaces, is_container='container', yang_name="interfaces", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True)""", + }) + + self.__interfaces = t + if hasattr(self, '_set'): + self._set() + + def _unset_interfaces(self): + self.__interfaces = YANGDynClass(base=interfaces.interfaces, is_container='container', yang_name="interfaces", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + interfaces = __builtin__.property(_get_interfaces, _set_interfaces) + + + _pyangbind_elements = OrderedDict([('interfaces', interfaces), ]) + + +class openconfig_if_ethernet(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-if-ethernet - based on the path /openconfig-if-ethernet. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Model for managing Ethernet interfaces -- augments the OpenConfig +model for interface configuration and state. + """ + _pyangbind_elements = {} + + + +from . import components +class openconfig_platform(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /openconfig-platform. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This module defines a data model for representing a system +component inventory, which can include hardware or software +elements arranged in an arbitrary structure. The primary +relationship supported by the model is containment, e.g., +components containing subcomponents. + +It is expected that this model reflects every field replacable +unit on the device at a minimum (i.e., additional information +may be supplied about non-replacable components). + +Every element in the inventory is termed a 'component' with each +component expected to have a unique name and type, and optionally +a unique system-assigned identifier and FRU number. The +uniqueness is guaranteed by the system within the device. + +Components may have properties defined by the system that are +modeled as a list of key-value pairs. These may or may not be +user-configurable. The model provides a flag for the system +to optionally indicate which properties are user configurable. + +Each component also has a list of 'subcomponents' which are +references to other components. Appearance in a list of +subcomponents indicates a containment relationship as described +above. For example, a linecard component may have a list of +references to port components that reside on the linecard. + +This schema is generic to allow devices to express their own +platform-specific structure. It may be augmented by additional +component type-specific schemas that provide a common structure +for well-known component types. In these cases, the system is +expected to populate the common component schema, and may +optionally also represent the component and its properties in the +generic structure. + +The properties for each component may include dynamic values, +e.g., in the 'state' part of the schema. For example, a CPU +component may report its utilization, temperature, or other +physical properties. The intent is to capture all platform- +specific physical data in one location, including inventory +(presence or absence of a component) and state (physical +attributes or status). + """ + __slots__ = ('_path_helper', '_extmethods', '__components',) + + _yang_name = 'openconfig-platform' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__components = YANGDynClass(base=components.components, is_container='container', yang_name="components", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [] + + def _get_components(self): + """ + Getter method for components, mapped from YANG variable /components (container) + + YANG Description: Enclosing container for the components in the system. + """ + return self.__components + + def _set_components(self, v, load=False): + """ + Setter method for components, mapped from YANG variable /components (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_components is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_components() directly. + + YANG Description: Enclosing container for the components in the system. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=components.components, is_container='container', yang_name="components", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """components must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=components.components, is_container='container', yang_name="components", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__components = t + if hasattr(self, '_set'): + self._set() + + def _unset_components(self): + self.__components = YANGDynClass(base=components.components, is_container='container', yang_name="components", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + components = __builtin__.property(_get_components, _set_components) + + + _pyangbind_elements = OrderedDict([('components', components), ]) + + +from . import components +class openconfig_platform_common(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /openconfig-platform-common. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This modules contains common groupings that are used in multiple +components within the platform module. + """ + __slots__ = ('_path_helper', '_extmethods', '__components',) + + _yang_name = 'openconfig-platform-common' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__components = YANGDynClass(base=components.components, is_container='container', yang_name="components", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [] + + def _get_components(self): + """ + Getter method for components, mapped from YANG variable /components (container) + + YANG Description: Enclosing container for the components in the system. + """ + return self.__components + + def _set_components(self, v, load=False): + """ + Setter method for components, mapped from YANG variable /components (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_components is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_components() directly. + + YANG Description: Enclosing container for the components in the system. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=components.components, is_container='container', yang_name="components", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """components must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=components.components, is_container='container', yang_name="components", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__components = t + if hasattr(self, '_set'): + self._set() + + def _unset_components(self): + self.__components = YANGDynClass(base=components.components, is_container='container', yang_name="components", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + components = __builtin__.property(_get_components, _set_components) + + + _pyangbind_elements = OrderedDict([('components', components), ]) + + +class openconfig_platform_port(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-port - based on the path /openconfig-platform-port. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: This module defines data related to PORT components in the +openconfig-platform model + """ + _pyangbind_elements = {} + + + diff --git a/hackfest/netconf-oc/openconfig/components/__init__.py b/hackfest/netconf-oc/openconfig/components/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..1470af40e5acad9715a3acf1473e1e8955426a03 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/__init__.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import component +class components(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container for the components in the system. + """ + __slots__ = ('_path_helper', '_extmethods', '__component',) + + _yang_name = 'components' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__component = YANGDynClass(base=YANGListType("name",component.component, yang_name="component", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="component", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components'] + + def _get_component(self): + """ + Getter method for component, mapped from YANG variable /components/component (list) + + YANG Description: List of components, keyed by component name. + """ + return self.__component + + def _set_component(self, v, load=False): + """ + Setter method for component, mapped from YANG variable /components/component (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_component is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_component() directly. + + YANG Description: List of components, keyed by component name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",component.component, yang_name="component", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="component", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """component must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",component.component, yang_name="component", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="component", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True)""", + }) + + self.__component = t + if hasattr(self, '_set'): + self._set() + + def _unset_component(self): + self.__component = YANGDynClass(base=YANGListType("name",component.component, yang_name="component", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="component", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + component = __builtin__.property(_get_component, _set_component) + + + _pyangbind_elements = OrderedDict([('component', component), ]) + + +from . import component +class components(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container for the components in the system. + """ + __slots__ = ('_path_helper', '_extmethods', '__component',) + + _yang_name = 'components' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__component = YANGDynClass(base=YANGListType("name",component.component, yang_name="component", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="component", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components'] + + def _get_component(self): + """ + Getter method for component, mapped from YANG variable /components/component (list) + + YANG Description: List of components, keyed by component name. + """ + return self.__component + + def _set_component(self, v, load=False): + """ + Setter method for component, mapped from YANG variable /components/component (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_component is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_component() directly. + + YANG Description: List of components, keyed by component name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",component.component, yang_name="component", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="component", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """component must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",component.component, yang_name="component", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="component", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True)""", + }) + + self.__component = t + if hasattr(self, '_set'): + self._set() + + def _unset_component(self): + self.__component = YANGDynClass(base=YANGListType("name",component.component, yang_name="component", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="component", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + component = __builtin__.property(_get_component, _set_component) + + + _pyangbind_elements = OrderedDict([('component', component), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/__init__.py b/hackfest/netconf-oc/openconfig/components/component/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..b80cb6139d5290b7ec4e62a14f2faeba46886d31 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/__init__.py @@ -0,0 +1,1424 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import config +from . import state +from . import properties +from . import subcomponents +from . import chassis +from . import port +from . import power_supply +from . import fan +from . import fabric +from . import storage +from . import cpu +from . import integrated_circuit +from . import backplane +from . import software_module +from . import controller_card +class component(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of components, keyed by component name. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state','__properties','__subcomponents','__chassis','__port','__power_supply','__fan','__fabric','__storage','__cpu','__integrated_circuit','__backplane','__software_module','__controller_card',) + + _yang_name = 'component' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__properties = YANGDynClass(base=properties.properties, is_container='container', yang_name="properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__subcomponents = YANGDynClass(base=subcomponents.subcomponents, is_container='container', yang_name="subcomponents", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__chassis = YANGDynClass(base=chassis.chassis, is_container='container', yang_name="chassis", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__port = YANGDynClass(base=port.port, is_container='container', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__power_supply = YANGDynClass(base=power_supply.power_supply, is_container='container', yang_name="power-supply", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__fan = YANGDynClass(base=fan.fan, is_container='container', yang_name="fan", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__fabric = YANGDynClass(base=fabric.fabric, is_container='container', yang_name="fabric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__storage = YANGDynClass(base=storage.storage, is_container='container', yang_name="storage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__cpu = YANGDynClass(base=cpu.cpu, is_container='container', yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__integrated_circuit = YANGDynClass(base=integrated_circuit.integrated_circuit, is_container='container', yang_name="integrated-circuit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__backplane = YANGDynClass(base=backplane.backplane, is_container='container', yang_name="backplane", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__software_module = YANGDynClass(base=software_module.software_module, is_container='container', yang_name="software-module", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__controller_card = YANGDynClass(base=controller_card.controller_card, is_container='container', yang_name="controller-card", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/name (leafref) + + YANG Description: References the component name + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: References the component name + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/config (container) + + YANG Description: Configuration data for each component + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for each component + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/state (container) + + YANG Description: Operational state data for each component + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for each component + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_properties(self): + """ + Getter method for properties, mapped from YANG variable /components/component/properties (container) + + YANG Description: Enclosing container + """ + return self.__properties + + def _set_properties(self, v, load=False): + """ + Setter method for properties, mapped from YANG variable /components/component/properties (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_properties is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_properties() directly. + + YANG Description: Enclosing container + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=properties.properties, is_container='container', yang_name="properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """properties must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=properties.properties, is_container='container', yang_name="properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__properties = t + if hasattr(self, '_set'): + self._set() + + def _unset_properties(self): + self.__properties = YANGDynClass(base=properties.properties, is_container='container', yang_name="properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_subcomponents(self): + """ + Getter method for subcomponents, mapped from YANG variable /components/component/subcomponents (container) + + YANG Description: Enclosing container for subcomponent references + """ + return self.__subcomponents + + def _set_subcomponents(self, v, load=False): + """ + Setter method for subcomponents, mapped from YANG variable /components/component/subcomponents (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_subcomponents is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_subcomponents() directly. + + YANG Description: Enclosing container for subcomponent references + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=subcomponents.subcomponents, is_container='container', yang_name="subcomponents", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """subcomponents must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=subcomponents.subcomponents, is_container='container', yang_name="subcomponents", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__subcomponents = t + if hasattr(self, '_set'): + self._set() + + def _unset_subcomponents(self): + self.__subcomponents = YANGDynClass(base=subcomponents.subcomponents, is_container='container', yang_name="subcomponents", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_chassis(self): + """ + Getter method for chassis, mapped from YANG variable /components/component/chassis (container) + + YANG Description: Data for chassis components + """ + return self.__chassis + + def _set_chassis(self, v, load=False): + """ + Setter method for chassis, mapped from YANG variable /components/component/chassis (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_chassis is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_chassis() directly. + + YANG Description: Data for chassis components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=chassis.chassis, is_container='container', yang_name="chassis", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """chassis must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=chassis.chassis, is_container='container', yang_name="chassis", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__chassis = t + if hasattr(self, '_set'): + self._set() + + def _unset_chassis(self): + self.__chassis = YANGDynClass(base=chassis.chassis, is_container='container', yang_name="chassis", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_port(self): + """ + Getter method for port, mapped from YANG variable /components/component/port (container) + + YANG Description: Data for physical port components + """ + return self.__port + + def _set_port(self, v, load=False): + """ + Setter method for port, mapped from YANG variable /components/component/port (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port() directly. + + YANG Description: Data for physical port components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=port.port, is_container='container', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=port.port, is_container='container', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__port = t + if hasattr(self, '_set'): + self._set() + + def _unset_port(self): + self.__port = YANGDynClass(base=port.port, is_container='container', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_power_supply(self): + """ + Getter method for power_supply, mapped from YANG variable /components/component/power_supply (container) + + YANG Description: Data for power supply components + """ + return self.__power_supply + + def _set_power_supply(self, v, load=False): + """ + Setter method for power_supply, mapped from YANG variable /components/component/power_supply (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_power_supply is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_power_supply() directly. + + YANG Description: Data for power supply components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=power_supply.power_supply, is_container='container', yang_name="power-supply", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """power_supply must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=power_supply.power_supply, is_container='container', yang_name="power-supply", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__power_supply = t + if hasattr(self, '_set'): + self._set() + + def _unset_power_supply(self): + self.__power_supply = YANGDynClass(base=power_supply.power_supply, is_container='container', yang_name="power-supply", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_fan(self): + """ + Getter method for fan, mapped from YANG variable /components/component/fan (container) + + YANG Description: Data for fan components + """ + return self.__fan + + def _set_fan(self, v, load=False): + """ + Setter method for fan, mapped from YANG variable /components/component/fan (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_fan is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_fan() directly. + + YANG Description: Data for fan components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=fan.fan, is_container='container', yang_name="fan", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """fan must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=fan.fan, is_container='container', yang_name="fan", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__fan = t + if hasattr(self, '_set'): + self._set() + + def _unset_fan(self): + self.__fan = YANGDynClass(base=fan.fan, is_container='container', yang_name="fan", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_fabric(self): + """ + Getter method for fabric, mapped from YANG variable /components/component/fabric (container) + + YANG Description: Data for fabric components + """ + return self.__fabric + + def _set_fabric(self, v, load=False): + """ + Setter method for fabric, mapped from YANG variable /components/component/fabric (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_fabric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_fabric() directly. + + YANG Description: Data for fabric components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=fabric.fabric, is_container='container', yang_name="fabric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """fabric must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=fabric.fabric, is_container='container', yang_name="fabric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__fabric = t + if hasattr(self, '_set'): + self._set() + + def _unset_fabric(self): + self.__fabric = YANGDynClass(base=fabric.fabric, is_container='container', yang_name="fabric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_storage(self): + """ + Getter method for storage, mapped from YANG variable /components/component/storage (container) + + YANG Description: Data for storage components + """ + return self.__storage + + def _set_storage(self, v, load=False): + """ + Setter method for storage, mapped from YANG variable /components/component/storage (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_storage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_storage() directly. + + YANG Description: Data for storage components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=storage.storage, is_container='container', yang_name="storage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """storage must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=storage.storage, is_container='container', yang_name="storage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__storage = t + if hasattr(self, '_set'): + self._set() + + def _unset_storage(self): + self.__storage = YANGDynClass(base=storage.storage, is_container='container', yang_name="storage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_cpu(self): + """ + Getter method for cpu, mapped from YANG variable /components/component/cpu (container) + + YANG Description: Data for cpu components + """ + return self.__cpu + + def _set_cpu(self, v, load=False): + """ + Setter method for cpu, mapped from YANG variable /components/component/cpu (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_cpu is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_cpu() directly. + + YANG Description: Data for cpu components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=cpu.cpu, is_container='container', yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """cpu must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=cpu.cpu, is_container='container', yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__cpu = t + if hasattr(self, '_set'): + self._set() + + def _unset_cpu(self): + self.__cpu = YANGDynClass(base=cpu.cpu, is_container='container', yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_integrated_circuit(self): + """ + Getter method for integrated_circuit, mapped from YANG variable /components/component/integrated_circuit (container) + + YANG Description: Data for chip components, such as ASIC, NPUs, etc. + """ + return self.__integrated_circuit + + def _set_integrated_circuit(self, v, load=False): + """ + Setter method for integrated_circuit, mapped from YANG variable /components/component/integrated_circuit (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_integrated_circuit is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_integrated_circuit() directly. + + YANG Description: Data for chip components, such as ASIC, NPUs, etc. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=integrated_circuit.integrated_circuit, is_container='container', yang_name="integrated-circuit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """integrated_circuit must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=integrated_circuit.integrated_circuit, is_container='container', yang_name="integrated-circuit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__integrated_circuit = t + if hasattr(self, '_set'): + self._set() + + def _unset_integrated_circuit(self): + self.__integrated_circuit = YANGDynClass(base=integrated_circuit.integrated_circuit, is_container='container', yang_name="integrated-circuit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_backplane(self): + """ + Getter method for backplane, mapped from YANG variable /components/component/backplane (container) + + YANG Description: Data for backplane components + """ + return self.__backplane + + def _set_backplane(self, v, load=False): + """ + Setter method for backplane, mapped from YANG variable /components/component/backplane (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_backplane is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_backplane() directly. + + YANG Description: Data for backplane components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=backplane.backplane, is_container='container', yang_name="backplane", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """backplane must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=backplane.backplane, is_container='container', yang_name="backplane", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__backplane = t + if hasattr(self, '_set'): + self._set() + + def _unset_backplane(self): + self.__backplane = YANGDynClass(base=backplane.backplane, is_container='container', yang_name="backplane", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_software_module(self): + """ + Getter method for software_module, mapped from YANG variable /components/component/software_module (container) + + YANG Description: Data for software module components, i.e., for components +with type=SOFTWARE_MODULE + """ + return self.__software_module + + def _set_software_module(self, v, load=False): + """ + Setter method for software_module, mapped from YANG variable /components/component/software_module (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_software_module is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_software_module() directly. + + YANG Description: Data for software module components, i.e., for components +with type=SOFTWARE_MODULE + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=software_module.software_module, is_container='container', yang_name="software-module", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """software_module must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=software_module.software_module, is_container='container', yang_name="software-module", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__software_module = t + if hasattr(self, '_set'): + self._set() + + def _unset_software_module(self): + self.__software_module = YANGDynClass(base=software_module.software_module, is_container='container', yang_name="software-module", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_controller_card(self): + """ + Getter method for controller_card, mapped from YANG variable /components/component/controller_card (container) + + YANG Description: Data for controller card components, i.e., for components +with type=CONTROLLER_CARD + """ + return self.__controller_card + + def _set_controller_card(self, v, load=False): + """ + Setter method for controller_card, mapped from YANG variable /components/component/controller_card (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_controller_card is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_controller_card() directly. + + YANG Description: Data for controller card components, i.e., for components +with type=CONTROLLER_CARD + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=controller_card.controller_card, is_container='container', yang_name="controller-card", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """controller_card must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=controller_card.controller_card, is_container='container', yang_name="controller-card", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__controller_card = t + if hasattr(self, '_set'): + self._set() + + def _unset_controller_card(self): + self.__controller_card = YANGDynClass(base=controller_card.controller_card, is_container='container', yang_name="controller-card", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + properties = __builtin__.property(_get_properties, _set_properties) + subcomponents = __builtin__.property(_get_subcomponents, _set_subcomponents) + chassis = __builtin__.property(_get_chassis, _set_chassis) + port = __builtin__.property(_get_port, _set_port) + power_supply = __builtin__.property(_get_power_supply, _set_power_supply) + fan = __builtin__.property(_get_fan, _set_fan) + fabric = __builtin__.property(_get_fabric, _set_fabric) + storage = __builtin__.property(_get_storage, _set_storage) + cpu = __builtin__.property(_get_cpu, _set_cpu) + integrated_circuit = __builtin__.property(_get_integrated_circuit, _set_integrated_circuit) + backplane = __builtin__.property(_get_backplane, _set_backplane) + software_module = __builtin__.property(_get_software_module, _set_software_module) + controller_card = __builtin__.property(_get_controller_card, _set_controller_card) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ('properties', properties), ('subcomponents', subcomponents), ('chassis', chassis), ('port', port), ('power_supply', power_supply), ('fan', fan), ('fabric', fabric), ('storage', storage), ('cpu', cpu), ('integrated_circuit', integrated_circuit), ('backplane', backplane), ('software_module', software_module), ('controller_card', controller_card), ]) + + +from . import config +from . import state +from . import properties +from . import subcomponents +from . import chassis +from . import port +from . import power_supply +from . import fan +from . import fabric +from . import storage +from . import cpu +from . import integrated_circuit +from . import backplane +from . import software_module +from . import controller_card +class component(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of components, keyed by component name. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state','__properties','__subcomponents','__chassis','__port','__power_supply','__fan','__fabric','__storage','__cpu','__integrated_circuit','__backplane','__software_module','__controller_card',) + + _yang_name = 'component' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__properties = YANGDynClass(base=properties.properties, is_container='container', yang_name="properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__subcomponents = YANGDynClass(base=subcomponents.subcomponents, is_container='container', yang_name="subcomponents", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__chassis = YANGDynClass(base=chassis.chassis, is_container='container', yang_name="chassis", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__port = YANGDynClass(base=port.port, is_container='container', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__power_supply = YANGDynClass(base=power_supply.power_supply, is_container='container', yang_name="power-supply", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__fan = YANGDynClass(base=fan.fan, is_container='container', yang_name="fan", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__fabric = YANGDynClass(base=fabric.fabric, is_container='container', yang_name="fabric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__storage = YANGDynClass(base=storage.storage, is_container='container', yang_name="storage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__cpu = YANGDynClass(base=cpu.cpu, is_container='container', yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__integrated_circuit = YANGDynClass(base=integrated_circuit.integrated_circuit, is_container='container', yang_name="integrated-circuit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__backplane = YANGDynClass(base=backplane.backplane, is_container='container', yang_name="backplane", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__software_module = YANGDynClass(base=software_module.software_module, is_container='container', yang_name="software-module", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__controller_card = YANGDynClass(base=controller_card.controller_card, is_container='container', yang_name="controller-card", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/name (leafref) + + YANG Description: References the component name + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: References the component name + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/config (container) + + YANG Description: Configuration data for each component + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for each component + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/state (container) + + YANG Description: Operational state data for each component + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for each component + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_properties(self): + """ + Getter method for properties, mapped from YANG variable /components/component/properties (container) + + YANG Description: Enclosing container + """ + return self.__properties + + def _set_properties(self, v, load=False): + """ + Setter method for properties, mapped from YANG variable /components/component/properties (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_properties is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_properties() directly. + + YANG Description: Enclosing container + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=properties.properties, is_container='container', yang_name="properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """properties must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=properties.properties, is_container='container', yang_name="properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__properties = t + if hasattr(self, '_set'): + self._set() + + def _unset_properties(self): + self.__properties = YANGDynClass(base=properties.properties, is_container='container', yang_name="properties", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_subcomponents(self): + """ + Getter method for subcomponents, mapped from YANG variable /components/component/subcomponents (container) + + YANG Description: Enclosing container for subcomponent references + """ + return self.__subcomponents + + def _set_subcomponents(self, v, load=False): + """ + Setter method for subcomponents, mapped from YANG variable /components/component/subcomponents (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_subcomponents is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_subcomponents() directly. + + YANG Description: Enclosing container for subcomponent references + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=subcomponents.subcomponents, is_container='container', yang_name="subcomponents", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """subcomponents must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=subcomponents.subcomponents, is_container='container', yang_name="subcomponents", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__subcomponents = t + if hasattr(self, '_set'): + self._set() + + def _unset_subcomponents(self): + self.__subcomponents = YANGDynClass(base=subcomponents.subcomponents, is_container='container', yang_name="subcomponents", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_chassis(self): + """ + Getter method for chassis, mapped from YANG variable /components/component/chassis (container) + + YANG Description: Data for chassis components + """ + return self.__chassis + + def _set_chassis(self, v, load=False): + """ + Setter method for chassis, mapped from YANG variable /components/component/chassis (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_chassis is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_chassis() directly. + + YANG Description: Data for chassis components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=chassis.chassis, is_container='container', yang_name="chassis", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """chassis must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=chassis.chassis, is_container='container', yang_name="chassis", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__chassis = t + if hasattr(self, '_set'): + self._set() + + def _unset_chassis(self): + self.__chassis = YANGDynClass(base=chassis.chassis, is_container='container', yang_name="chassis", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_port(self): + """ + Getter method for port, mapped from YANG variable /components/component/port (container) + + YANG Description: Data for physical port components + """ + return self.__port + + def _set_port(self, v, load=False): + """ + Setter method for port, mapped from YANG variable /components/component/port (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port() directly. + + YANG Description: Data for physical port components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=port.port, is_container='container', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=port.port, is_container='container', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__port = t + if hasattr(self, '_set'): + self._set() + + def _unset_port(self): + self.__port = YANGDynClass(base=port.port, is_container='container', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_power_supply(self): + """ + Getter method for power_supply, mapped from YANG variable /components/component/power_supply (container) + + YANG Description: Data for power supply components + """ + return self.__power_supply + + def _set_power_supply(self, v, load=False): + """ + Setter method for power_supply, mapped from YANG variable /components/component/power_supply (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_power_supply is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_power_supply() directly. + + YANG Description: Data for power supply components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=power_supply.power_supply, is_container='container', yang_name="power-supply", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """power_supply must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=power_supply.power_supply, is_container='container', yang_name="power-supply", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__power_supply = t + if hasattr(self, '_set'): + self._set() + + def _unset_power_supply(self): + self.__power_supply = YANGDynClass(base=power_supply.power_supply, is_container='container', yang_name="power-supply", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_fan(self): + """ + Getter method for fan, mapped from YANG variable /components/component/fan (container) + + YANG Description: Data for fan components + """ + return self.__fan + + def _set_fan(self, v, load=False): + """ + Setter method for fan, mapped from YANG variable /components/component/fan (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_fan is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_fan() directly. + + YANG Description: Data for fan components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=fan.fan, is_container='container', yang_name="fan", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """fan must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=fan.fan, is_container='container', yang_name="fan", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__fan = t + if hasattr(self, '_set'): + self._set() + + def _unset_fan(self): + self.__fan = YANGDynClass(base=fan.fan, is_container='container', yang_name="fan", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_fabric(self): + """ + Getter method for fabric, mapped from YANG variable /components/component/fabric (container) + + YANG Description: Data for fabric components + """ + return self.__fabric + + def _set_fabric(self, v, load=False): + """ + Setter method for fabric, mapped from YANG variable /components/component/fabric (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_fabric is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_fabric() directly. + + YANG Description: Data for fabric components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=fabric.fabric, is_container='container', yang_name="fabric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """fabric must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=fabric.fabric, is_container='container', yang_name="fabric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__fabric = t + if hasattr(self, '_set'): + self._set() + + def _unset_fabric(self): + self.__fabric = YANGDynClass(base=fabric.fabric, is_container='container', yang_name="fabric", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_storage(self): + """ + Getter method for storage, mapped from YANG variable /components/component/storage (container) + + YANG Description: Data for storage components + """ + return self.__storage + + def _set_storage(self, v, load=False): + """ + Setter method for storage, mapped from YANG variable /components/component/storage (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_storage is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_storage() directly. + + YANG Description: Data for storage components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=storage.storage, is_container='container', yang_name="storage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """storage must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=storage.storage, is_container='container', yang_name="storage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__storage = t + if hasattr(self, '_set'): + self._set() + + def _unset_storage(self): + self.__storage = YANGDynClass(base=storage.storage, is_container='container', yang_name="storage", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_cpu(self): + """ + Getter method for cpu, mapped from YANG variable /components/component/cpu (container) + + YANG Description: Data for cpu components + """ + return self.__cpu + + def _set_cpu(self, v, load=False): + """ + Setter method for cpu, mapped from YANG variable /components/component/cpu (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_cpu is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_cpu() directly. + + YANG Description: Data for cpu components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=cpu.cpu, is_container='container', yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """cpu must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=cpu.cpu, is_container='container', yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__cpu = t + if hasattr(self, '_set'): + self._set() + + def _unset_cpu(self): + self.__cpu = YANGDynClass(base=cpu.cpu, is_container='container', yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_integrated_circuit(self): + """ + Getter method for integrated_circuit, mapped from YANG variable /components/component/integrated_circuit (container) + + YANG Description: Data for chip components, such as ASIC, NPUs, etc. + """ + return self.__integrated_circuit + + def _set_integrated_circuit(self, v, load=False): + """ + Setter method for integrated_circuit, mapped from YANG variable /components/component/integrated_circuit (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_integrated_circuit is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_integrated_circuit() directly. + + YANG Description: Data for chip components, such as ASIC, NPUs, etc. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=integrated_circuit.integrated_circuit, is_container='container', yang_name="integrated-circuit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """integrated_circuit must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=integrated_circuit.integrated_circuit, is_container='container', yang_name="integrated-circuit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__integrated_circuit = t + if hasattr(self, '_set'): + self._set() + + def _unset_integrated_circuit(self): + self.__integrated_circuit = YANGDynClass(base=integrated_circuit.integrated_circuit, is_container='container', yang_name="integrated-circuit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_backplane(self): + """ + Getter method for backplane, mapped from YANG variable /components/component/backplane (container) + + YANG Description: Data for backplane components + """ + return self.__backplane + + def _set_backplane(self, v, load=False): + """ + Setter method for backplane, mapped from YANG variable /components/component/backplane (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_backplane is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_backplane() directly. + + YANG Description: Data for backplane components + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=backplane.backplane, is_container='container', yang_name="backplane", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """backplane must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=backplane.backplane, is_container='container', yang_name="backplane", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__backplane = t + if hasattr(self, '_set'): + self._set() + + def _unset_backplane(self): + self.__backplane = YANGDynClass(base=backplane.backplane, is_container='container', yang_name="backplane", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_software_module(self): + """ + Getter method for software_module, mapped from YANG variable /components/component/software_module (container) + + YANG Description: Data for software module components, i.e., for components +with type=SOFTWARE_MODULE + """ + return self.__software_module + + def _set_software_module(self, v, load=False): + """ + Setter method for software_module, mapped from YANG variable /components/component/software_module (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_software_module is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_software_module() directly. + + YANG Description: Data for software module components, i.e., for components +with type=SOFTWARE_MODULE + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=software_module.software_module, is_container='container', yang_name="software-module", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """software_module must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=software_module.software_module, is_container='container', yang_name="software-module", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__software_module = t + if hasattr(self, '_set'): + self._set() + + def _unset_software_module(self): + self.__software_module = YANGDynClass(base=software_module.software_module, is_container='container', yang_name="software-module", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_controller_card(self): + """ + Getter method for controller_card, mapped from YANG variable /components/component/controller_card (container) + + YANG Description: Data for controller card components, i.e., for components +with type=CONTROLLER_CARD + """ + return self.__controller_card + + def _set_controller_card(self, v, load=False): + """ + Setter method for controller_card, mapped from YANG variable /components/component/controller_card (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_controller_card is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_controller_card() directly. + + YANG Description: Data for controller card components, i.e., for components +with type=CONTROLLER_CARD + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=controller_card.controller_card, is_container='container', yang_name="controller-card", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """controller_card must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=controller_card.controller_card, is_container='container', yang_name="controller-card", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__controller_card = t + if hasattr(self, '_set'): + self._set() + + def _unset_controller_card(self): + self.__controller_card = YANGDynClass(base=controller_card.controller_card, is_container='container', yang_name="controller-card", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + properties = __builtin__.property(_get_properties, _set_properties) + subcomponents = __builtin__.property(_get_subcomponents, _set_subcomponents) + chassis = __builtin__.property(_get_chassis, _set_chassis) + port = __builtin__.property(_get_port, _set_port) + power_supply = __builtin__.property(_get_power_supply, _set_power_supply) + fan = __builtin__.property(_get_fan, _set_fan) + fabric = __builtin__.property(_get_fabric, _set_fabric) + storage = __builtin__.property(_get_storage, _set_storage) + cpu = __builtin__.property(_get_cpu, _set_cpu) + integrated_circuit = __builtin__.property(_get_integrated_circuit, _set_integrated_circuit) + backplane = __builtin__.property(_get_backplane, _set_backplane) + software_module = __builtin__.property(_get_software_module, _set_software_module) + controller_card = __builtin__.property(_get_controller_card, _set_controller_card) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ('properties', properties), ('subcomponents', subcomponents), ('chassis', chassis), ('port', port), ('power_supply', power_supply), ('fan', fan), ('fabric', fabric), ('storage', storage), ('cpu', cpu), ('integrated_circuit', integrated_circuit), ('backplane', backplane), ('software_module', software_module), ('controller_card', controller_card), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/backplane/__init__.py b/hackfest/netconf-oc/openconfig/components/component/backplane/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..15bef3759aab3b7d456fc2bf3e79d364fbf2aa2f --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/backplane/__init__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class backplane(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/backplane. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for backplane components + """ + _pyangbind_elements = {} + + + +class backplane(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/backplane. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for backplane components + """ + _pyangbind_elements = {} + + + diff --git a/hackfest/netconf-oc/openconfig/components/component/chassis/__init__.py b/hackfest/netconf-oc/openconfig/components/component/chassis/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..9e88a339a79e9feb0912c24d1a58043f5a25f5c6 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/chassis/__init__.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import utilization +class chassis(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/chassis. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for chassis components + """ + __slots__ = ('_path_helper', '_extmethods', '__utilization',) + + _yang_name = 'chassis' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__utilization = YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis'] + + def _get_utilization(self): + """ + Getter method for utilization, mapped from YANG variable /components/component/chassis/utilization (container) + + YANG Description: Utilization of the component. + """ + return self.__utilization + + def _set_utilization(self, v, load=False): + """ + Setter method for utilization, mapped from YANG variable /components/component/chassis/utilization (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_utilization is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_utilization() directly. + + YANG Description: Utilization of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """utilization must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__utilization = t + if hasattr(self, '_set'): + self._set() + + def _unset_utilization(self): + self.__utilization = YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + utilization = __builtin__.property(_get_utilization, _set_utilization) + + + _pyangbind_elements = OrderedDict([('utilization', utilization), ]) + + +from . import utilization +class chassis(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/chassis. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for chassis components + """ + __slots__ = ('_path_helper', '_extmethods', '__utilization',) + + _yang_name = 'chassis' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__utilization = YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis'] + + def _get_utilization(self): + """ + Getter method for utilization, mapped from YANG variable /components/component/chassis/utilization (container) + + YANG Description: Utilization of the component. + """ + return self.__utilization + + def _set_utilization(self, v, load=False): + """ + Setter method for utilization, mapped from YANG variable /components/component/chassis/utilization (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_utilization is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_utilization() directly. + + YANG Description: Utilization of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """utilization must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__utilization = t + if hasattr(self, '_set'): + self._set() + + def _unset_utilization(self): + self.__utilization = YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + utilization = __builtin__.property(_get_utilization, _set_utilization) + + + _pyangbind_elements = OrderedDict([('utilization', utilization), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/__init__.py b/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..a1bac9c98ca84bd2fcdb13e29b0419d0695a1be8 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/__init__.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import resources +class utilization(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/chassis/utilization. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Utilization of the component. + """ + __slots__ = ('_path_helper', '_extmethods', '__resources',) + + _yang_name = 'utilization' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__resources = YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis', 'utilization'] + + def _get_resources(self): + """ + Getter method for resources, mapped from YANG variable /components/component/chassis/utilization/resources (container) + + YANG Description: Enclosing container for the resources in this component. + """ + return self.__resources + + def _set_resources(self, v, load=False): + """ + Setter method for resources, mapped from YANG variable /components/component/chassis/utilization/resources (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_resources is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_resources() directly. + + YANG Description: Enclosing container for the resources in this component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """resources must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__resources = t + if hasattr(self, '_set'): + self._set() + + def _unset_resources(self): + self.__resources = YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + resources = __builtin__.property(_get_resources, _set_resources) + + + _pyangbind_elements = OrderedDict([('resources', resources), ]) + + +from . import resources +class utilization(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/chassis/utilization. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Utilization of the component. + """ + __slots__ = ('_path_helper', '_extmethods', '__resources',) + + _yang_name = 'utilization' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__resources = YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis', 'utilization'] + + def _get_resources(self): + """ + Getter method for resources, mapped from YANG variable /components/component/chassis/utilization/resources (container) + + YANG Description: Enclosing container for the resources in this component. + """ + return self.__resources + + def _set_resources(self, v, load=False): + """ + Setter method for resources, mapped from YANG variable /components/component/chassis/utilization/resources (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_resources is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_resources() directly. + + YANG Description: Enclosing container for the resources in this component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """resources must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__resources = t + if hasattr(self, '_set'): + self._set() + + def _unset_resources(self): + self.__resources = YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + resources = __builtin__.property(_get_resources, _set_resources) + + + _pyangbind_elements = OrderedDict([('resources', resources), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/__init__.py b/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..29d51abe1879b785d0eaefd71a2055f1e136e89c --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/__init__.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import resource +class resources(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/chassis/utilization/resources. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container for the resources in this component. + """ + __slots__ = ('_path_helper', '_extmethods', '__resource',) + + _yang_name = 'resources' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__resource = YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis', 'utilization', 'resources'] + + def _get_resource(self): + """ + Getter method for resource, mapped from YANG variable /components/component/chassis/utilization/resources/resource (list) + + YANG Description: List of resources, keyed by resource name. + """ + return self.__resource + + def _set_resource(self, v, load=False): + """ + Setter method for resource, mapped from YANG variable /components/component/chassis/utilization/resources/resource (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_resource is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_resource() directly. + + YANG Description: List of resources, keyed by resource name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """resource must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True)""", + }) + + self.__resource = t + if hasattr(self, '_set'): + self._set() + + def _unset_resource(self): + self.__resource = YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + resource = __builtin__.property(_get_resource, _set_resource) + + + _pyangbind_elements = OrderedDict([('resource', resource), ]) + + +from . import resource +class resources(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/chassis/utilization/resources. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container for the resources in this component. + """ + __slots__ = ('_path_helper', '_extmethods', '__resource',) + + _yang_name = 'resources' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__resource = YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis', 'utilization', 'resources'] + + def _get_resource(self): + """ + Getter method for resource, mapped from YANG variable /components/component/chassis/utilization/resources/resource (list) + + YANG Description: List of resources, keyed by resource name. + """ + return self.__resource + + def _set_resource(self, v, load=False): + """ + Setter method for resource, mapped from YANG variable /components/component/chassis/utilization/resources/resource (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_resource is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_resource() directly. + + YANG Description: List of resources, keyed by resource name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """resource must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True)""", + }) + + self.__resource = t + if hasattr(self, '_set'): + self._set() + + def _unset_resource(self): + self.__resource = YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + resource = __builtin__.property(_get_resource, _set_resource) + + + _pyangbind_elements = OrderedDict([('resource', resource), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/resource/__init__.py b/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/resource/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..ff0575f656886cc795b63d8f5c0020c03d0254c3 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/resource/__init__.py @@ -0,0 +1,376 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import config +from . import state +class resource(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/chassis/utilization/resources/resource. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of resources, keyed by resource name. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state',) + + _yang_name = 'resource' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis', 'utilization', 'resources', 'resource'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/name (leafref) + + YANG Description: References the resource name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: References the resource name. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/chassis/utilization/resources/resource/config (container) + + YANG Description: Configuration data for each resource. + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/chassis/utilization/resources/resource/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for each resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state (container) + + YANG Description: Operational state data for each resource. + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for each resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ]) + + +from . import config +from . import state +class resource(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/chassis/utilization/resources/resource. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of resources, keyed by resource name. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state',) + + _yang_name = 'resource' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis', 'utilization', 'resources', 'resource'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/name (leafref) + + YANG Description: References the resource name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: References the resource name. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/chassis/utilization/resources/resource/config (container) + + YANG Description: Configuration data for each resource. + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/chassis/utilization/resources/resource/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for each resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state (container) + + YANG Description: Operational state data for each resource. + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for each resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/resource/config/__init__.py b/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/resource/config/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..a766d52ec6ab7a593be38d4f11fbbc16dc80eb81 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/resource/config/__init__.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/chassis/utilization/resources/resource/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for each resource. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis', 'utilization', 'resources', 'resource', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/config/name (string) + + YANG Description: Resource name within the component. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/config/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Resource name within the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/chassis/utilization/resources/resource/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for each resource. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis', 'utilization', 'resources', 'resource', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/config/name (string) + + YANG Description: Resource name within the component. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/config/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Resource name within the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/resource/state/__init__.py b/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/resource/state/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..9c38f59397042e87fc192c24bdbf883ce8e6fc54 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/chassis/utilization/resources/resource/state/__init__.py @@ -0,0 +1,686 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/chassis/utilization/resources/resource/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for each resource. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__used','__committed','__free','__max_limit','__high_watermark','__last_high_watermark',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__used = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__committed = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__free = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__max_limit = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__last_high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis', 'utilization', 'resources', 'resource', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/name (string) + + YANG Description: Resource name within the component. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Resource name within the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_used(self): + """ + Getter method for used, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/used (uint64) + + YANG Description: Number of entries currently in use for the resource. + """ + return self.__used + + def _set_used(self, v, load=False): + """ + Setter method for used, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/used (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_used is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_used() directly. + + YANG Description: Number of entries currently in use for the resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """used must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__used = t + if hasattr(self, '_set'): + self._set() + + def _unset_used(self): + self.__used = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_committed(self): + """ + Getter method for committed, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/committed (uint64) + + YANG Description: Number of entries currently reserved for this resource. This is only +relevant to tables which allocate a block of resource for a given +feature. + """ + return self.__committed + + def _set_committed(self, v, load=False): + """ + Setter method for committed, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/committed (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_committed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_committed() directly. + + YANG Description: Number of entries currently reserved for this resource. This is only +relevant to tables which allocate a block of resource for a given +feature. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """committed must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__committed = t + if hasattr(self, '_set'): + self._set() + + def _unset_committed(self): + self.__committed = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_free(self): + """ + Getter method for free, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/free (uint64) + + YANG Description: Number of entries available to use. + """ + return self.__free + + def _set_free(self, v, load=False): + """ + Setter method for free, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/free (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_free is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_free() directly. + + YANG Description: Number of entries available to use. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """free must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__free = t + if hasattr(self, '_set'): + self._set() + + def _unset_free(self): + self.__free = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_max_limit(self): + """ + Getter method for max_limit, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/max_limit (uint64) + + YANG Description: Maximum number of entries available for the resource. The value +is the theoretical maximum resource utilization possible. + """ + return self.__max_limit + + def _set_max_limit(self, v, load=False): + """ + Setter method for max_limit, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/max_limit (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_limit is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_limit() directly. + + YANG Description: Maximum number of entries available for the resource. The value +is the theoretical maximum resource utilization possible. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_limit must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__max_limit = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_limit(self): + self.__max_limit = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_high_watermark(self): + """ + Getter method for high_watermark, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/high_watermark (uint64) + + YANG Description: A watermark of highest number of entries used for this resource. + """ + return self.__high_watermark + + def _set_high_watermark(self, v, load=False): + """ + Setter method for high_watermark, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/high_watermark (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_high_watermark is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_high_watermark() directly. + + YANG Description: A watermark of highest number of entries used for this resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """high_watermark must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__high_watermark = t + if hasattr(self, '_set'): + self._set() + + def _unset_high_watermark(self): + self.__high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_last_high_watermark(self): + """ + Getter method for last_high_watermark, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/last_high_watermark (oc-types:timeticks64) + + YANG Description: The time when the high-watermark was last updated + """ + return self.__last_high_watermark + + def _set_last_high_watermark(self, v, load=False): + """ + Setter method for last_high_watermark, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/last_high_watermark (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_high_watermark is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_high_watermark() directly. + + YANG Description: The time when the high-watermark was last updated + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_high_watermark must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_high_watermark = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_high_watermark(self): + self.__last_high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + name = __builtin__.property(_get_name) + used = __builtin__.property(_get_used) + committed = __builtin__.property(_get_committed) + free = __builtin__.property(_get_free) + max_limit = __builtin__.property(_get_max_limit) + high_watermark = __builtin__.property(_get_high_watermark) + last_high_watermark = __builtin__.property(_get_last_high_watermark) + + + _pyangbind_elements = OrderedDict([('name', name), ('used', used), ('committed', committed), ('free', free), ('max_limit', max_limit), ('high_watermark', high_watermark), ('last_high_watermark', last_high_watermark), ]) + + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/chassis/utilization/resources/resource/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for each resource. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__used','__committed','__free','__max_limit','__high_watermark','__last_high_watermark',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__used = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__committed = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__free = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__max_limit = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__last_high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'chassis', 'utilization', 'resources', 'resource', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/name (string) + + YANG Description: Resource name within the component. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Resource name within the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_used(self): + """ + Getter method for used, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/used (uint64) + + YANG Description: Number of entries currently in use for the resource. + """ + return self.__used + + def _set_used(self, v, load=False): + """ + Setter method for used, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/used (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_used is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_used() directly. + + YANG Description: Number of entries currently in use for the resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """used must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__used = t + if hasattr(self, '_set'): + self._set() + + def _unset_used(self): + self.__used = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_committed(self): + """ + Getter method for committed, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/committed (uint64) + + YANG Description: Number of entries currently reserved for this resource. This is only +relevant to tables which allocate a block of resource for a given +feature. + """ + return self.__committed + + def _set_committed(self, v, load=False): + """ + Setter method for committed, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/committed (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_committed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_committed() directly. + + YANG Description: Number of entries currently reserved for this resource. This is only +relevant to tables which allocate a block of resource for a given +feature. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """committed must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__committed = t + if hasattr(self, '_set'): + self._set() + + def _unset_committed(self): + self.__committed = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_free(self): + """ + Getter method for free, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/free (uint64) + + YANG Description: Number of entries available to use. + """ + return self.__free + + def _set_free(self, v, load=False): + """ + Setter method for free, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/free (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_free is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_free() directly. + + YANG Description: Number of entries available to use. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """free must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__free = t + if hasattr(self, '_set'): + self._set() + + def _unset_free(self): + self.__free = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_max_limit(self): + """ + Getter method for max_limit, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/max_limit (uint64) + + YANG Description: Maximum number of entries available for the resource. The value +is the theoretical maximum resource utilization possible. + """ + return self.__max_limit + + def _set_max_limit(self, v, load=False): + """ + Setter method for max_limit, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/max_limit (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_limit is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_limit() directly. + + YANG Description: Maximum number of entries available for the resource. The value +is the theoretical maximum resource utilization possible. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_limit must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__max_limit = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_limit(self): + self.__max_limit = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_high_watermark(self): + """ + Getter method for high_watermark, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/high_watermark (uint64) + + YANG Description: A watermark of highest number of entries used for this resource. + """ + return self.__high_watermark + + def _set_high_watermark(self, v, load=False): + """ + Setter method for high_watermark, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/high_watermark (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_high_watermark is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_high_watermark() directly. + + YANG Description: A watermark of highest number of entries used for this resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """high_watermark must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__high_watermark = t + if hasattr(self, '_set'): + self._set() + + def _unset_high_watermark(self): + self.__high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_last_high_watermark(self): + """ + Getter method for last_high_watermark, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/last_high_watermark (oc-types:timeticks64) + + YANG Description: The time when the high-watermark was last updated + """ + return self.__last_high_watermark + + def _set_last_high_watermark(self, v, load=False): + """ + Setter method for last_high_watermark, mapped from YANG variable /components/component/chassis/utilization/resources/resource/state/last_high_watermark (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_high_watermark is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_high_watermark() directly. + + YANG Description: The time when the high-watermark was last updated + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_high_watermark must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_high_watermark = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_high_watermark(self): + self.__last_high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + name = __builtin__.property(_get_name) + used = __builtin__.property(_get_used) + committed = __builtin__.property(_get_committed) + free = __builtin__.property(_get_free) + max_limit = __builtin__.property(_get_max_limit) + high_watermark = __builtin__.property(_get_high_watermark) + last_high_watermark = __builtin__.property(_get_last_high_watermark) + + + _pyangbind_elements = OrderedDict([('name', name), ('used', used), ('committed', committed), ('free', free), ('max_limit', max_limit), ('high_watermark', high_watermark), ('last_high_watermark', last_high_watermark), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/config/__init__.py b/hackfest/netconf-oc/openconfig/components/component/config/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..05fc5b7959140a835f0cbeee106f326b689e072c --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/config/__init__.py @@ -0,0 +1,218 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for each component + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/config/name (string) + + YANG Description: Device name for the component -- this may not be a +configurable parameter on many implementations. Where +component preconfiguration is supported, for example, +the component name may be configurable. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/config/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Device name for the component -- this may not be a +configurable parameter on many implementations. Where +component preconfiguration is supported, for example, +the component name may be configurable. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for each component + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/config/name (string) + + YANG Description: Device name for the component -- this may not be a +configurable parameter on many implementations. Where +component preconfiguration is supported, for example, +the component name may be configurable. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/config/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Device name for the component -- this may not be a +configurable parameter on many implementations. Where +component preconfiguration is supported, for example, +the component name may be configurable. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/controller_card/__init__.py b/hackfest/netconf-oc/openconfig/components/component/controller_card/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7575a47edcbec0bded345e9bdb3a4ef2c18d6b45 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/controller_card/__init__.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class controller_card(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/controller-card. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for controller card components, i.e., for components +with type=CONTROLLER_CARD + """ + _pyangbind_elements = {} + + + +class controller_card(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/controller-card. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for controller card components, i.e., for components +with type=CONTROLLER_CARD + """ + _pyangbind_elements = {} + + + diff --git a/hackfest/netconf-oc/openconfig/components/component/cpu/__init__.py b/hackfest/netconf-oc/openconfig/components/component/cpu/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..06420eb73a3c14d5e991872eecd4cd68f4b726e2 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/cpu/__init__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class cpu(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/cpu. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for cpu components + """ + _pyangbind_elements = {} + + + +class cpu(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/cpu. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for cpu components + """ + _pyangbind_elements = {} + + + diff --git a/hackfest/netconf-oc/openconfig/components/component/fabric/__init__.py b/hackfest/netconf-oc/openconfig/components/component/fabric/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..b88c441d803837f34cfe270a482ddf6a1d9dd878 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/fabric/__init__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class fabric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/fabric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for fabric components + """ + _pyangbind_elements = {} + + + +class fabric(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/fabric. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for fabric components + """ + _pyangbind_elements = {} + + + diff --git a/hackfest/netconf-oc/openconfig/components/component/fan/__init__.py b/hackfest/netconf-oc/openconfig/components/component/fan/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e1d3cd8498e89aa26235c0ba94d2aee418c27e70 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/fan/__init__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class fan(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/fan. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for fan components + """ + _pyangbind_elements = {} + + + +class fan(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/fan. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for fan components + """ + _pyangbind_elements = {} + + + diff --git a/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/__init__.py b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..a2f0ee8b82fa19dd322d3224de33942a050a6fa2 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/__init__.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import utilization +class integrated_circuit(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/integrated-circuit. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for chip components, such as ASIC, NPUs, etc. + """ + __slots__ = ('_path_helper', '_extmethods', '__utilization',) + + _yang_name = 'integrated-circuit' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__utilization = YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit'] + + def _get_utilization(self): + """ + Getter method for utilization, mapped from YANG variable /components/component/integrated_circuit/utilization (container) + + YANG Description: Utilization of the component. + """ + return self.__utilization + + def _set_utilization(self, v, load=False): + """ + Setter method for utilization, mapped from YANG variable /components/component/integrated_circuit/utilization (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_utilization is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_utilization() directly. + + YANG Description: Utilization of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """utilization must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__utilization = t + if hasattr(self, '_set'): + self._set() + + def _unset_utilization(self): + self.__utilization = YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + utilization = __builtin__.property(_get_utilization, _set_utilization) + + + _pyangbind_elements = OrderedDict([('utilization', utilization), ]) + + +from . import utilization +class integrated_circuit(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/integrated-circuit. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for chip components, such as ASIC, NPUs, etc. + """ + __slots__ = ('_path_helper', '_extmethods', '__utilization',) + + _yang_name = 'integrated-circuit' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__utilization = YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit'] + + def _get_utilization(self): + """ + Getter method for utilization, mapped from YANG variable /components/component/integrated_circuit/utilization (container) + + YANG Description: Utilization of the component. + """ + return self.__utilization + + def _set_utilization(self, v, load=False): + """ + Setter method for utilization, mapped from YANG variable /components/component/integrated_circuit/utilization (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_utilization is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_utilization() directly. + + YANG Description: Utilization of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """utilization must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__utilization = t + if hasattr(self, '_set'): + self._set() + + def _unset_utilization(self): + self.__utilization = YANGDynClass(base=utilization.utilization, is_container='container', yang_name="utilization", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + utilization = __builtin__.property(_get_utilization, _set_utilization) + + + _pyangbind_elements = OrderedDict([('utilization', utilization), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/__init__.py b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..dc2ebc87c9230ab64955cec0a4bfcf752b97acc0 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/__init__.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import resources +class utilization(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/integrated-circuit/utilization. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Utilization of the component. + """ + __slots__ = ('_path_helper', '_extmethods', '__resources',) + + _yang_name = 'utilization' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__resources = YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit', 'utilization'] + + def _get_resources(self): + """ + Getter method for resources, mapped from YANG variable /components/component/integrated_circuit/utilization/resources (container) + + YANG Description: Enclosing container for the resources in this component. + """ + return self.__resources + + def _set_resources(self, v, load=False): + """ + Setter method for resources, mapped from YANG variable /components/component/integrated_circuit/utilization/resources (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_resources is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_resources() directly. + + YANG Description: Enclosing container for the resources in this component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """resources must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__resources = t + if hasattr(self, '_set'): + self._set() + + def _unset_resources(self): + self.__resources = YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + resources = __builtin__.property(_get_resources, _set_resources) + + + _pyangbind_elements = OrderedDict([('resources', resources), ]) + + +from . import resources +class utilization(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/integrated-circuit/utilization. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Utilization of the component. + """ + __slots__ = ('_path_helper', '_extmethods', '__resources',) + + _yang_name = 'utilization' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__resources = YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit', 'utilization'] + + def _get_resources(self): + """ + Getter method for resources, mapped from YANG variable /components/component/integrated_circuit/utilization/resources (container) + + YANG Description: Enclosing container for the resources in this component. + """ + return self.__resources + + def _set_resources(self, v, load=False): + """ + Setter method for resources, mapped from YANG variable /components/component/integrated_circuit/utilization/resources (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_resources is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_resources() directly. + + YANG Description: Enclosing container for the resources in this component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """resources must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__resources = t + if hasattr(self, '_set'): + self._set() + + def _unset_resources(self): + self.__resources = YANGDynClass(base=resources.resources, is_container='container', yang_name="resources", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + resources = __builtin__.property(_get_resources, _set_resources) + + + _pyangbind_elements = OrderedDict([('resources', resources), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/__init__.py b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..f0833cc9b6254d4dab2a73303835af935316be07 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/__init__.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import resource +class resources(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/integrated-circuit/utilization/resources. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container for the resources in this component. + """ + __slots__ = ('_path_helper', '_extmethods', '__resource',) + + _yang_name = 'resources' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__resource = YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit', 'utilization', 'resources'] + + def _get_resource(self): + """ + Getter method for resource, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource (list) + + YANG Description: List of resources, keyed by resource name. + """ + return self.__resource + + def _set_resource(self, v, load=False): + """ + Setter method for resource, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_resource is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_resource() directly. + + YANG Description: List of resources, keyed by resource name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """resource must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True)""", + }) + + self.__resource = t + if hasattr(self, '_set'): + self._set() + + def _unset_resource(self): + self.__resource = YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + resource = __builtin__.property(_get_resource, _set_resource) + + + _pyangbind_elements = OrderedDict([('resource', resource), ]) + + +from . import resource +class resources(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/integrated-circuit/utilization/resources. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container for the resources in this component. + """ + __slots__ = ('_path_helper', '_extmethods', '__resource',) + + _yang_name = 'resources' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__resource = YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit', 'utilization', 'resources'] + + def _get_resource(self): + """ + Getter method for resource, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource (list) + + YANG Description: List of resources, keyed by resource name. + """ + return self.__resource + + def _set_resource(self, v, load=False): + """ + Setter method for resource, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_resource is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_resource() directly. + + YANG Description: List of resources, keyed by resource name. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """resource must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True)""", + }) + + self.__resource = t + if hasattr(self, '_set'): + self._set() + + def _unset_resource(self): + self.__resource = YANGDynClass(base=YANGListType("name",resource.resource, yang_name="resource", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="resource", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + resource = __builtin__.property(_get_resource, _set_resource) + + + _pyangbind_elements = OrderedDict([('resource', resource), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/resource/__init__.py b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/resource/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..fe54dd37de1e3c4637206e887b07286d611d1e1c --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/resource/__init__.py @@ -0,0 +1,376 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import config +from . import state +class resource(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/integrated-circuit/utilization/resources/resource. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of resources, keyed by resource name. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state',) + + _yang_name = 'resource' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit', 'utilization', 'resources', 'resource'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/name (leafref) + + YANG Description: References the resource name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: References the resource name. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/config (container) + + YANG Description: Configuration data for each resource. + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for each resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state (container) + + YANG Description: Operational state data for each resource. + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for each resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ]) + + +from . import config +from . import state +class resource(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/integrated-circuit/utilization/resources/resource. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of resources, keyed by resource name. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state',) + + _yang_name = 'resource' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit', 'utilization', 'resources', 'resource'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/name (leafref) + + YANG Description: References the resource name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: References the resource name. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/config (container) + + YANG Description: Configuration data for each resource. + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for each resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state (container) + + YANG Description: Operational state data for each resource. + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for each resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/resource/config/__init__.py b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/resource/config/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..dbc0dc799a609085f77f18a623042a7b1ca556ce --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/resource/config/__init__.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/integrated-circuit/utilization/resources/resource/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for each resource. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit', 'utilization', 'resources', 'resource', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/config/name (string) + + YANG Description: Resource name within the component. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/config/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Resource name within the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/integrated-circuit/utilization/resources/resource/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for each resource. + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit', 'utilization', 'resources', 'resource', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/config/name (string) + + YANG Description: Resource name within the component. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/config/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Resource name within the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/resource/state/__init__.py b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/resource/state/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e4cb2cec886fe113f1fd595c386eef65e084374f --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/integrated_circuit/utilization/resources/resource/state/__init__.py @@ -0,0 +1,686 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/integrated-circuit/utilization/resources/resource/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for each resource. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__used','__committed','__free','__max_limit','__high_watermark','__last_high_watermark',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__used = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__committed = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__free = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__max_limit = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__last_high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit', 'utilization', 'resources', 'resource', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/name (string) + + YANG Description: Resource name within the component. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Resource name within the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_used(self): + """ + Getter method for used, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/used (uint64) + + YANG Description: Number of entries currently in use for the resource. + """ + return self.__used + + def _set_used(self, v, load=False): + """ + Setter method for used, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/used (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_used is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_used() directly. + + YANG Description: Number of entries currently in use for the resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """used must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__used = t + if hasattr(self, '_set'): + self._set() + + def _unset_used(self): + self.__used = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_committed(self): + """ + Getter method for committed, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/committed (uint64) + + YANG Description: Number of entries currently reserved for this resource. This is only +relevant to tables which allocate a block of resource for a given +feature. + """ + return self.__committed + + def _set_committed(self, v, load=False): + """ + Setter method for committed, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/committed (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_committed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_committed() directly. + + YANG Description: Number of entries currently reserved for this resource. This is only +relevant to tables which allocate a block of resource for a given +feature. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """committed must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__committed = t + if hasattr(self, '_set'): + self._set() + + def _unset_committed(self): + self.__committed = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_free(self): + """ + Getter method for free, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/free (uint64) + + YANG Description: Number of entries available to use. + """ + return self.__free + + def _set_free(self, v, load=False): + """ + Setter method for free, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/free (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_free is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_free() directly. + + YANG Description: Number of entries available to use. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """free must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__free = t + if hasattr(self, '_set'): + self._set() + + def _unset_free(self): + self.__free = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_max_limit(self): + """ + Getter method for max_limit, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/max_limit (uint64) + + YANG Description: Maximum number of entries available for the resource. The value +is the theoretical maximum resource utilization possible. + """ + return self.__max_limit + + def _set_max_limit(self, v, load=False): + """ + Setter method for max_limit, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/max_limit (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_limit is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_limit() directly. + + YANG Description: Maximum number of entries available for the resource. The value +is the theoretical maximum resource utilization possible. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_limit must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__max_limit = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_limit(self): + self.__max_limit = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_high_watermark(self): + """ + Getter method for high_watermark, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/high_watermark (uint64) + + YANG Description: A watermark of highest number of entries used for this resource. + """ + return self.__high_watermark + + def _set_high_watermark(self, v, load=False): + """ + Setter method for high_watermark, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/high_watermark (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_high_watermark is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_high_watermark() directly. + + YANG Description: A watermark of highest number of entries used for this resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """high_watermark must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__high_watermark = t + if hasattr(self, '_set'): + self._set() + + def _unset_high_watermark(self): + self.__high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_last_high_watermark(self): + """ + Getter method for last_high_watermark, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/last_high_watermark (oc-types:timeticks64) + + YANG Description: The time when the high-watermark was last updated + """ + return self.__last_high_watermark + + def _set_last_high_watermark(self, v, load=False): + """ + Setter method for last_high_watermark, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/last_high_watermark (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_high_watermark is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_high_watermark() directly. + + YANG Description: The time when the high-watermark was last updated + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_high_watermark must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_high_watermark = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_high_watermark(self): + self.__last_high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + name = __builtin__.property(_get_name) + used = __builtin__.property(_get_used) + committed = __builtin__.property(_get_committed) + free = __builtin__.property(_get_free) + max_limit = __builtin__.property(_get_max_limit) + high_watermark = __builtin__.property(_get_high_watermark) + last_high_watermark = __builtin__.property(_get_last_high_watermark) + + + _pyangbind_elements = OrderedDict([('name', name), ('used', used), ('committed', committed), ('free', free), ('max_limit', max_limit), ('high_watermark', high_watermark), ('last_high_watermark', last_high_watermark), ]) + + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/integrated-circuit/utilization/resources/resource/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for each resource. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__used','__committed','__free','__max_limit','__high_watermark','__last_high_watermark',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__used = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__committed = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__free = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__max_limit = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__last_high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'integrated-circuit', 'utilization', 'resources', 'resource', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/name (string) + + YANG Description: Resource name within the component. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Resource name within the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_used(self): + """ + Getter method for used, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/used (uint64) + + YANG Description: Number of entries currently in use for the resource. + """ + return self.__used + + def _set_used(self, v, load=False): + """ + Setter method for used, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/used (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_used is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_used() directly. + + YANG Description: Number of entries currently in use for the resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """used must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__used = t + if hasattr(self, '_set'): + self._set() + + def _unset_used(self): + self.__used = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="used", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_committed(self): + """ + Getter method for committed, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/committed (uint64) + + YANG Description: Number of entries currently reserved for this resource. This is only +relevant to tables which allocate a block of resource for a given +feature. + """ + return self.__committed + + def _set_committed(self, v, load=False): + """ + Setter method for committed, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/committed (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_committed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_committed() directly. + + YANG Description: Number of entries currently reserved for this resource. This is only +relevant to tables which allocate a block of resource for a given +feature. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """committed must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__committed = t + if hasattr(self, '_set'): + self._set() + + def _unset_committed(self): + self.__committed = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="committed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_free(self): + """ + Getter method for free, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/free (uint64) + + YANG Description: Number of entries available to use. + """ + return self.__free + + def _set_free(self, v, load=False): + """ + Setter method for free, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/free (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_free is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_free() directly. + + YANG Description: Number of entries available to use. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """free must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__free = t + if hasattr(self, '_set'): + self._set() + + def _unset_free(self): + self.__free = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="free", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_max_limit(self): + """ + Getter method for max_limit, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/max_limit (uint64) + + YANG Description: Maximum number of entries available for the resource. The value +is the theoretical maximum resource utilization possible. + """ + return self.__max_limit + + def _set_max_limit(self, v, load=False): + """ + Setter method for max_limit, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/max_limit (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_limit is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_limit() directly. + + YANG Description: Maximum number of entries available for the resource. The value +is the theoretical maximum resource utilization possible. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_limit must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__max_limit = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_limit(self): + self.__max_limit = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-limit", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_high_watermark(self): + """ + Getter method for high_watermark, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/high_watermark (uint64) + + YANG Description: A watermark of highest number of entries used for this resource. + """ + return self.__high_watermark + + def _set_high_watermark(self, v, load=False): + """ + Setter method for high_watermark, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/high_watermark (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_high_watermark is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_high_watermark() directly. + + YANG Description: A watermark of highest number of entries used for this resource. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """high_watermark must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__high_watermark = t + if hasattr(self, '_set'): + self._set() + + def _unset_high_watermark(self): + self.__high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_last_high_watermark(self): + """ + Getter method for last_high_watermark, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/last_high_watermark (oc-types:timeticks64) + + YANG Description: The time when the high-watermark was last updated + """ + return self.__last_high_watermark + + def _set_last_high_watermark(self, v, load=False): + """ + Setter method for last_high_watermark, mapped from YANG variable /components/component/integrated_circuit/utilization/resources/resource/state/last_high_watermark (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_high_watermark is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_high_watermark() directly. + + YANG Description: The time when the high-watermark was last updated + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_high_watermark must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_high_watermark = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_high_watermark(self): + self.__last_high_watermark = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-high-watermark", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + name = __builtin__.property(_get_name) + used = __builtin__.property(_get_used) + committed = __builtin__.property(_get_committed) + free = __builtin__.property(_get_free) + max_limit = __builtin__.property(_get_max_limit) + high_watermark = __builtin__.property(_get_high_watermark) + last_high_watermark = __builtin__.property(_get_last_high_watermark) + + + _pyangbind_elements = OrderedDict([('name', name), ('used', used), ('committed', committed), ('free', free), ('max_limit', max_limit), ('high_watermark', high_watermark), ('last_high_watermark', last_high_watermark), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/port/__init__.py b/hackfest/netconf-oc/openconfig/components/component/port/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..74542ccd89fc359229b55c7fbb2f6d6701d0fd1a --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/port/__init__.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import breakout_mode +class port(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/port. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for physical port components + """ + __slots__ = ('_path_helper', '_extmethods', '__breakout_mode',) + + _yang_name = 'port' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__breakout_mode = YANGDynClass(base=breakout_mode.breakout_mode, is_container='container', yang_name="breakout-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port'] + + def _get_breakout_mode(self): + """ + Getter method for breakout_mode, mapped from YANG variable /components/component/port/breakout_mode (container) + + YANG Description: Top-level container for port breakout-mode data. + """ + return self.__breakout_mode + + def _set_breakout_mode(self, v, load=False): + """ + Setter method for breakout_mode, mapped from YANG variable /components/component/port/breakout_mode (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_breakout_mode is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_breakout_mode() directly. + + YANG Description: Top-level container for port breakout-mode data. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=breakout_mode.breakout_mode, is_container='container', yang_name="breakout-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """breakout_mode must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=breakout_mode.breakout_mode, is_container='container', yang_name="breakout-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True)""", + }) + + self.__breakout_mode = t + if hasattr(self, '_set'): + self._set() + + def _unset_breakout_mode(self): + self.__breakout_mode = YANGDynClass(base=breakout_mode.breakout_mode, is_container='container', yang_name="breakout-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + breakout_mode = __builtin__.property(_get_breakout_mode, _set_breakout_mode) + + + _pyangbind_elements = OrderedDict([('breakout_mode', breakout_mode), ]) + + +from . import breakout_mode +class port(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/port. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for physical port components + """ + __slots__ = ('_path_helper', '_extmethods', '__breakout_mode',) + + _yang_name = 'port' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__breakout_mode = YANGDynClass(base=breakout_mode.breakout_mode, is_container='container', yang_name="breakout-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port'] + + def _get_breakout_mode(self): + """ + Getter method for breakout_mode, mapped from YANG variable /components/component/port/breakout_mode (container) + + YANG Description: Top-level container for port breakout-mode data. + """ + return self.__breakout_mode + + def _set_breakout_mode(self, v, load=False): + """ + Setter method for breakout_mode, mapped from YANG variable /components/component/port/breakout_mode (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_breakout_mode is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_breakout_mode() directly. + + YANG Description: Top-level container for port breakout-mode data. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=breakout_mode.breakout_mode, is_container='container', yang_name="breakout-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """breakout_mode must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=breakout_mode.breakout_mode, is_container='container', yang_name="breakout-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True)""", + }) + + self.__breakout_mode = t + if hasattr(self, '_set'): + self._set() + + def _unset_breakout_mode(self): + self.__breakout_mode = YANGDynClass(base=breakout_mode.breakout_mode, is_container='container', yang_name="breakout-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + breakout_mode = __builtin__.property(_get_breakout_mode, _set_breakout_mode) + + + _pyangbind_elements = OrderedDict([('breakout_mode', breakout_mode), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/__init__.py b/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..363988ab6a25e9f8e5928b71e5004f95a6dd49f6 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/__init__.py @@ -0,0 +1,300 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import groups +class breakout_mode(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/port/breakout-mode. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Top-level container for port breakout-mode data. + """ + __slots__ = ('_path_helper', '_extmethods', '__groups',) + + _yang_name = 'breakout-mode' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__groups = YANGDynClass(base=groups.groups, is_container='container', yang_name="groups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port', 'breakout-mode'] + + def _get_groups(self): + """ + Getter method for groups, mapped from YANG variable /components/component/port/breakout_mode/groups (container) + + YANG Description: Top level container for breakout groups data. + +When a device has the capability to break a port into +interfaces of different speeds and different number of +physical channels, it can breakout a 400G OSFP port with +8 physical channels (with support for 25G NRZ, 50G PAM4 +and 100G PAM4) in the following configuration: + +100G + 100G + 200G -> 1 interface with 2 physical channels +and 1 interface with 4 physical channels and 1 interface with +2 physical channels. With this configuration the interface in +1st breakout group would use 50G PAM4 modulation, interface +in 2nd breakout group would use 25G NRZ modulation and the +interface in 3rd breakout group would use 100G PAM4 modulation +This configuration would result in 3 entries in the breakout +groups list. + +When a device does not have the capability to break a port +into interfaces of different speeds and different number of +physical channels, it would breakout a 400G OSFP port with +8 physical channels in the following configuration: + +50G -> 8 interfaces with 1 physical channel each, this would +result in 1 entry in the breakout groups list. + """ + return self.__groups + + def _set_groups(self, v, load=False): + """ + Setter method for groups, mapped from YANG variable /components/component/port/breakout_mode/groups (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_groups is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_groups() directly. + + YANG Description: Top level container for breakout groups data. + +When a device has the capability to break a port into +interfaces of different speeds and different number of +physical channels, it can breakout a 400G OSFP port with +8 physical channels (with support for 25G NRZ, 50G PAM4 +and 100G PAM4) in the following configuration: + +100G + 100G + 200G -> 1 interface with 2 physical channels +and 1 interface with 4 physical channels and 1 interface with +2 physical channels. With this configuration the interface in +1st breakout group would use 50G PAM4 modulation, interface +in 2nd breakout group would use 25G NRZ modulation and the +interface in 3rd breakout group would use 100G PAM4 modulation +This configuration would result in 3 entries in the breakout +groups list. + +When a device does not have the capability to break a port +into interfaces of different speeds and different number of +physical channels, it would breakout a 400G OSFP port with +8 physical channels in the following configuration: + +50G -> 8 interfaces with 1 physical channel each, this would +result in 1 entry in the breakout groups list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=groups.groups, is_container='container', yang_name="groups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """groups must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=groups.groups, is_container='container', yang_name="groups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True)""", + }) + + self.__groups = t + if hasattr(self, '_set'): + self._set() + + def _unset_groups(self): + self.__groups = YANGDynClass(base=groups.groups, is_container='container', yang_name="groups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + groups = __builtin__.property(_get_groups, _set_groups) + + + _pyangbind_elements = OrderedDict([('groups', groups), ]) + + +from . import groups +class breakout_mode(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/port/breakout-mode. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Top-level container for port breakout-mode data. + """ + __slots__ = ('_path_helper', '_extmethods', '__groups',) + + _yang_name = 'breakout-mode' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__groups = YANGDynClass(base=groups.groups, is_container='container', yang_name="groups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port', 'breakout-mode'] + + def _get_groups(self): + """ + Getter method for groups, mapped from YANG variable /components/component/port/breakout_mode/groups (container) + + YANG Description: Top level container for breakout groups data. + +When a device has the capability to break a port into +interfaces of different speeds and different number of +physical channels, it can breakout a 400G OSFP port with +8 physical channels (with support for 25G NRZ, 50G PAM4 +and 100G PAM4) in the following configuration: + +100G + 100G + 200G -> 1 interface with 2 physical channels +and 1 interface with 4 physical channels and 1 interface with +2 physical channels. With this configuration the interface in +1st breakout group would use 50G PAM4 modulation, interface +in 2nd breakout group would use 25G NRZ modulation and the +interface in 3rd breakout group would use 100G PAM4 modulation +This configuration would result in 3 entries in the breakout +groups list. + +When a device does not have the capability to break a port +into interfaces of different speeds and different number of +physical channels, it would breakout a 400G OSFP port with +8 physical channels in the following configuration: + +50G -> 8 interfaces with 1 physical channel each, this would +result in 1 entry in the breakout groups list. + """ + return self.__groups + + def _set_groups(self, v, load=False): + """ + Setter method for groups, mapped from YANG variable /components/component/port/breakout_mode/groups (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_groups is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_groups() directly. + + YANG Description: Top level container for breakout groups data. + +When a device has the capability to break a port into +interfaces of different speeds and different number of +physical channels, it can breakout a 400G OSFP port with +8 physical channels (with support for 25G NRZ, 50G PAM4 +and 100G PAM4) in the following configuration: + +100G + 100G + 200G -> 1 interface with 2 physical channels +and 1 interface with 4 physical channels and 1 interface with +2 physical channels. With this configuration the interface in +1st breakout group would use 50G PAM4 modulation, interface +in 2nd breakout group would use 25G NRZ modulation and the +interface in 3rd breakout group would use 100G PAM4 modulation +This configuration would result in 3 entries in the breakout +groups list. + +When a device does not have the capability to break a port +into interfaces of different speeds and different number of +physical channels, it would breakout a 400G OSFP port with +8 physical channels in the following configuration: + +50G -> 8 interfaces with 1 physical channel each, this would +result in 1 entry in the breakout groups list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=groups.groups, is_container='container', yang_name="groups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """groups must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=groups.groups, is_container='container', yang_name="groups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True)""", + }) + + self.__groups = t + if hasattr(self, '_set'): + self._set() + + def _unset_groups(self): + self.__groups = YANGDynClass(base=groups.groups, is_container='container', yang_name="groups", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + groups = __builtin__.property(_get_groups, _set_groups) + + + _pyangbind_elements = OrderedDict([('groups', groups), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/__init__.py b/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..523eb15138bed339e2361a968fc3701cdbfb2774 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/__init__.py @@ -0,0 +1,254 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import group +class groups(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/port/breakout-mode/groups. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Top level container for breakout groups data. + +When a device has the capability to break a port into +interfaces of different speeds and different number of +physical channels, it can breakout a 400G OSFP port with +8 physical channels (with support for 25G NRZ, 50G PAM4 +and 100G PAM4) in the following configuration: + +100G + 100G + 200G -> 1 interface with 2 physical channels +and 1 interface with 4 physical channels and 1 interface with +2 physical channels. With this configuration the interface in +1st breakout group would use 50G PAM4 modulation, interface +in 2nd breakout group would use 25G NRZ modulation and the +interface in 3rd breakout group would use 100G PAM4 modulation +This configuration would result in 3 entries in the breakout +groups list. + +When a device does not have the capability to break a port +into interfaces of different speeds and different number of +physical channels, it would breakout a 400G OSFP port with +8 physical channels in the following configuration: + +50G -> 8 interfaces with 1 physical channel each, this would +result in 1 entry in the breakout groups list. + """ + __slots__ = ('_path_helper', '_extmethods', '__group',) + + _yang_name = 'groups' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__group = YANGDynClass(base=YANGListType("index",group.group, yang_name="group", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port', 'breakout-mode', 'groups'] + + def _get_group(self): + """ + Getter method for group, mapped from YANG variable /components/component/port/breakout_mode/groups/group (list) + + YANG Description: List of breakout groups. + """ + return self.__group + + def _set_group(self, v, load=False): + """ + Setter method for group, mapped from YANG variable /components/component/port/breakout_mode/groups/group (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_group is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_group() directly. + + YANG Description: List of breakout groups. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",group.group, yang_name="group", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """group must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",group.group, yang_name="group", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='list', is_config=True)""", + }) + + self.__group = t + if hasattr(self, '_set'): + self._set() + + def _unset_group(self): + self.__group = YANGDynClass(base=YANGListType("index",group.group, yang_name="group", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='list', is_config=True) + + group = __builtin__.property(_get_group, _set_group) + + + _pyangbind_elements = OrderedDict([('group', group), ]) + + +from . import group +class groups(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/port/breakout-mode/groups. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Top level container for breakout groups data. + +When a device has the capability to break a port into +interfaces of different speeds and different number of +physical channels, it can breakout a 400G OSFP port with +8 physical channels (with support for 25G NRZ, 50G PAM4 +and 100G PAM4) in the following configuration: + +100G + 100G + 200G -> 1 interface with 2 physical channels +and 1 interface with 4 physical channels and 1 interface with +2 physical channels. With this configuration the interface in +1st breakout group would use 50G PAM4 modulation, interface +in 2nd breakout group would use 25G NRZ modulation and the +interface in 3rd breakout group would use 100G PAM4 modulation +This configuration would result in 3 entries in the breakout +groups list. + +When a device does not have the capability to break a port +into interfaces of different speeds and different number of +physical channels, it would breakout a 400G OSFP port with +8 physical channels in the following configuration: + +50G -> 8 interfaces with 1 physical channel each, this would +result in 1 entry in the breakout groups list. + """ + __slots__ = ('_path_helper', '_extmethods', '__group',) + + _yang_name = 'groups' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__group = YANGDynClass(base=YANGListType("index",group.group, yang_name="group", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port', 'breakout-mode', 'groups'] + + def _get_group(self): + """ + Getter method for group, mapped from YANG variable /components/component/port/breakout_mode/groups/group (list) + + YANG Description: List of breakout groups. + """ + return self.__group + + def _set_group(self, v, load=False): + """ + Setter method for group, mapped from YANG variable /components/component/port/breakout_mode/groups/group (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_group is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_group() directly. + + YANG Description: List of breakout groups. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",group.group, yang_name="group", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """group must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",group.group, yang_name="group", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='list', is_config=True)""", + }) + + self.__group = t + if hasattr(self, '_set'): + self._set() + + def _unset_group(self): + self.__group = YANGDynClass(base=YANGListType("index",group.group, yang_name="group", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="group", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='list', is_config=True) + + group = __builtin__.property(_get_group, _set_group) + + + _pyangbind_elements = OrderedDict([('group', group), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/group/__init__.py b/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/group/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..82104e792886041d3ef76eebd8a47bd8a8e17bf5 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/group/__init__.py @@ -0,0 +1,376 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import config +from . import state +class group(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/port/breakout-mode/groups/group. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of breakout groups. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__config','__state',) + + _yang_name = 'group' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port', 'breakout-mode', 'groups', 'group'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/index (leafref) + + YANG Description: Index of the breakout group entry in the breakout groups list. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/index (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Index of the breakout group entry in the breakout groups list. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config (container) + + YANG Description: Configuration data for breakout group. + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for breakout group. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state (container) + + YANG Description: Operational state data for breakout group. + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for breakout group. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('index', index), ('config', config), ('state', state), ]) + + +from . import config +from . import state +class group(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/port/breakout-mode/groups/group. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of breakout groups. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__config','__state',) + + _yang_name = 'group' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port', 'breakout-mode', 'groups', 'group'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/index (leafref) + + YANG Description: Index of the breakout group entry in the breakout groups list. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/index (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Index of the breakout group entry in the breakout groups list. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config (container) + + YANG Description: Configuration data for breakout group. + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for breakout group. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state (container) + + YANG Description: Operational state data for breakout group. + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for breakout group. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('index', index), ('config', config), ('state', state), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/group/config/__init__.py b/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/group/config/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..5a989534cd1f8272ee971533e2e4cc97e3b4fffc --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/group/config/__init__.py @@ -0,0 +1,464 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/port/breakout-mode/groups/group/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for breakout group. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__num_breakouts','__breakout_speed','__num_physical_channels',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + self.__num_breakouts = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + self.__breakout_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=True) + self.__num_physical_channels = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port', 'breakout-mode', 'groups', 'group', 'config'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/index (uint8) + + YANG Description: Each index specifies breakouts that are identical in +terms of speed and the number of physical channels. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/index (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Each index specifies breakouts that are identical in +terms of speed and the number of physical channels. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + + + def _get_num_breakouts(self): + """ + Getter method for num_breakouts, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/num_breakouts (uint8) + + YANG Description: Sets the number of interfaces using this breakout group. + """ + return self.__num_breakouts + + def _set_num_breakouts(self, v, load=False): + """ + Setter method for num_breakouts, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/num_breakouts (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_num_breakouts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_num_breakouts() directly. + + YANG Description: Sets the number of interfaces using this breakout group. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """num_breakouts must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True)""", + }) + + self.__num_breakouts = t + if hasattr(self, '_set'): + self._set() + + def _unset_num_breakouts(self): + self.__num_breakouts = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + + + def _get_breakout_speed(self): + """ + Getter method for breakout_speed, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/breakout_speed (identityref) + + YANG Description: Speed of interfaces in this breakout group, supported +values are defined by the ETHERNET_SPEED identity. + """ + return self.__breakout_speed + + def _set_breakout_speed(self, v, load=False): + """ + Setter method for breakout_speed, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/breakout_speed (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_breakout_speed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_breakout_speed() directly. + + YANG Description: Speed of interfaces in this breakout group, supported +values are defined by the ETHERNET_SPEED identity. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """breakout_speed must be of a type compatible with identityref""", + 'defined-type': "openconfig-platform-port:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=True)""", + }) + + self.__breakout_speed = t + if hasattr(self, '_set'): + self._set() + + def _unset_breakout_speed(self): + self.__breakout_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=True) + + + def _get_num_physical_channels(self): + """ + Getter method for num_physical_channels, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/num_physical_channels (uint8) + + YANG Description: Sets the number of lanes or physical channels assigned +to the interfaces in this breakout group. This leaf need +not be set if there is only one breakout group where all +the interfaces are of equal speed and have equal number +of physical channels + """ + return self.__num_physical_channels + + def _set_num_physical_channels(self, v, load=False): + """ + Setter method for num_physical_channels, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/num_physical_channels (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_num_physical_channels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_num_physical_channels() directly. + + YANG Description: Sets the number of lanes or physical channels assigned +to the interfaces in this breakout group. This leaf need +not be set if there is only one breakout group where all +the interfaces are of equal speed and have equal number +of physical channels + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """num_physical_channels must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True)""", + }) + + self.__num_physical_channels = t + if hasattr(self, '_set'): + self._set() + + def _unset_num_physical_channels(self): + self.__num_physical_channels = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + num_breakouts = __builtin__.property(_get_num_breakouts, _set_num_breakouts) + breakout_speed = __builtin__.property(_get_breakout_speed, _set_breakout_speed) + num_physical_channels = __builtin__.property(_get_num_physical_channels, _set_num_physical_channels) + + + _pyangbind_elements = OrderedDict([('index', index), ('num_breakouts', num_breakouts), ('breakout_speed', breakout_speed), ('num_physical_channels', num_physical_channels), ]) + + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/port/breakout-mode/groups/group/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for breakout group. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__num_breakouts','__breakout_speed','__num_physical_channels',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + self.__num_breakouts = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + self.__breakout_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=True) + self.__num_physical_channels = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port', 'breakout-mode', 'groups', 'group', 'config'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/index (uint8) + + YANG Description: Each index specifies breakouts that are identical in +terms of speed and the number of physical channels. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/index (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Each index specifies breakouts that are identical in +terms of speed and the number of physical channels. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + + + def _get_num_breakouts(self): + """ + Getter method for num_breakouts, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/num_breakouts (uint8) + + YANG Description: Sets the number of interfaces using this breakout group. + """ + return self.__num_breakouts + + def _set_num_breakouts(self, v, load=False): + """ + Setter method for num_breakouts, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/num_breakouts (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_num_breakouts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_num_breakouts() directly. + + YANG Description: Sets the number of interfaces using this breakout group. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """num_breakouts must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True)""", + }) + + self.__num_breakouts = t + if hasattr(self, '_set'): + self._set() + + def _unset_num_breakouts(self): + self.__num_breakouts = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + + + def _get_breakout_speed(self): + """ + Getter method for breakout_speed, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/breakout_speed (identityref) + + YANG Description: Speed of interfaces in this breakout group, supported +values are defined by the ETHERNET_SPEED identity. + """ + return self.__breakout_speed + + def _set_breakout_speed(self, v, load=False): + """ + Setter method for breakout_speed, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/breakout_speed (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_breakout_speed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_breakout_speed() directly. + + YANG Description: Speed of interfaces in this breakout group, supported +values are defined by the ETHERNET_SPEED identity. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """breakout_speed must be of a type compatible with identityref""", + 'defined-type': "openconfig-platform-port:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=True)""", + }) + + self.__breakout_speed = t + if hasattr(self, '_set'): + self._set() + + def _unset_breakout_speed(self): + self.__breakout_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=True) + + + def _get_num_physical_channels(self): + """ + Getter method for num_physical_channels, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/num_physical_channels (uint8) + + YANG Description: Sets the number of lanes or physical channels assigned +to the interfaces in this breakout group. This leaf need +not be set if there is only one breakout group where all +the interfaces are of equal speed and have equal number +of physical channels + """ + return self.__num_physical_channels + + def _set_num_physical_channels(self, v, load=False): + """ + Setter method for num_physical_channels, mapped from YANG variable /components/component/port/breakout_mode/groups/group/config/num_physical_channels (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_num_physical_channels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_num_physical_channels() directly. + + YANG Description: Sets the number of lanes or physical channels assigned +to the interfaces in this breakout group. This leaf need +not be set if there is only one breakout group where all +the interfaces are of equal speed and have equal number +of physical channels + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """num_physical_channels must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True)""", + }) + + self.__num_physical_channels = t + if hasattr(self, '_set'): + self._set() + + def _unset_num_physical_channels(self): + self.__num_physical_channels = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + num_breakouts = __builtin__.property(_get_num_breakouts, _set_num_breakouts) + breakout_speed = __builtin__.property(_get_breakout_speed, _set_breakout_speed) + num_physical_channels = __builtin__.property(_get_num_physical_channels, _set_num_physical_channels) + + + _pyangbind_elements = OrderedDict([('index', index), ('num_breakouts', num_breakouts), ('breakout_speed', breakout_speed), ('num_physical_channels', num_physical_channels), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/group/state/__init__.py b/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/group/state/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..71c63f44b61ef5b032652a2d43928d96c83a3a29 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/port/breakout_mode/groups/group/state/__init__.py @@ -0,0 +1,464 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/port/breakout-mode/groups/group/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for breakout group. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__num_breakouts','__breakout_speed','__num_physical_channels',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + self.__num_breakouts = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + self.__breakout_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=False) + self.__num_physical_channels = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port', 'breakout-mode', 'groups', 'group', 'state'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/index (uint8) + + YANG Description: Each index specifies breakouts that are identical in +terms of speed and the number of physical channels. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/index (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Each index specifies breakouts that are identical in +terms of speed and the number of physical channels. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + + + def _get_num_breakouts(self): + """ + Getter method for num_breakouts, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/num_breakouts (uint8) + + YANG Description: Sets the number of interfaces using this breakout group. + """ + return self.__num_breakouts + + def _set_num_breakouts(self, v, load=False): + """ + Setter method for num_breakouts, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/num_breakouts (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_num_breakouts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_num_breakouts() directly. + + YANG Description: Sets the number of interfaces using this breakout group. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """num_breakouts must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False)""", + }) + + self.__num_breakouts = t + if hasattr(self, '_set'): + self._set() + + def _unset_num_breakouts(self): + self.__num_breakouts = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + + + def _get_breakout_speed(self): + """ + Getter method for breakout_speed, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/breakout_speed (identityref) + + YANG Description: Speed of interfaces in this breakout group, supported +values are defined by the ETHERNET_SPEED identity. + """ + return self.__breakout_speed + + def _set_breakout_speed(self, v, load=False): + """ + Setter method for breakout_speed, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/breakout_speed (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_breakout_speed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_breakout_speed() directly. + + YANG Description: Speed of interfaces in this breakout group, supported +values are defined by the ETHERNET_SPEED identity. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """breakout_speed must be of a type compatible with identityref""", + 'defined-type': "openconfig-platform-port:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=False)""", + }) + + self.__breakout_speed = t + if hasattr(self, '_set'): + self._set() + + def _unset_breakout_speed(self): + self.__breakout_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=False) + + + def _get_num_physical_channels(self): + """ + Getter method for num_physical_channels, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/num_physical_channels (uint8) + + YANG Description: Sets the number of lanes or physical channels assigned +to the interfaces in this breakout group. This leaf need +not be set if there is only one breakout group where all +the interfaces are of equal speed and have equal number +of physical channels + """ + return self.__num_physical_channels + + def _set_num_physical_channels(self, v, load=False): + """ + Setter method for num_physical_channels, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/num_physical_channels (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_num_physical_channels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_num_physical_channels() directly. + + YANG Description: Sets the number of lanes or physical channels assigned +to the interfaces in this breakout group. This leaf need +not be set if there is only one breakout group where all +the interfaces are of equal speed and have equal number +of physical channels + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """num_physical_channels must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False)""", + }) + + self.__num_physical_channels = t + if hasattr(self, '_set'): + self._set() + + def _unset_num_physical_channels(self): + self.__num_physical_channels = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + + index = __builtin__.property(_get_index) + num_breakouts = __builtin__.property(_get_num_breakouts) + breakout_speed = __builtin__.property(_get_breakout_speed) + num_physical_channels = __builtin__.property(_get_num_physical_channels) + + + _pyangbind_elements = OrderedDict([('index', index), ('num_breakouts', num_breakouts), ('breakout_speed', breakout_speed), ('num_physical_channels', num_physical_channels), ]) + + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/port/breakout-mode/groups/group/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for breakout group. + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__num_breakouts','__breakout_speed','__num_physical_channels',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + self.__num_breakouts = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + self.__breakout_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=False) + self.__num_physical_channels = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'port', 'breakout-mode', 'groups', 'group', 'state'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/index (uint8) + + YANG Description: Each index specifies breakouts that are identical in +terms of speed and the number of physical channels. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/index (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: Each index specifies breakouts that are identical in +terms of speed and the number of physical channels. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + + + def _get_num_breakouts(self): + """ + Getter method for num_breakouts, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/num_breakouts (uint8) + + YANG Description: Sets the number of interfaces using this breakout group. + """ + return self.__num_breakouts + + def _set_num_breakouts(self, v, load=False): + """ + Setter method for num_breakouts, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/num_breakouts (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_num_breakouts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_num_breakouts() directly. + + YANG Description: Sets the number of interfaces using this breakout group. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """num_breakouts must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False)""", + }) + + self.__num_breakouts = t + if hasattr(self, '_set'): + self._set() + + def _unset_num_breakouts(self): + self.__num_breakouts = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-breakouts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + + + def _get_breakout_speed(self): + """ + Getter method for breakout_speed, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/breakout_speed (identityref) + + YANG Description: Speed of interfaces in this breakout group, supported +values are defined by the ETHERNET_SPEED identity. + """ + return self.__breakout_speed + + def _set_breakout_speed(self, v, load=False): + """ + Setter method for breakout_speed, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/breakout_speed (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_breakout_speed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_breakout_speed() directly. + + YANG Description: Speed of interfaces in this breakout group, supported +values are defined by the ETHERNET_SPEED identity. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """breakout_speed must be of a type compatible with identityref""", + 'defined-type': "openconfig-platform-port:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=False)""", + }) + + self.__breakout_speed = t + if hasattr(self, '_set'): + self._set() + + def _unset_breakout_speed(self): + self.__breakout_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="breakout-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='identityref', is_config=False) + + + def _get_num_physical_channels(self): + """ + Getter method for num_physical_channels, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/num_physical_channels (uint8) + + YANG Description: Sets the number of lanes or physical channels assigned +to the interfaces in this breakout group. This leaf need +not be set if there is only one breakout group where all +the interfaces are of equal speed and have equal number +of physical channels + """ + return self.__num_physical_channels + + def _set_num_physical_channels(self, v, load=False): + """ + Setter method for num_physical_channels, mapped from YANG variable /components/component/port/breakout_mode/groups/group/state/num_physical_channels (uint8) + If this variable is read-only (config: false) in the + source YANG file, then _set_num_physical_channels is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_num_physical_channels() directly. + + YANG Description: Sets the number of lanes or physical channels assigned +to the interfaces in this breakout group. This leaf need +not be set if there is only one breakout group where all +the interfaces are of equal speed and have equal number +of physical channels + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """num_physical_channels must be of a type compatible with uint8""", + 'defined-type': "uint8", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False)""", + }) + + self.__num_physical_channels = t + if hasattr(self, '_set'): + self._set() + + def _unset_num_physical_channels(self): + self.__num_physical_channels = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..255']}, int_size=8), is_leaf=True, yang_name="num-physical-channels", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='uint8', is_config=False) + + index = __builtin__.property(_get_index) + num_breakouts = __builtin__.property(_get_num_breakouts) + breakout_speed = __builtin__.property(_get_breakout_speed) + num_physical_channels = __builtin__.property(_get_num_physical_channels) + + + _pyangbind_elements = OrderedDict([('index', index), ('num_breakouts', num_breakouts), ('breakout_speed', breakout_speed), ('num_physical_channels', num_physical_channels), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/power_supply/__init__.py b/hackfest/netconf-oc/openconfig/components/component/power_supply/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..08a05b98f2d93e26ac391b1cd2c91bcec671348a --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/power_supply/__init__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class power_supply(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/power-supply. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for power supply components + """ + _pyangbind_elements = {} + + + +class power_supply(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/power-supply. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for power supply components + """ + _pyangbind_elements = {} + + + diff --git a/hackfest/netconf-oc/openconfig/components/component/properties/__init__.py b/hackfest/netconf-oc/openconfig/components/component/properties/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..4605df88f39390969e0932a0afac4f43ecd8ba9b --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/properties/__init__.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import property_ +class properties(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/properties. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container + """ + __slots__ = ('_path_helper', '_extmethods', '__property_',) + + _yang_name = 'properties' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__property_ = YANGDynClass(base=YANGListType("name",property_.property_, yang_name="property", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="property", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'properties'] + + def _get_property_(self): + """ + Getter method for property_, mapped from YANG variable /components/component/properties/property (list) + + YANG Description: List of system properties for the component + """ + return self.__property_ + + def _set_property_(self, v, load=False): + """ + Setter method for property_, mapped from YANG variable /components/component/properties/property (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_property_ is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_property_() directly. + + YANG Description: List of system properties for the component + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",property_.property_, yang_name="property", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="property", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """property_ must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",property_.property_, yang_name="property", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="property", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True)""", + }) + + self.__property_ = t + if hasattr(self, '_set'): + self._set() + + def _unset_property_(self): + self.__property_ = YANGDynClass(base=YANGListType("name",property_.property_, yang_name="property", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="property", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + property_ = __builtin__.property(_get_property_, _set_property_) + + + _pyangbind_elements = OrderedDict([('property_', property_), ]) + + +from . import property_ +class properties(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/properties. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container + """ + __slots__ = ('_path_helper', '_extmethods', '__property_',) + + _yang_name = 'properties' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__property_ = YANGDynClass(base=YANGListType("name",property_.property_, yang_name="property", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="property", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'properties'] + + def _get_property_(self): + """ + Getter method for property_, mapped from YANG variable /components/component/properties/property (list) + + YANG Description: List of system properties for the component + """ + return self.__property_ + + def _set_property_(self, v, load=False): + """ + Setter method for property_, mapped from YANG variable /components/component/properties/property (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_property_ is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_property_() directly. + + YANG Description: List of system properties for the component + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",property_.property_, yang_name="property", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="property", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """property_ must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",property_.property_, yang_name="property", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="property", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True)""", + }) + + self.__property_ = t + if hasattr(self, '_set'): + self._set() + + def _unset_property_(self): + self.__property_ = YANGDynClass(base=YANGListType("name",property_.property_, yang_name="property", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="property", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + property_ = __builtin__.property(_get_property_, _set_property_) + + + _pyangbind_elements = OrderedDict([('property_', property_), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/properties/property_/__init__.py b/hackfest/netconf-oc/openconfig/components/component/properties/property_/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..9e49ab5a26b56c05f1a8db30528d46bc66c17ed8 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/properties/property_/__init__.py @@ -0,0 +1,376 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import config +from . import state +class property_(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/properties/property. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of system properties for the component + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state',) + + _yang_name = 'property' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'properties', 'property'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/properties/property/name (leafref) + + YANG Description: Reference to the property name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/properties/property/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Reference to the property name. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/properties/property/config (container) + + YANG Description: Configuration data for each property + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/properties/property/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for each property + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/properties/property/state (container) + + YANG Description: Operational state data for each property + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/properties/property/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for each property + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ]) + + +from . import config +from . import state +class property_(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/properties/property. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of system properties for the component + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state',) + + _yang_name = 'property' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'properties', 'property'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/properties/property/name (leafref) + + YANG Description: Reference to the property name. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/properties/property/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Reference to the property name. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/properties/property/config (container) + + YANG Description: Configuration data for each property + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/properties/property/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for each property + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/properties/property/state (container) + + YANG Description: Operational state data for each property + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/properties/property/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for each property + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/properties/property_/config/__init__.py b/hackfest/netconf-oc/openconfig/components/component/properties/property_/config/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..6eaa7c03a7e44c436f5b85ad31cce5b1b57a6438 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/properties/property_/config/__init__.py @@ -0,0 +1,296 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/properties/property/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for each property + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__value',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + self.__value = YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'properties', 'property', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/properties/property/config/name (string) + + YANG Description: System-supplied name of the property -- this is typically +non-configurable + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/properties/property/config/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: System-supplied name of the property -- this is typically +non-configurable + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /components/component/properties/property/config/value (union) + + YANG Description: Property values can take on a variety of types. Signed and +unsigned integer types may be provided in smaller sizes, +e.g., int8, uint16, etc. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /components/component/properties/property/config/value (union) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: Property values can take on a variety of types. Signed and +unsigned integer types may be provided in smaller sizes, +e.g., int8, uint16, etc. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with union""", + 'defined-type': "openconfig-platform:union", + 'generated-type': """YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=True)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + value = __builtin__.property(_get_value, _set_value) + + + _pyangbind_elements = OrderedDict([('name', name), ('value', value), ]) + + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/properties/property/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for each property + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__value',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + self.__value = YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'properties', 'property', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/properties/property/config/name (string) + + YANG Description: System-supplied name of the property -- this is typically +non-configurable + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/properties/property/config/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: System-supplied name of the property -- this is typically +non-configurable + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=True) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /components/component/properties/property/config/value (union) + + YANG Description: Property values can take on a variety of types. Signed and +unsigned integer types may be provided in smaller sizes, +e.g., int8, uint16, etc. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /components/component/properties/property/config/value (union) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: Property values can take on a variety of types. Signed and +unsigned integer types may be provided in smaller sizes, +e.g., int8, uint16, etc. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with union""", + 'defined-type': "openconfig-platform:union", + 'generated-type': """YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=True)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + value = __builtin__.property(_get_value, _set_value) + + + _pyangbind_elements = OrderedDict([('name', name), ('value', value), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/properties/property_/state/__init__.py b/hackfest/netconf-oc/openconfig/components/component/properties/property_/state/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..4d50a0520390ca70e3bffbe75bc4290912c88e2a --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/properties/property_/state/__init__.py @@ -0,0 +1,374 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/properties/property/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for each property + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__value','__configurable',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__value = YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + self.__configurable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="configurable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'properties', 'property', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/properties/property/state/name (string) + + YANG Description: System-supplied name of the property -- this is typically +non-configurable + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/properties/property/state/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: System-supplied name of the property -- this is typically +non-configurable + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /components/component/properties/property/state/value (union) + + YANG Description: Property values can take on a variety of types. Signed and +unsigned integer types may be provided in smaller sizes, +e.g., int8, uint16, etc. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /components/component/properties/property/state/value (union) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: Property values can take on a variety of types. Signed and +unsigned integer types may be provided in smaller sizes, +e.g., int8, uint16, etc. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with union""", + 'defined-type': "openconfig-platform:union", + 'generated-type': """YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + + + def _get_configurable(self): + """ + Getter method for configurable, mapped from YANG variable /components/component/properties/property/state/configurable (boolean) + + YANG Description: Indication whether the property is user-configurable + """ + return self.__configurable + + def _set_configurable(self, v, load=False): + """ + Setter method for configurable, mapped from YANG variable /components/component/properties/property/state/configurable (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_configurable is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_configurable() directly. + + YANG Description: Indication whether the property is user-configurable + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="configurable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """configurable must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="configurable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False)""", + }) + + self.__configurable = t + if hasattr(self, '_set'): + self._set() + + def _unset_configurable(self): + self.__configurable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="configurable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + name = __builtin__.property(_get_name) + value = __builtin__.property(_get_value) + configurable = __builtin__.property(_get_configurable) + + + _pyangbind_elements = OrderedDict([('name', name), ('value', value), ('configurable', configurable), ]) + + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/properties/property/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for each property + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__value','__configurable',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__value = YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + self.__configurable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="configurable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'properties', 'property', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/properties/property/state/name (string) + + YANG Description: System-supplied name of the property -- this is typically +non-configurable + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/properties/property/state/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: System-supplied name of the property -- this is typically +non-configurable + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_value(self): + """ + Getter method for value, mapped from YANG variable /components/component/properties/property/state/value (union) + + YANG Description: Property values can take on a variety of types. Signed and +unsigned integer types may be provided in smaller sizes, +e.g., int8, uint16, etc. + """ + return self.__value + + def _set_value(self, v, load=False): + """ + Setter method for value, mapped from YANG variable /components/component/properties/property/state/value (union) + If this variable is read-only (config: false) in the + source YANG file, then _set_value is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_value() directly. + + YANG Description: Property values can take on a variety of types. Signed and +unsigned integer types may be provided in smaller sizes, +e.g., int8, uint16, etc. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """value must be of a type compatible with union""", + 'defined-type': "openconfig-platform:union", + 'generated-type': """YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False)""", + }) + + self.__value = t + if hasattr(self, '_set'): + self._set() + + def _unset_value(self): + self.__value = YANGDynClass(base=[six.text_type,YANGBool,RestrictedClassType(base_type=long, restriction_dict={'range': ['-9223372036854775808..9223372036854775807']}, int_size=64),RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64),RestrictedPrecisionDecimalType(precision=2),], is_leaf=True, yang_name="value", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + + + def _get_configurable(self): + """ + Getter method for configurable, mapped from YANG variable /components/component/properties/property/state/configurable (boolean) + + YANG Description: Indication whether the property is user-configurable + """ + return self.__configurable + + def _set_configurable(self, v, load=False): + """ + Setter method for configurable, mapped from YANG variable /components/component/properties/property/state/configurable (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_configurable is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_configurable() directly. + + YANG Description: Indication whether the property is user-configurable + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="configurable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """configurable must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="configurable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False)""", + }) + + self.__configurable = t + if hasattr(self, '_set'): + self._set() + + def _unset_configurable(self): + self.__configurable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="configurable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + name = __builtin__.property(_get_name) + value = __builtin__.property(_get_value) + configurable = __builtin__.property(_get_configurable) + + + _pyangbind_elements = OrderedDict([('name', name), ('value', value), ('configurable', configurable), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/software_module/__init__.py b/hackfest/netconf-oc/openconfig/components/component/software_module/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3fa4f2989b255366b0cfe148f1a31ec6906ec0af --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/software_module/__init__.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class software_module(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/software-module. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for software module components, i.e., for components +with type=SOFTWARE_MODULE + """ + _pyangbind_elements = {} + + + +class software_module(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/software-module. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for software module components, i.e., for components +with type=SOFTWARE_MODULE + """ + _pyangbind_elements = {} + + + diff --git a/hackfest/netconf-oc/openconfig/components/component/state/__init__.py b/hackfest/netconf-oc/openconfig/components/component/state/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..462352e048ab1174f602de5bc9ff24445cdc3da9 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/state/__init__.py @@ -0,0 +1,2528 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import last_switchover_reason +from . import temperature +from . import memory +from . import pcie +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for each component + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__type','__id','__location','__description','__mfg_name','__mfg_date','__hardware_version','__firmware_version','__software_version','__serial_no','__part_no','__clei_code','__removable','__oper_status','__empty','__parent','__redundant_role','__last_switchover_reason','__last_switchover_time','__last_reboot_reason','__last_reboot_time','__switchover_ready','__temperature','__memory','__allocated_power','__used_power','__pcie',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__type = YANGDynClass(base=[RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),], is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + self.__id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__location = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="location", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__mfg_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="mfg-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__mfg_date = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9]{4}\\-(0[1-9]|1[0-2])\\-(0[1-9]|[12][0-9]|3[01])'}), is_leaf=True, yang_name="mfg-date", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:date', is_config=False) + self.__hardware_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="hardware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__firmware_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="firmware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__software_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="software-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__serial_no = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="serial-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__part_no = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="part-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__clei_code = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="clei-code", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__removable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="removable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + self.__empty = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="empty", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + self.__parent = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="parent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + self.__redundant_role = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'PRIMARY': {}, 'SECONDARY': {}},), is_leaf=True, yang_name="redundant-role", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-platform-types:component-redundant-role', is_config=False) + self.__last_switchover_reason = YANGDynClass(base=last_switchover_reason.last_switchover_reason, is_container='container', yang_name="last-switchover-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + self.__last_switchover_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-switchover-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + self.__last_reboot_reason = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="last-reboot-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + self.__last_reboot_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-reboot-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + self.__switchover_ready = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="switchover-ready", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + self.__temperature = YANGDynClass(base=temperature.temperature, is_container='container', yang_name="temperature", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + self.__memory = YANGDynClass(base=memory.memory, is_container='container', yang_name="memory", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + self.__allocated_power = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="allocated-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + self.__used_power = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="used-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + self.__pcie = YANGDynClass(base=pcie.pcie, is_container='container', yang_name="pcie", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/state/name (string) + + YANG Description: Device name for the component -- this may not be a +configurable parameter on many implementations. Where +component preconfiguration is supported, for example, +the component name may be configurable. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/state/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Device name for the component -- this may not be a +configurable parameter on many implementations. Where +component preconfiguration is supported, for example, +the component name may be configurable. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_type(self): + """ + Getter method for type, mapped from YANG variable /components/component/state/type (union) + + YANG Description: Type of component as identified by the system + """ + return self.__type + + def _set_type(self, v, load=False): + """ + Setter method for type, mapped from YANG variable /components/component/state/type (union) + If this variable is read-only (config: false) in the + source YANG file, then _set_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_type() directly. + + YANG Description: Type of component as identified by the system + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),], is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """type must be of a type compatible with union""", + 'defined-type': "openconfig-platform:union", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),], is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False)""", + }) + + self.__type = t + if hasattr(self, '_set'): + self._set() + + def _unset_type(self): + self.__type = YANGDynClass(base=[RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),], is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + + + def _get_id(self): + """ + Getter method for id, mapped from YANG variable /components/component/state/id (string) + + YANG Description: Unique identifier assigned by the system for the +component + """ + return self.__id + + def _set_id(self, v, load=False): + """ + Setter method for id, mapped from YANG variable /components/component/state/id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_id() directly. + + YANG Description: Unique identifier assigned by the system for the +component + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__id = t + if hasattr(self, '_set'): + self._set() + + def _unset_id(self): + self.__id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_location(self): + """ + Getter method for location, mapped from YANG variable /components/component/state/location (string) + + YANG Description: System-supplied description of the location of the +component within the system. This could be a bay position, +slot number, socket location, etc. For component types that +have an explicit slot-id attribute, such as linecards, the +system should populate the more specific slot-id. + """ + return self.__location + + def _set_location(self, v, load=False): + """ + Setter method for location, mapped from YANG variable /components/component/state/location (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_location is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_location() directly. + + YANG Description: System-supplied description of the location of the +component within the system. This could be a bay position, +slot number, socket location, etc. For component types that +have an explicit slot-id attribute, such as linecards, the +system should populate the more specific slot-id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="location", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """location must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="location", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__location = t + if hasattr(self, '_set'): + self._set() + + def _unset_location(self): + self.__location = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="location", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_description(self): + """ + Getter method for description, mapped from YANG variable /components/component/state/description (string) + + YANG Description: System-supplied description of the component + """ + return self.__description + + def _set_description(self, v, load=False): + """ + Setter method for description, mapped from YANG variable /components/component/state/description (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_description is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_description() directly. + + YANG Description: System-supplied description of the component + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """description must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__description = t + if hasattr(self, '_set'): + self._set() + + def _unset_description(self): + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_mfg_name(self): + """ + Getter method for mfg_name, mapped from YANG variable /components/component/state/mfg_name (string) + + YANG Description: System-supplied identifier for the manufacturer of the +component. This data is particularly useful when a +component manufacturer is different than the overall +device vendor. + """ + return self.__mfg_name + + def _set_mfg_name(self, v, load=False): + """ + Setter method for mfg_name, mapped from YANG variable /components/component/state/mfg_name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_mfg_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_mfg_name() directly. + + YANG Description: System-supplied identifier for the manufacturer of the +component. This data is particularly useful when a +component manufacturer is different than the overall +device vendor. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="mfg-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """mfg_name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="mfg-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__mfg_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_mfg_name(self): + self.__mfg_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="mfg-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_mfg_date(self): + """ + Getter method for mfg_date, mapped from YANG variable /components/component/state/mfg_date (oc-yang:date) + + YANG Description: System-supplied representation of the component's +manufacturing date. + """ + return self.__mfg_date + + def _set_mfg_date(self, v, load=False): + """ + Setter method for mfg_date, mapped from YANG variable /components/component/state/mfg_date (oc-yang:date) + If this variable is read-only (config: false) in the + source YANG file, then _set_mfg_date is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_mfg_date() directly. + + YANG Description: System-supplied representation of the component's +manufacturing date. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9]{4}\\-(0[1-9]|1[0-2])\\-(0[1-9]|[12][0-9]|3[01])'}), is_leaf=True, yang_name="mfg-date", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:date', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """mfg_date must be of a type compatible with oc-yang:date""", + 'defined-type': "oc-yang:date", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9]{4}\\-(0[1-9]|1[0-2])\\-(0[1-9]|[12][0-9]|3[01])'}), is_leaf=True, yang_name="mfg-date", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:date', is_config=False)""", + }) + + self.__mfg_date = t + if hasattr(self, '_set'): + self._set() + + def _unset_mfg_date(self): + self.__mfg_date = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9]{4}\\-(0[1-9]|1[0-2])\\-(0[1-9]|[12][0-9]|3[01])'}), is_leaf=True, yang_name="mfg-date", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:date', is_config=False) + + + def _get_hardware_version(self): + """ + Getter method for hardware_version, mapped from YANG variable /components/component/state/hardware_version (string) + + YANG Description: For hardware components, this is the hardware revision of +the component. + """ + return self.__hardware_version + + def _set_hardware_version(self, v, load=False): + """ + Setter method for hardware_version, mapped from YANG variable /components/component/state/hardware_version (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_hardware_version is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hardware_version() directly. + + YANG Description: For hardware components, this is the hardware revision of +the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="hardware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hardware_version must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="hardware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__hardware_version = t + if hasattr(self, '_set'): + self._set() + + def _unset_hardware_version(self): + self.__hardware_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="hardware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_firmware_version(self): + """ + Getter method for firmware_version, mapped from YANG variable /components/component/state/firmware_version (string) + + YANG Description: For hardware components, this is the version of associated +firmware that is running on the component, if applicable. + """ + return self.__firmware_version + + def _set_firmware_version(self, v, load=False): + """ + Setter method for firmware_version, mapped from YANG variable /components/component/state/firmware_version (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_firmware_version is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_firmware_version() directly. + + YANG Description: For hardware components, this is the version of associated +firmware that is running on the component, if applicable. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="firmware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """firmware_version must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="firmware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__firmware_version = t + if hasattr(self, '_set'): + self._set() + + def _unset_firmware_version(self): + self.__firmware_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="firmware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_software_version(self): + """ + Getter method for software_version, mapped from YANG variable /components/component/state/software_version (string) + + YANG Description: For software components such as operating system or other +software module, this is the version of the currently +running software. + """ + return self.__software_version + + def _set_software_version(self, v, load=False): + """ + Setter method for software_version, mapped from YANG variable /components/component/state/software_version (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_software_version is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_software_version() directly. + + YANG Description: For software components such as operating system or other +software module, this is the version of the currently +running software. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="software-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """software_version must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="software-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__software_version = t + if hasattr(self, '_set'): + self._set() + + def _unset_software_version(self): + self.__software_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="software-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_serial_no(self): + """ + Getter method for serial_no, mapped from YANG variable /components/component/state/serial_no (string) + + YANG Description: System-assigned serial number of the component. + """ + return self.__serial_no + + def _set_serial_no(self, v, load=False): + """ + Setter method for serial_no, mapped from YANG variable /components/component/state/serial_no (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_serial_no is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_serial_no() directly. + + YANG Description: System-assigned serial number of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="serial-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """serial_no must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="serial-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__serial_no = t + if hasattr(self, '_set'): + self._set() + + def _unset_serial_no(self): + self.__serial_no = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="serial-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_part_no(self): + """ + Getter method for part_no, mapped from YANG variable /components/component/state/part_no (string) + + YANG Description: System-assigned part number for the component. This should +be present in particular if the component is also an FRU +(field replaceable unit) + """ + return self.__part_no + + def _set_part_no(self, v, load=False): + """ + Setter method for part_no, mapped from YANG variable /components/component/state/part_no (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_part_no is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_part_no() directly. + + YANG Description: System-assigned part number for the component. This should +be present in particular if the component is also an FRU +(field replaceable unit) + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="part-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """part_no must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="part-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__part_no = t + if hasattr(self, '_set'): + self._set() + + def _unset_part_no(self): + self.__part_no = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="part-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_clei_code(self): + """ + Getter method for clei_code, mapped from YANG variable /components/component/state/clei_code (string) + + YANG Description: Common Language Equipment Identifier (CLEI) code of the +component. This should be present in particular if the +component is also an FRU (field replaceable unit) + """ + return self.__clei_code + + def _set_clei_code(self, v, load=False): + """ + Setter method for clei_code, mapped from YANG variable /components/component/state/clei_code (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_clei_code is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_clei_code() directly. + + YANG Description: Common Language Equipment Identifier (CLEI) code of the +component. This should be present in particular if the +component is also an FRU (field replaceable unit) + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="clei-code", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """clei_code must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="clei-code", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__clei_code = t + if hasattr(self, '_set'): + self._set() + + def _unset_clei_code(self): + self.__clei_code = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="clei-code", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_removable(self): + """ + Getter method for removable, mapped from YANG variable /components/component/state/removable (boolean) + + YANG Description: If true, this component is removable or is a field +replaceable unit + """ + return self.__removable + + def _set_removable(self, v, load=False): + """ + Setter method for removable, mapped from YANG variable /components/component/state/removable (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_removable is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_removable() directly. + + YANG Description: If true, this component is removable or is a field +replaceable unit + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="removable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """removable must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="removable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False)""", + }) + + self.__removable = t + if hasattr(self, '_set'): + self._set() + + def _unset_removable(self): + self.__removable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="removable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + + def _get_oper_status(self): + """ + Getter method for oper_status, mapped from YANG variable /components/component/state/oper_status (identityref) + + YANG Description: If applicable, this reports the current operational status +of the component. + """ + return self.__oper_status + + def _set_oper_status(self, v, load=False): + """ + Setter method for oper_status, mapped from YANG variable /components/component/state/oper_status (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_oper_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_oper_status() directly. + + YANG Description: If applicable, this reports the current operational status +of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """oper_status must be of a type compatible with identityref""", + 'defined-type': "openconfig-platform:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False)""", + }) + + self.__oper_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_oper_status(self): + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + + + def _get_empty(self): + """ + Getter method for empty, mapped from YANG variable /components/component/state/empty (boolean) + + YANG Description: The empty leaf may be used by the device to indicate that a +component position exists but is not populated. Using this +flag, it is possible for the management system to learn how +many positions are available (e.g., occupied vs. empty +linecard slots in a chassis). + """ + return self.__empty + + def _set_empty(self, v, load=False): + """ + Setter method for empty, mapped from YANG variable /components/component/state/empty (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_empty is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_empty() directly. + + YANG Description: The empty leaf may be used by the device to indicate that a +component position exists but is not populated. Using this +flag, it is possible for the management system to learn how +many positions are available (e.g., occupied vs. empty +linecard slots in a chassis). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="empty", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """empty must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="empty", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False)""", + }) + + self.__empty = t + if hasattr(self, '_set'): + self._set() + + def _unset_empty(self): + self.__empty = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="empty", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + + def _get_parent(self): + """ + Getter method for parent, mapped from YANG variable /components/component/state/parent (leafref) + + YANG Description: Reference to the name of the parent component. Note that +this reference must be kept synchronized with the +corresponding subcomponent reference from the parent +component. + """ + return self.__parent + + def _set_parent(self, v, load=False): + """ + Setter method for parent, mapped from YANG variable /components/component/state/parent (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_parent is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_parent() directly. + + YANG Description: Reference to the name of the parent component. Note that +this reference must be kept synchronized with the +corresponding subcomponent reference from the parent +component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="parent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """parent must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="parent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False)""", + }) + + self.__parent = t + if hasattr(self, '_set'): + self._set() + + def _unset_parent(self): + self.__parent = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="parent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + + + def _get_redundant_role(self): + """ + Getter method for redundant_role, mapped from YANG variable /components/component/state/redundant_role (oc-platform-types:component-redundant-role) + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as secondary), +this reports the role of the component. + """ + return self.__redundant_role + + def _set_redundant_role(self, v, load=False): + """ + Setter method for redundant_role, mapped from YANG variable /components/component/state/redundant_role (oc-platform-types:component-redundant-role) + If this variable is read-only (config: false) in the + source YANG file, then _set_redundant_role is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_redundant_role() directly. + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as secondary), +this reports the role of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'PRIMARY': {}, 'SECONDARY': {}},), is_leaf=True, yang_name="redundant-role", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-platform-types:component-redundant-role', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """redundant_role must be of a type compatible with oc-platform-types:component-redundant-role""", + 'defined-type': "oc-platform-types:component-redundant-role", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'PRIMARY': {}, 'SECONDARY': {}},), is_leaf=True, yang_name="redundant-role", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-platform-types:component-redundant-role', is_config=False)""", + }) + + self.__redundant_role = t + if hasattr(self, '_set'): + self._set() + + def _unset_redundant_role(self): + self.__redundant_role = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'PRIMARY': {}, 'SECONDARY': {}},), is_leaf=True, yang_name="redundant-role", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-platform-types:component-redundant-role', is_config=False) + + + def _get_last_switchover_reason(self): + """ + Getter method for last_switchover_reason, mapped from YANG variable /components/component/state/last_switchover_reason (container) + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as secondary), +this reports the reason of the last change of the +component's role. + """ + return self.__last_switchover_reason + + def _set_last_switchover_reason(self, v, load=False): + """ + Setter method for last_switchover_reason, mapped from YANG variable /components/component/state/last_switchover_reason (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_switchover_reason is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_switchover_reason() directly. + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as secondary), +this reports the reason of the last change of the +component's role. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=last_switchover_reason.last_switchover_reason, is_container='container', yang_name="last-switchover-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_switchover_reason must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=last_switchover_reason.last_switchover_reason, is_container='container', yang_name="last-switchover-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__last_switchover_reason = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_switchover_reason(self): + self.__last_switchover_reason = YANGDynClass(base=last_switchover_reason.last_switchover_reason, is_container='container', yang_name="last-switchover-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + + def _get_last_switchover_time(self): + """ + Getter method for last_switchover_time, mapped from YANG variable /components/component/state/last_switchover_time (oc-types:timeticks64) + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as +secondary), this reports the time of the last change of +the component's role. The value is the timestamp in +nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + return self.__last_switchover_time + + def _set_last_switchover_time(self, v, load=False): + """ + Setter method for last_switchover_time, mapped from YANG variable /components/component/state/last_switchover_time (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_switchover_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_switchover_time() directly. + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as +secondary), this reports the time of the last change of +the component's role. The value is the timestamp in +nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-switchover-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_switchover_time must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-switchover-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_switchover_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_switchover_time(self): + self.__last_switchover_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-switchover-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + + def _get_last_reboot_reason(self): + """ + Getter method for last_reboot_reason, mapped from YANG variable /components/component/state/last_reboot_reason (identityref) + + YANG Description: This reports the reason of the last reboot of the component. + """ + return self.__last_reboot_reason + + def _set_last_reboot_reason(self, v, load=False): + """ + Setter method for last_reboot_reason, mapped from YANG variable /components/component/state/last_reboot_reason (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_reboot_reason is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_reboot_reason() directly. + + YANG Description: This reports the reason of the last reboot of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="last-reboot-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_reboot_reason must be of a type compatible with identityref""", + 'defined-type': "openconfig-platform:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="last-reboot-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False)""", + }) + + self.__last_reboot_reason = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_reboot_reason(self): + self.__last_reboot_reason = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="last-reboot-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + + + def _get_last_reboot_time(self): + """ + Getter method for last_reboot_time, mapped from YANG variable /components/component/state/last_reboot_time (oc-types:timeticks64) + + YANG Description: This reports the time of the last reboot of the component. The +value is the timestamp in nanoseconds relative to the Unix Epoch +(Jan 1, 1970 00:00:00 UTC). + """ + return self.__last_reboot_time + + def _set_last_reboot_time(self, v, load=False): + """ + Setter method for last_reboot_time, mapped from YANG variable /components/component/state/last_reboot_time (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_reboot_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_reboot_time() directly. + + YANG Description: This reports the time of the last reboot of the component. The +value is the timestamp in nanoseconds relative to the Unix Epoch +(Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-reboot-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_reboot_time must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-reboot-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_reboot_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_reboot_time(self): + self.__last_reboot_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-reboot-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + + def _get_switchover_ready(self): + """ + Getter method for switchover_ready, mapped from YANG variable /components/component/state/switchover_ready (boolean) + + YANG Description: For components that have redundant roles, this reports a value +that indicates if the component is ready to support failover. + +The components with a redundant-role should reflect the overall +system's switchover status. For example, two supervisors in a +device, one as primary and the other as secondary, should both +report the same value. + """ + return self.__switchover_ready + + def _set_switchover_ready(self, v, load=False): + """ + Setter method for switchover_ready, mapped from YANG variable /components/component/state/switchover_ready (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_switchover_ready is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_switchover_ready() directly. + + YANG Description: For components that have redundant roles, this reports a value +that indicates if the component is ready to support failover. + +The components with a redundant-role should reflect the overall +system's switchover status. For example, two supervisors in a +device, one as primary and the other as secondary, should both +report the same value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="switchover-ready", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """switchover_ready must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="switchover-ready", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False)""", + }) + + self.__switchover_ready = t + if hasattr(self, '_set'): + self._set() + + def _unset_switchover_ready(self): + self.__switchover_ready = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="switchover-ready", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + + def _get_temperature(self): + """ + Getter method for temperature, mapped from YANG variable /components/component/state/temperature (container) + + YANG Description: Temperature in degrees Celsius of the component. Values include +the instantaneous, average, minimum, and maximum statistics. If +avg/min/max statistics are not supported, the target is expected +to just supply the instant value + """ + return self.__temperature + + def _set_temperature(self, v, load=False): + """ + Setter method for temperature, mapped from YANG variable /components/component/state/temperature (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_temperature is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_temperature() directly. + + YANG Description: Temperature in degrees Celsius of the component. Values include +the instantaneous, average, minimum, and maximum statistics. If +avg/min/max statistics are not supported, the target is expected +to just supply the instant value + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=temperature.temperature, is_container='container', yang_name="temperature", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """temperature must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=temperature.temperature, is_container='container', yang_name="temperature", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__temperature = t + if hasattr(self, '_set'): + self._set() + + def _unset_temperature(self): + self.__temperature = YANGDynClass(base=temperature.temperature, is_container='container', yang_name="temperature", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + + def _get_memory(self): + """ + Getter method for memory, mapped from YANG variable /components/component/state/memory (container) + + YANG Description: For components that have associated memory, these values +report information about available and utilized memory. + """ + return self.__memory + + def _set_memory(self, v, load=False): + """ + Setter method for memory, mapped from YANG variable /components/component/state/memory (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_memory is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_memory() directly. + + YANG Description: For components that have associated memory, these values +report information about available and utilized memory. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=memory.memory, is_container='container', yang_name="memory", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """memory must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=memory.memory, is_container='container', yang_name="memory", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__memory = t + if hasattr(self, '_set'): + self._set() + + def _unset_memory(self): + self.__memory = YANGDynClass(base=memory.memory, is_container='container', yang_name="memory", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + + def _get_allocated_power(self): + """ + Getter method for allocated_power, mapped from YANG variable /components/component/state/allocated_power (uint32) + + YANG Description: Power allocated by the system for the component. + """ + return self.__allocated_power + + def _set_allocated_power(self, v, load=False): + """ + Setter method for allocated_power, mapped from YANG variable /components/component/state/allocated_power (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_allocated_power is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_allocated_power() directly. + + YANG Description: Power allocated by the system for the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="allocated-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """allocated_power must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="allocated-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False)""", + }) + + self.__allocated_power = t + if hasattr(self, '_set'): + self._set() + + def _unset_allocated_power(self): + self.__allocated_power = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="allocated-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + + + def _get_used_power(self): + """ + Getter method for used_power, mapped from YANG variable /components/component/state/used_power (uint32) + + YANG Description: Actual power used by the component. + """ + return self.__used_power + + def _set_used_power(self, v, load=False): + """ + Setter method for used_power, mapped from YANG variable /components/component/state/used_power (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_used_power is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_used_power() directly. + + YANG Description: Actual power used by the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="used-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """used_power must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="used-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False)""", + }) + + self.__used_power = t + if hasattr(self, '_set'): + self._set() + + def _unset_used_power(self): + self.__used_power = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="used-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + + + def _get_pcie(self): + """ + Getter method for pcie, mapped from YANG variable /components/component/state/pcie (container) + + YANG Description: Components that are connected to the system over the Peripheral +Component Interconnect Express (PCIe), report the fatal, non-fatal +and correctable PCIe error counts. + """ + return self.__pcie + + def _set_pcie(self, v, load=False): + """ + Setter method for pcie, mapped from YANG variable /components/component/state/pcie (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_pcie is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_pcie() directly. + + YANG Description: Components that are connected to the system over the Peripheral +Component Interconnect Express (PCIe), report the fatal, non-fatal +and correctable PCIe error counts. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=pcie.pcie, is_container='container', yang_name="pcie", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """pcie must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=pcie.pcie, is_container='container', yang_name="pcie", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__pcie = t + if hasattr(self, '_set'): + self._set() + + def _unset_pcie(self): + self.__pcie = YANGDynClass(base=pcie.pcie, is_container='container', yang_name="pcie", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + name = __builtin__.property(_get_name) + type = __builtin__.property(_get_type) + id = __builtin__.property(_get_id) + location = __builtin__.property(_get_location) + description = __builtin__.property(_get_description) + mfg_name = __builtin__.property(_get_mfg_name) + mfg_date = __builtin__.property(_get_mfg_date) + hardware_version = __builtin__.property(_get_hardware_version) + firmware_version = __builtin__.property(_get_firmware_version) + software_version = __builtin__.property(_get_software_version) + serial_no = __builtin__.property(_get_serial_no) + part_no = __builtin__.property(_get_part_no) + clei_code = __builtin__.property(_get_clei_code) + removable = __builtin__.property(_get_removable) + oper_status = __builtin__.property(_get_oper_status) + empty = __builtin__.property(_get_empty) + parent = __builtin__.property(_get_parent) + redundant_role = __builtin__.property(_get_redundant_role) + last_switchover_reason = __builtin__.property(_get_last_switchover_reason) + last_switchover_time = __builtin__.property(_get_last_switchover_time) + last_reboot_reason = __builtin__.property(_get_last_reboot_reason) + last_reboot_time = __builtin__.property(_get_last_reboot_time) + switchover_ready = __builtin__.property(_get_switchover_ready) + temperature = __builtin__.property(_get_temperature) + memory = __builtin__.property(_get_memory) + allocated_power = __builtin__.property(_get_allocated_power) + used_power = __builtin__.property(_get_used_power) + pcie = __builtin__.property(_get_pcie) + + + _pyangbind_elements = OrderedDict([('name', name), ('type', type), ('id', id), ('location', location), ('description', description), ('mfg_name', mfg_name), ('mfg_date', mfg_date), ('hardware_version', hardware_version), ('firmware_version', firmware_version), ('software_version', software_version), ('serial_no', serial_no), ('part_no', part_no), ('clei_code', clei_code), ('removable', removable), ('oper_status', oper_status), ('empty', empty), ('parent', parent), ('redundant_role', redundant_role), ('last_switchover_reason', last_switchover_reason), ('last_switchover_time', last_switchover_time), ('last_reboot_reason', last_reboot_reason), ('last_reboot_time', last_reboot_time), ('switchover_ready', switchover_ready), ('temperature', temperature), ('memory', memory), ('allocated_power', allocated_power), ('used_power', used_power), ('pcie', pcie), ]) + + +from . import last_switchover_reason +from . import temperature +from . import memory +from . import pcie +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for each component + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__type','__id','__location','__description','__mfg_name','__mfg_date','__hardware_version','__firmware_version','__software_version','__serial_no','__part_no','__clei_code','__removable','__oper_status','__empty','__parent','__redundant_role','__last_switchover_reason','__last_switchover_time','__last_reboot_reason','__last_reboot_time','__switchover_ready','__temperature','__memory','__allocated_power','__used_power','__pcie',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__type = YANGDynClass(base=[RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),], is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + self.__id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__location = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="location", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__mfg_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="mfg-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__mfg_date = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9]{4}\\-(0[1-9]|1[0-2])\\-(0[1-9]|[12][0-9]|3[01])'}), is_leaf=True, yang_name="mfg-date", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:date', is_config=False) + self.__hardware_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="hardware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__firmware_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="firmware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__software_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="software-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__serial_no = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="serial-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__part_no = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="part-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__clei_code = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="clei-code", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + self.__removable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="removable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + self.__empty = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="empty", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + self.__parent = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="parent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + self.__redundant_role = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'PRIMARY': {}, 'SECONDARY': {}},), is_leaf=True, yang_name="redundant-role", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-platform-types:component-redundant-role', is_config=False) + self.__last_switchover_reason = YANGDynClass(base=last_switchover_reason.last_switchover_reason, is_container='container', yang_name="last-switchover-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + self.__last_switchover_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-switchover-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + self.__last_reboot_reason = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="last-reboot-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + self.__last_reboot_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-reboot-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + self.__switchover_ready = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="switchover-ready", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + self.__temperature = YANGDynClass(base=temperature.temperature, is_container='container', yang_name="temperature", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + self.__memory = YANGDynClass(base=memory.memory, is_container='container', yang_name="memory", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + self.__allocated_power = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="allocated-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + self.__used_power = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="used-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + self.__pcie = YANGDynClass(base=pcie.pcie, is_container='container', yang_name="pcie", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/state/name (string) + + YANG Description: Device name for the component -- this may not be a +configurable parameter on many implementations. Where +component preconfiguration is supported, for example, +the component name may be configurable. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/state/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Device name for the component -- this may not be a +configurable parameter on many implementations. Where +component preconfiguration is supported, for example, +the component name may be configurable. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_type(self): + """ + Getter method for type, mapped from YANG variable /components/component/state/type (union) + + YANG Description: Type of component as identified by the system + """ + return self.__type + + def _set_type(self, v, load=False): + """ + Setter method for type, mapped from YANG variable /components/component/state/type (union) + If this variable is read-only (config: false) in the + source YANG file, then _set_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_type() directly. + + YANG Description: Type of component as identified by the system + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=[RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),], is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """type must be of a type compatible with union""", + 'defined-type': "openconfig-platform:union", + 'generated-type': """YANGDynClass(base=[RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),], is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False)""", + }) + + self.__type = t + if hasattr(self, '_set'): + self._set() + + def _unset_type(self): + self.__type = YANGDynClass(base=[RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CHASSIS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BACKPLANE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FABRIC': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:POWER_SUPPLY': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FAN': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SENSOR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:FRU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:LINECARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CONTROLLER_CARD': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:PORT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:TRANSCEIVER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:CPU': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:STORAGE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INTEGRATED_CIRCUIT': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:OPERATING_SYSTEM_UPDATE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BIOS': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:BOOT_LOADER': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:SOFTWARE_MODULE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},),], is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='union', is_config=False) + + + def _get_id(self): + """ + Getter method for id, mapped from YANG variable /components/component/state/id (string) + + YANG Description: Unique identifier assigned by the system for the +component + """ + return self.__id + + def _set_id(self, v, load=False): + """ + Setter method for id, mapped from YANG variable /components/component/state/id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_id() directly. + + YANG Description: Unique identifier assigned by the system for the +component + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__id = t + if hasattr(self, '_set'): + self._set() + + def _unset_id(self): + self.__id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_location(self): + """ + Getter method for location, mapped from YANG variable /components/component/state/location (string) + + YANG Description: System-supplied description of the location of the +component within the system. This could be a bay position, +slot number, socket location, etc. For component types that +have an explicit slot-id attribute, such as linecards, the +system should populate the more specific slot-id. + """ + return self.__location + + def _set_location(self, v, load=False): + """ + Setter method for location, mapped from YANG variable /components/component/state/location (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_location is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_location() directly. + + YANG Description: System-supplied description of the location of the +component within the system. This could be a bay position, +slot number, socket location, etc. For component types that +have an explicit slot-id attribute, such as linecards, the +system should populate the more specific slot-id. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="location", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """location must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="location", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__location = t + if hasattr(self, '_set'): + self._set() + + def _unset_location(self): + self.__location = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="location", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_description(self): + """ + Getter method for description, mapped from YANG variable /components/component/state/description (string) + + YANG Description: System-supplied description of the component + """ + return self.__description + + def _set_description(self, v, load=False): + """ + Setter method for description, mapped from YANG variable /components/component/state/description (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_description is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_description() directly. + + YANG Description: System-supplied description of the component + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """description must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__description = t + if hasattr(self, '_set'): + self._set() + + def _unset_description(self): + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_mfg_name(self): + """ + Getter method for mfg_name, mapped from YANG variable /components/component/state/mfg_name (string) + + YANG Description: System-supplied identifier for the manufacturer of the +component. This data is particularly useful when a +component manufacturer is different than the overall +device vendor. + """ + return self.__mfg_name + + def _set_mfg_name(self, v, load=False): + """ + Setter method for mfg_name, mapped from YANG variable /components/component/state/mfg_name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_mfg_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_mfg_name() directly. + + YANG Description: System-supplied identifier for the manufacturer of the +component. This data is particularly useful when a +component manufacturer is different than the overall +device vendor. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="mfg-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """mfg_name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="mfg-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__mfg_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_mfg_name(self): + self.__mfg_name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="mfg-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_mfg_date(self): + """ + Getter method for mfg_date, mapped from YANG variable /components/component/state/mfg_date (oc-yang:date) + + YANG Description: System-supplied representation of the component's +manufacturing date. + """ + return self.__mfg_date + + def _set_mfg_date(self, v, load=False): + """ + Setter method for mfg_date, mapped from YANG variable /components/component/state/mfg_date (oc-yang:date) + If this variable is read-only (config: false) in the + source YANG file, then _set_mfg_date is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_mfg_date() directly. + + YANG Description: System-supplied representation of the component's +manufacturing date. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9]{4}\\-(0[1-9]|1[0-2])\\-(0[1-9]|[12][0-9]|3[01])'}), is_leaf=True, yang_name="mfg-date", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:date', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """mfg_date must be of a type compatible with oc-yang:date""", + 'defined-type': "oc-yang:date", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9]{4}\\-(0[1-9]|1[0-2])\\-(0[1-9]|[12][0-9]|3[01])'}), is_leaf=True, yang_name="mfg-date", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:date', is_config=False)""", + }) + + self.__mfg_date = t + if hasattr(self, '_set'): + self._set() + + def _unset_mfg_date(self): + self.__mfg_date = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9]{4}\\-(0[1-9]|1[0-2])\\-(0[1-9]|[12][0-9]|3[01])'}), is_leaf=True, yang_name="mfg-date", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:date', is_config=False) + + + def _get_hardware_version(self): + """ + Getter method for hardware_version, mapped from YANG variable /components/component/state/hardware_version (string) + + YANG Description: For hardware components, this is the hardware revision of +the component. + """ + return self.__hardware_version + + def _set_hardware_version(self, v, load=False): + """ + Setter method for hardware_version, mapped from YANG variable /components/component/state/hardware_version (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_hardware_version is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hardware_version() directly. + + YANG Description: For hardware components, this is the hardware revision of +the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="hardware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hardware_version must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="hardware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__hardware_version = t + if hasattr(self, '_set'): + self._set() + + def _unset_hardware_version(self): + self.__hardware_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="hardware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_firmware_version(self): + """ + Getter method for firmware_version, mapped from YANG variable /components/component/state/firmware_version (string) + + YANG Description: For hardware components, this is the version of associated +firmware that is running on the component, if applicable. + """ + return self.__firmware_version + + def _set_firmware_version(self, v, load=False): + """ + Setter method for firmware_version, mapped from YANG variable /components/component/state/firmware_version (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_firmware_version is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_firmware_version() directly. + + YANG Description: For hardware components, this is the version of associated +firmware that is running on the component, if applicable. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="firmware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """firmware_version must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="firmware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__firmware_version = t + if hasattr(self, '_set'): + self._set() + + def _unset_firmware_version(self): + self.__firmware_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="firmware-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_software_version(self): + """ + Getter method for software_version, mapped from YANG variable /components/component/state/software_version (string) + + YANG Description: For software components such as operating system or other +software module, this is the version of the currently +running software. + """ + return self.__software_version + + def _set_software_version(self, v, load=False): + """ + Setter method for software_version, mapped from YANG variable /components/component/state/software_version (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_software_version is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_software_version() directly. + + YANG Description: For software components such as operating system or other +software module, this is the version of the currently +running software. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="software-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """software_version must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="software-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__software_version = t + if hasattr(self, '_set'): + self._set() + + def _unset_software_version(self): + self.__software_version = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="software-version", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_serial_no(self): + """ + Getter method for serial_no, mapped from YANG variable /components/component/state/serial_no (string) + + YANG Description: System-assigned serial number of the component. + """ + return self.__serial_no + + def _set_serial_no(self, v, load=False): + """ + Setter method for serial_no, mapped from YANG variable /components/component/state/serial_no (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_serial_no is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_serial_no() directly. + + YANG Description: System-assigned serial number of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="serial-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """serial_no must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="serial-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__serial_no = t + if hasattr(self, '_set'): + self._set() + + def _unset_serial_no(self): + self.__serial_no = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="serial-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_part_no(self): + """ + Getter method for part_no, mapped from YANG variable /components/component/state/part_no (string) + + YANG Description: System-assigned part number for the component. This should +be present in particular if the component is also an FRU +(field replaceable unit) + """ + return self.__part_no + + def _set_part_no(self, v, load=False): + """ + Setter method for part_no, mapped from YANG variable /components/component/state/part_no (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_part_no is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_part_no() directly. + + YANG Description: System-assigned part number for the component. This should +be present in particular if the component is also an FRU +(field replaceable unit) + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="part-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """part_no must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="part-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__part_no = t + if hasattr(self, '_set'): + self._set() + + def _unset_part_no(self): + self.__part_no = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="part-no", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_clei_code(self): + """ + Getter method for clei_code, mapped from YANG variable /components/component/state/clei_code (string) + + YANG Description: Common Language Equipment Identifier (CLEI) code of the +component. This should be present in particular if the +component is also an FRU (field replaceable unit) + """ + return self.__clei_code + + def _set_clei_code(self, v, load=False): + """ + Setter method for clei_code, mapped from YANG variable /components/component/state/clei_code (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_clei_code is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_clei_code() directly. + + YANG Description: Common Language Equipment Identifier (CLEI) code of the +component. This should be present in particular if the +component is also an FRU (field replaceable unit) + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="clei-code", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """clei_code must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="clei-code", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__clei_code = t + if hasattr(self, '_set'): + self._set() + + def _unset_clei_code(self): + self.__clei_code = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="clei-code", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + + def _get_removable(self): + """ + Getter method for removable, mapped from YANG variable /components/component/state/removable (boolean) + + YANG Description: If true, this component is removable or is a field +replaceable unit + """ + return self.__removable + + def _set_removable(self, v, load=False): + """ + Setter method for removable, mapped from YANG variable /components/component/state/removable (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_removable is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_removable() directly. + + YANG Description: If true, this component is removable or is a field +replaceable unit + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="removable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """removable must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="removable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False)""", + }) + + self.__removable = t + if hasattr(self, '_set'): + self._set() + + def _unset_removable(self): + self.__removable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="removable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + + def _get_oper_status(self): + """ + Getter method for oper_status, mapped from YANG variable /components/component/state/oper_status (identityref) + + YANG Description: If applicable, this reports the current operational status +of the component. + """ + return self.__oper_status + + def _set_oper_status(self, v, load=False): + """ + Setter method for oper_status, mapped from YANG variable /components/component/state/oper_status (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_oper_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_oper_status() directly. + + YANG Description: If applicable, this reports the current operational status +of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """oper_status must be of a type compatible with identityref""", + 'defined-type': "openconfig-platform:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False)""", + }) + + self.__oper_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_oper_status(self): + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:ACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:INACTIVE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:DISABLED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + + + def _get_empty(self): + """ + Getter method for empty, mapped from YANG variable /components/component/state/empty (boolean) + + YANG Description: The empty leaf may be used by the device to indicate that a +component position exists but is not populated. Using this +flag, it is possible for the management system to learn how +many positions are available (e.g., occupied vs. empty +linecard slots in a chassis). + """ + return self.__empty + + def _set_empty(self, v, load=False): + """ + Setter method for empty, mapped from YANG variable /components/component/state/empty (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_empty is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_empty() directly. + + YANG Description: The empty leaf may be used by the device to indicate that a +component position exists but is not populated. Using this +flag, it is possible for the management system to learn how +many positions are available (e.g., occupied vs. empty +linecard slots in a chassis). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="empty", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """empty must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="empty", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False)""", + }) + + self.__empty = t + if hasattr(self, '_set'): + self._set() + + def _unset_empty(self): + self.__empty = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="empty", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + + def _get_parent(self): + """ + Getter method for parent, mapped from YANG variable /components/component/state/parent (leafref) + + YANG Description: Reference to the name of the parent component. Note that +this reference must be kept synchronized with the +corresponding subcomponent reference from the parent +component. + """ + return self.__parent + + def _set_parent(self, v, load=False): + """ + Setter method for parent, mapped from YANG variable /components/component/state/parent (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_parent is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_parent() directly. + + YANG Description: Reference to the name of the parent component. Note that +this reference must be kept synchronized with the +corresponding subcomponent reference from the parent +component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="parent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """parent must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="parent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False)""", + }) + + self.__parent = t + if hasattr(self, '_set'): + self._set() + + def _unset_parent(self): + self.__parent = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="parent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + + + def _get_redundant_role(self): + """ + Getter method for redundant_role, mapped from YANG variable /components/component/state/redundant_role (oc-platform-types:component-redundant-role) + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as secondary), +this reports the role of the component. + """ + return self.__redundant_role + + def _set_redundant_role(self, v, load=False): + """ + Setter method for redundant_role, mapped from YANG variable /components/component/state/redundant_role (oc-platform-types:component-redundant-role) + If this variable is read-only (config: false) in the + source YANG file, then _set_redundant_role is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_redundant_role() directly. + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as secondary), +this reports the role of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'PRIMARY': {}, 'SECONDARY': {}},), is_leaf=True, yang_name="redundant-role", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-platform-types:component-redundant-role', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """redundant_role must be of a type compatible with oc-platform-types:component-redundant-role""", + 'defined-type': "oc-platform-types:component-redundant-role", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'PRIMARY': {}, 'SECONDARY': {}},), is_leaf=True, yang_name="redundant-role", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-platform-types:component-redundant-role', is_config=False)""", + }) + + self.__redundant_role = t + if hasattr(self, '_set'): + self._set() + + def _unset_redundant_role(self): + self.__redundant_role = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'PRIMARY': {}, 'SECONDARY': {}},), is_leaf=True, yang_name="redundant-role", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-platform-types:component-redundant-role', is_config=False) + + + def _get_last_switchover_reason(self): + """ + Getter method for last_switchover_reason, mapped from YANG variable /components/component/state/last_switchover_reason (container) + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as secondary), +this reports the reason of the last change of the +component's role. + """ + return self.__last_switchover_reason + + def _set_last_switchover_reason(self, v, load=False): + """ + Setter method for last_switchover_reason, mapped from YANG variable /components/component/state/last_switchover_reason (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_switchover_reason is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_switchover_reason() directly. + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as secondary), +this reports the reason of the last change of the +component's role. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=last_switchover_reason.last_switchover_reason, is_container='container', yang_name="last-switchover-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_switchover_reason must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=last_switchover_reason.last_switchover_reason, is_container='container', yang_name="last-switchover-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__last_switchover_reason = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_switchover_reason(self): + self.__last_switchover_reason = YANGDynClass(base=last_switchover_reason.last_switchover_reason, is_container='container', yang_name="last-switchover-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + + def _get_last_switchover_time(self): + """ + Getter method for last_switchover_time, mapped from YANG variable /components/component/state/last_switchover_time (oc-types:timeticks64) + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as +secondary), this reports the time of the last change of +the component's role. The value is the timestamp in +nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + return self.__last_switchover_time + + def _set_last_switchover_time(self, v, load=False): + """ + Setter method for last_switchover_time, mapped from YANG variable /components/component/state/last_switchover_time (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_switchover_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_switchover_time() directly. + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as +secondary), this reports the time of the last change of +the component's role. The value is the timestamp in +nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-switchover-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_switchover_time must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-switchover-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_switchover_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_switchover_time(self): + self.__last_switchover_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-switchover-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + + def _get_last_reboot_reason(self): + """ + Getter method for last_reboot_reason, mapped from YANG variable /components/component/state/last_reboot_reason (identityref) + + YANG Description: This reports the reason of the last reboot of the component. + """ + return self.__last_reboot_reason + + def _set_last_reboot_reason(self, v, load=False): + """ + Setter method for last_reboot_reason, mapped from YANG variable /components/component/state/last_reboot_reason (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_reboot_reason is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_reboot_reason() directly. + + YANG Description: This reports the reason of the last reboot of the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="last-reboot-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_reboot_reason must be of a type compatible with identityref""", + 'defined-type': "openconfig-platform:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="last-reboot-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False)""", + }) + + self.__last_reboot_reason = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_reboot_reason(self): + self.__last_reboot_reason = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_USER_INITIATED': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_POWER_FAILURE': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}, 'oc-platform-types:REBOOT_CRITICAL_ERROR': {'@module': 'openconfig-platform-types', '@namespace': 'http://openconfig.net/yang/platform-types'}},), is_leaf=True, yang_name="last-reboot-reason", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + + + def _get_last_reboot_time(self): + """ + Getter method for last_reboot_time, mapped from YANG variable /components/component/state/last_reboot_time (oc-types:timeticks64) + + YANG Description: This reports the time of the last reboot of the component. The +value is the timestamp in nanoseconds relative to the Unix Epoch +(Jan 1, 1970 00:00:00 UTC). + """ + return self.__last_reboot_time + + def _set_last_reboot_time(self, v, load=False): + """ + Setter method for last_reboot_time, mapped from YANG variable /components/component/state/last_reboot_time (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_reboot_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_reboot_time() directly. + + YANG Description: This reports the time of the last reboot of the component. The +value is the timestamp in nanoseconds relative to the Unix Epoch +(Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-reboot-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_reboot_time must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-reboot-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_reboot_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_reboot_time(self): + self.__last_reboot_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-reboot-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + + def _get_switchover_ready(self): + """ + Getter method for switchover_ready, mapped from YANG variable /components/component/state/switchover_ready (boolean) + + YANG Description: For components that have redundant roles, this reports a value +that indicates if the component is ready to support failover. + +The components with a redundant-role should reflect the overall +system's switchover status. For example, two supervisors in a +device, one as primary and the other as secondary, should both +report the same value. + """ + return self.__switchover_ready + + def _set_switchover_ready(self, v, load=False): + """ + Setter method for switchover_ready, mapped from YANG variable /components/component/state/switchover_ready (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_switchover_ready is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_switchover_ready() directly. + + YANG Description: For components that have redundant roles, this reports a value +that indicates if the component is ready to support failover. + +The components with a redundant-role should reflect the overall +system's switchover status. For example, two supervisors in a +device, one as primary and the other as secondary, should both +report the same value. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="switchover-ready", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """switchover_ready must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="switchover-ready", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False)""", + }) + + self.__switchover_ready = t + if hasattr(self, '_set'): + self._set() + + def _unset_switchover_ready(self): + self.__switchover_ready = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="switchover-ready", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + + def _get_temperature(self): + """ + Getter method for temperature, mapped from YANG variable /components/component/state/temperature (container) + + YANG Description: Temperature in degrees Celsius of the component. Values include +the instantaneous, average, minimum, and maximum statistics. If +avg/min/max statistics are not supported, the target is expected +to just supply the instant value + """ + return self.__temperature + + def _set_temperature(self, v, load=False): + """ + Setter method for temperature, mapped from YANG variable /components/component/state/temperature (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_temperature is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_temperature() directly. + + YANG Description: Temperature in degrees Celsius of the component. Values include +the instantaneous, average, minimum, and maximum statistics. If +avg/min/max statistics are not supported, the target is expected +to just supply the instant value + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=temperature.temperature, is_container='container', yang_name="temperature", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """temperature must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=temperature.temperature, is_container='container', yang_name="temperature", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__temperature = t + if hasattr(self, '_set'): + self._set() + + def _unset_temperature(self): + self.__temperature = YANGDynClass(base=temperature.temperature, is_container='container', yang_name="temperature", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + + def _get_memory(self): + """ + Getter method for memory, mapped from YANG variable /components/component/state/memory (container) + + YANG Description: For components that have associated memory, these values +report information about available and utilized memory. + """ + return self.__memory + + def _set_memory(self, v, load=False): + """ + Setter method for memory, mapped from YANG variable /components/component/state/memory (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_memory is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_memory() directly. + + YANG Description: For components that have associated memory, these values +report information about available and utilized memory. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=memory.memory, is_container='container', yang_name="memory", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """memory must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=memory.memory, is_container='container', yang_name="memory", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__memory = t + if hasattr(self, '_set'): + self._set() + + def _unset_memory(self): + self.__memory = YANGDynClass(base=memory.memory, is_container='container', yang_name="memory", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + + def _get_allocated_power(self): + """ + Getter method for allocated_power, mapped from YANG variable /components/component/state/allocated_power (uint32) + + YANG Description: Power allocated by the system for the component. + """ + return self.__allocated_power + + def _set_allocated_power(self, v, load=False): + """ + Setter method for allocated_power, mapped from YANG variable /components/component/state/allocated_power (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_allocated_power is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_allocated_power() directly. + + YANG Description: Power allocated by the system for the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="allocated-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """allocated_power must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="allocated-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False)""", + }) + + self.__allocated_power = t + if hasattr(self, '_set'): + self._set() + + def _unset_allocated_power(self): + self.__allocated_power = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="allocated-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + + + def _get_used_power(self): + """ + Getter method for used_power, mapped from YANG variable /components/component/state/used_power (uint32) + + YANG Description: Actual power used by the component. + """ + return self.__used_power + + def _set_used_power(self, v, load=False): + """ + Setter method for used_power, mapped from YANG variable /components/component/state/used_power (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_used_power is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_used_power() directly. + + YANG Description: Actual power used by the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="used-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """used_power must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="used-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False)""", + }) + + self.__used_power = t + if hasattr(self, '_set'): + self._set() + + def _unset_used_power(self): + self.__used_power = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="used-power", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + + + def _get_pcie(self): + """ + Getter method for pcie, mapped from YANG variable /components/component/state/pcie (container) + + YANG Description: Components that are connected to the system over the Peripheral +Component Interconnect Express (PCIe), report the fatal, non-fatal +and correctable PCIe error counts. + """ + return self.__pcie + + def _set_pcie(self, v, load=False): + """ + Setter method for pcie, mapped from YANG variable /components/component/state/pcie (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_pcie is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_pcie() directly. + + YANG Description: Components that are connected to the system over the Peripheral +Component Interconnect Express (PCIe), report the fatal, non-fatal +and correctable PCIe error counts. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=pcie.pcie, is_container='container', yang_name="pcie", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """pcie must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=pcie.pcie, is_container='container', yang_name="pcie", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__pcie = t + if hasattr(self, '_set'): + self._set() + + def _unset_pcie(self): + self.__pcie = YANGDynClass(base=pcie.pcie, is_container='container', yang_name="pcie", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + name = __builtin__.property(_get_name) + type = __builtin__.property(_get_type) + id = __builtin__.property(_get_id) + location = __builtin__.property(_get_location) + description = __builtin__.property(_get_description) + mfg_name = __builtin__.property(_get_mfg_name) + mfg_date = __builtin__.property(_get_mfg_date) + hardware_version = __builtin__.property(_get_hardware_version) + firmware_version = __builtin__.property(_get_firmware_version) + software_version = __builtin__.property(_get_software_version) + serial_no = __builtin__.property(_get_serial_no) + part_no = __builtin__.property(_get_part_no) + clei_code = __builtin__.property(_get_clei_code) + removable = __builtin__.property(_get_removable) + oper_status = __builtin__.property(_get_oper_status) + empty = __builtin__.property(_get_empty) + parent = __builtin__.property(_get_parent) + redundant_role = __builtin__.property(_get_redundant_role) + last_switchover_reason = __builtin__.property(_get_last_switchover_reason) + last_switchover_time = __builtin__.property(_get_last_switchover_time) + last_reboot_reason = __builtin__.property(_get_last_reboot_reason) + last_reboot_time = __builtin__.property(_get_last_reboot_time) + switchover_ready = __builtin__.property(_get_switchover_ready) + temperature = __builtin__.property(_get_temperature) + memory = __builtin__.property(_get_memory) + allocated_power = __builtin__.property(_get_allocated_power) + used_power = __builtin__.property(_get_used_power) + pcie = __builtin__.property(_get_pcie) + + + _pyangbind_elements = OrderedDict([('name', name), ('type', type), ('id', id), ('location', location), ('description', description), ('mfg_name', mfg_name), ('mfg_date', mfg_date), ('hardware_version', hardware_version), ('firmware_version', firmware_version), ('software_version', software_version), ('serial_no', serial_no), ('part_no', part_no), ('clei_code', clei_code), ('removable', removable), ('oper_status', oper_status), ('empty', empty), ('parent', parent), ('redundant_role', redundant_role), ('last_switchover_reason', last_switchover_reason), ('last_switchover_time', last_switchover_time), ('last_reboot_reason', last_reboot_reason), ('last_reboot_time', last_reboot_time), ('switchover_ready', switchover_ready), ('temperature', temperature), ('memory', memory), ('allocated_power', allocated_power), ('used_power', used_power), ('pcie', pcie), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/state/last_switchover_reason/__init__.py b/hackfest/netconf-oc/openconfig/components/component/state/last_switchover_reason/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..0786fb99cde68f9b4e23aa280f7a17e3fe280383 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/state/last_switchover_reason/__init__.py @@ -0,0 +1,306 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class last_switchover_reason(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/state/last-switchover-reason. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as secondary), +this reports the reason of the last change of the +component's role. + """ + __slots__ = ('_path_helper', '_extmethods', '__trigger','__details',) + + _yang_name = 'last-switchover-reason' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__trigger = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'USER_INITIATED': {}, 'SYSTEM_INITIATED': {}},), is_leaf=True, yang_name="trigger", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='component-redundant-role-switchover-reason-trigger', is_config=False) + self.__details = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="details", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'last-switchover-reason'] + + def _get_trigger(self): + """ + Getter method for trigger, mapped from YANG variable /components/component/state/last_switchover_reason/trigger (component-redundant-role-switchover-reason-trigger) + + YANG Description: Records the generic triggers, e.g. user or system +initiated the switchover. + """ + return self.__trigger + + def _set_trigger(self, v, load=False): + """ + Setter method for trigger, mapped from YANG variable /components/component/state/last_switchover_reason/trigger (component-redundant-role-switchover-reason-trigger) + If this variable is read-only (config: false) in the + source YANG file, then _set_trigger is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_trigger() directly. + + YANG Description: Records the generic triggers, e.g. user or system +initiated the switchover. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'USER_INITIATED': {}, 'SYSTEM_INITIATED': {}},), is_leaf=True, yang_name="trigger", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='component-redundant-role-switchover-reason-trigger', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """trigger must be of a type compatible with component-redundant-role-switchover-reason-trigger""", + 'defined-type': "openconfig-platform:component-redundant-role-switchover-reason-trigger", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'USER_INITIATED': {}, 'SYSTEM_INITIATED': {}},), is_leaf=True, yang_name="trigger", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='component-redundant-role-switchover-reason-trigger', is_config=False)""", + }) + + self.__trigger = t + if hasattr(self, '_set'): + self._set() + + def _unset_trigger(self): + self.__trigger = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'USER_INITIATED': {}, 'SYSTEM_INITIATED': {}},), is_leaf=True, yang_name="trigger", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='component-redundant-role-switchover-reason-trigger', is_config=False) + + + def _get_details(self): + """ + Getter method for details, mapped from YANG variable /components/component/state/last_switchover_reason/details (string) + + YANG Description: Records detailed description of why the switchover happens. +For example, when system initiated the switchover, this leaf +can be used to record the specific reason, e.g. due to critical +errors of the routing daemon in the primary role. + """ + return self.__details + + def _set_details(self, v, load=False): + """ + Setter method for details, mapped from YANG variable /components/component/state/last_switchover_reason/details (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_details is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_details() directly. + + YANG Description: Records detailed description of why the switchover happens. +For example, when system initiated the switchover, this leaf +can be used to record the specific reason, e.g. due to critical +errors of the routing daemon in the primary role. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="details", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """details must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="details", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__details = t + if hasattr(self, '_set'): + self._set() + + def _unset_details(self): + self.__details = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="details", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + trigger = __builtin__.property(_get_trigger) + details = __builtin__.property(_get_details) + + + _pyangbind_elements = OrderedDict([('trigger', trigger), ('details', details), ]) + + +class last_switchover_reason(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/state/last-switchover-reason. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: For components that have redundant roles (e.g. two +supervisors in a device, one as primary the other as secondary), +this reports the reason of the last change of the +component's role. + """ + __slots__ = ('_path_helper', '_extmethods', '__trigger','__details',) + + _yang_name = 'last-switchover-reason' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__trigger = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'USER_INITIATED': {}, 'SYSTEM_INITIATED': {}},), is_leaf=True, yang_name="trigger", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='component-redundant-role-switchover-reason-trigger', is_config=False) + self.__details = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="details", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'last-switchover-reason'] + + def _get_trigger(self): + """ + Getter method for trigger, mapped from YANG variable /components/component/state/last_switchover_reason/trigger (component-redundant-role-switchover-reason-trigger) + + YANG Description: Records the generic triggers, e.g. user or system +initiated the switchover. + """ + return self.__trigger + + def _set_trigger(self, v, load=False): + """ + Setter method for trigger, mapped from YANG variable /components/component/state/last_switchover_reason/trigger (component-redundant-role-switchover-reason-trigger) + If this variable is read-only (config: false) in the + source YANG file, then _set_trigger is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_trigger() directly. + + YANG Description: Records the generic triggers, e.g. user or system +initiated the switchover. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'USER_INITIATED': {}, 'SYSTEM_INITIATED': {}},), is_leaf=True, yang_name="trigger", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='component-redundant-role-switchover-reason-trigger', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """trigger must be of a type compatible with component-redundant-role-switchover-reason-trigger""", + 'defined-type': "openconfig-platform:component-redundant-role-switchover-reason-trigger", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'USER_INITIATED': {}, 'SYSTEM_INITIATED': {}},), is_leaf=True, yang_name="trigger", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='component-redundant-role-switchover-reason-trigger', is_config=False)""", + }) + + self.__trigger = t + if hasattr(self, '_set'): + self._set() + + def _unset_trigger(self): + self.__trigger = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'USER_INITIATED': {}, 'SYSTEM_INITIATED': {}},), is_leaf=True, yang_name="trigger", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='component-redundant-role-switchover-reason-trigger', is_config=False) + + + def _get_details(self): + """ + Getter method for details, mapped from YANG variable /components/component/state/last_switchover_reason/details (string) + + YANG Description: Records detailed description of why the switchover happens. +For example, when system initiated the switchover, this leaf +can be used to record the specific reason, e.g. due to critical +errors of the routing daemon in the primary role. + """ + return self.__details + + def _set_details(self, v, load=False): + """ + Setter method for details, mapped from YANG variable /components/component/state/last_switchover_reason/details (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_details is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_details() directly. + + YANG Description: Records detailed description of why the switchover happens. +For example, when system initiated the switchover, this leaf +can be used to record the specific reason, e.g. due to critical +errors of the routing daemon in the primary role. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="details", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """details must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="details", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False)""", + }) + + self.__details = t + if hasattr(self, '_set'): + self._set() + + def _unset_details(self): + self.__details = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="details", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='string', is_config=False) + + trigger = __builtin__.property(_get_trigger) + details = __builtin__.property(_get_details) + + + _pyangbind_elements = OrderedDict([('trigger', trigger), ('details', details), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/state/memory/__init__.py b/hackfest/netconf-oc/openconfig/components/component/state/memory/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..9a153eaf65f4eaef08cb2cef68057aa114183d8b --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/state/memory/__init__.py @@ -0,0 +1,298 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class memory(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/state/memory. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: For components that have associated memory, these values +report information about available and utilized memory. + """ + __slots__ = ('_path_helper', '_extmethods', '__available','__utilized',) + + _yang_name = 'memory' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__available = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="available", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__utilized = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="utilized", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'memory'] + + def _get_available(self): + """ + Getter method for available, mapped from YANG variable /components/component/state/memory/available (uint64) + + YANG Description: The available memory physically installed, or logically +allocated to the component. + """ + return self.__available + + def _set_available(self, v, load=False): + """ + Setter method for available, mapped from YANG variable /components/component/state/memory/available (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_available is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_available() directly. + + YANG Description: The available memory physically installed, or logically +allocated to the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="available", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """available must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="available", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__available = t + if hasattr(self, '_set'): + self._set() + + def _unset_available(self): + self.__available = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="available", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_utilized(self): + """ + Getter method for utilized, mapped from YANG variable /components/component/state/memory/utilized (uint64) + + YANG Description: The memory currently in use by processes running on +the component, not considering reserved memory that is +not available for use. + """ + return self.__utilized + + def _set_utilized(self, v, load=False): + """ + Setter method for utilized, mapped from YANG variable /components/component/state/memory/utilized (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_utilized is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_utilized() directly. + + YANG Description: The memory currently in use by processes running on +the component, not considering reserved memory that is +not available for use. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="utilized", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """utilized must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="utilized", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__utilized = t + if hasattr(self, '_set'): + self._set() + + def _unset_utilized(self): + self.__utilized = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="utilized", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + available = __builtin__.property(_get_available) + utilized = __builtin__.property(_get_utilized) + + + _pyangbind_elements = OrderedDict([('available', available), ('utilized', utilized), ]) + + +class memory(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/state/memory. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: For components that have associated memory, these values +report information about available and utilized memory. + """ + __slots__ = ('_path_helper', '_extmethods', '__available','__utilized',) + + _yang_name = 'memory' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__available = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="available", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + self.__utilized = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="utilized", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'memory'] + + def _get_available(self): + """ + Getter method for available, mapped from YANG variable /components/component/state/memory/available (uint64) + + YANG Description: The available memory physically installed, or logically +allocated to the component. + """ + return self.__available + + def _set_available(self, v, load=False): + """ + Setter method for available, mapped from YANG variable /components/component/state/memory/available (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_available is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_available() directly. + + YANG Description: The available memory physically installed, or logically +allocated to the component. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="available", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """available must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="available", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__available = t + if hasattr(self, '_set'): + self._set() + + def _unset_available(self): + self.__available = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="available", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + + def _get_utilized(self): + """ + Getter method for utilized, mapped from YANG variable /components/component/state/memory/utilized (uint64) + + YANG Description: The memory currently in use by processes running on +the component, not considering reserved memory that is +not available for use. + """ + return self.__utilized + + def _set_utilized(self, v, load=False): + """ + Setter method for utilized, mapped from YANG variable /components/component/state/memory/utilized (uint64) + If this variable is read-only (config: false) in the + source YANG file, then _set_utilized is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_utilized() directly. + + YANG Description: The memory currently in use by processes running on +the component, not considering reserved memory that is +not available for use. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="utilized", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """utilized must be of a type compatible with uint64""", + 'defined-type': "uint64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="utilized", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False)""", + }) + + self.__utilized = t + if hasattr(self, '_set'): + self._set() + + def _unset_utilized(self): + self.__utilized = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="utilized", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint64', is_config=False) + + available = __builtin__.property(_get_available) + utilized = __builtin__.property(_get_utilized) + + + _pyangbind_elements = OrderedDict([('available', available), ('utilized', utilized), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/state/pcie/__init__.py b/hackfest/netconf-oc/openconfig/components/component/state/pcie/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..aae99fcd62370ff7596b1401df999fe6a2a4ec0c --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/state/pcie/__init__.py @@ -0,0 +1,372 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import fatal_errors +from . import non_fatal_errors +from . import correctable_errors +class pcie(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/state/pcie. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Components that are connected to the system over the Peripheral +Component Interconnect Express (PCIe), report the fatal, non-fatal +and correctable PCIe error counts. + """ + __slots__ = ('_path_helper', '_extmethods', '__fatal_errors','__non_fatal_errors','__correctable_errors',) + + _yang_name = 'pcie' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__fatal_errors = YANGDynClass(base=fatal_errors.fatal_errors, is_container='container', yang_name="fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + self.__non_fatal_errors = YANGDynClass(base=non_fatal_errors.non_fatal_errors, is_container='container', yang_name="non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + self.__correctable_errors = YANGDynClass(base=correctable_errors.correctable_errors, is_container='container', yang_name="correctable-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'pcie'] + + def _get_fatal_errors(self): + """ + Getter method for fatal_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors (container) + + YANG Description: The count of the fatal PCIe errors. + """ + return self.__fatal_errors + + def _set_fatal_errors(self, v, load=False): + """ + Setter method for fatal_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_fatal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_fatal_errors() directly. + + YANG Description: The count of the fatal PCIe errors. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=fatal_errors.fatal_errors, is_container='container', yang_name="fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """fatal_errors must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=fatal_errors.fatal_errors, is_container='container', yang_name="fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__fatal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_fatal_errors(self): + self.__fatal_errors = YANGDynClass(base=fatal_errors.fatal_errors, is_container='container', yang_name="fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + + def _get_non_fatal_errors(self): + """ + Getter method for non_fatal_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors (container) + + YANG Description: The count of the non-fatal PCIe errors. + """ + return self.__non_fatal_errors + + def _set_non_fatal_errors(self, v, load=False): + """ + Setter method for non_fatal_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_non_fatal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_non_fatal_errors() directly. + + YANG Description: The count of the non-fatal PCIe errors. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=non_fatal_errors.non_fatal_errors, is_container='container', yang_name="non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """non_fatal_errors must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=non_fatal_errors.non_fatal_errors, is_container='container', yang_name="non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__non_fatal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_non_fatal_errors(self): + self.__non_fatal_errors = YANGDynClass(base=non_fatal_errors.non_fatal_errors, is_container='container', yang_name="non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + + def _get_correctable_errors(self): + """ + Getter method for correctable_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors (container) + + YANG Description: The count of the correctable PCIe errors. + """ + return self.__correctable_errors + + def _set_correctable_errors(self, v, load=False): + """ + Setter method for correctable_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_correctable_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_correctable_errors() directly. + + YANG Description: The count of the correctable PCIe errors. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=correctable_errors.correctable_errors, is_container='container', yang_name="correctable-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """correctable_errors must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=correctable_errors.correctable_errors, is_container='container', yang_name="correctable-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__correctable_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_correctable_errors(self): + self.__correctable_errors = YANGDynClass(base=correctable_errors.correctable_errors, is_container='container', yang_name="correctable-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + fatal_errors = __builtin__.property(_get_fatal_errors) + non_fatal_errors = __builtin__.property(_get_non_fatal_errors) + correctable_errors = __builtin__.property(_get_correctable_errors) + + + _pyangbind_elements = OrderedDict([('fatal_errors', fatal_errors), ('non_fatal_errors', non_fatal_errors), ('correctable_errors', correctable_errors), ]) + + +from . import fatal_errors +from . import non_fatal_errors +from . import correctable_errors +class pcie(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/state/pcie. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Components that are connected to the system over the Peripheral +Component Interconnect Express (PCIe), report the fatal, non-fatal +and correctable PCIe error counts. + """ + __slots__ = ('_path_helper', '_extmethods', '__fatal_errors','__non_fatal_errors','__correctable_errors',) + + _yang_name = 'pcie' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__fatal_errors = YANGDynClass(base=fatal_errors.fatal_errors, is_container='container', yang_name="fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + self.__non_fatal_errors = YANGDynClass(base=non_fatal_errors.non_fatal_errors, is_container='container', yang_name="non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + self.__correctable_errors = YANGDynClass(base=correctable_errors.correctable_errors, is_container='container', yang_name="correctable-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'pcie'] + + def _get_fatal_errors(self): + """ + Getter method for fatal_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors (container) + + YANG Description: The count of the fatal PCIe errors. + """ + return self.__fatal_errors + + def _set_fatal_errors(self, v, load=False): + """ + Setter method for fatal_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_fatal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_fatal_errors() directly. + + YANG Description: The count of the fatal PCIe errors. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=fatal_errors.fatal_errors, is_container='container', yang_name="fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """fatal_errors must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=fatal_errors.fatal_errors, is_container='container', yang_name="fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__fatal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_fatal_errors(self): + self.__fatal_errors = YANGDynClass(base=fatal_errors.fatal_errors, is_container='container', yang_name="fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + + def _get_non_fatal_errors(self): + """ + Getter method for non_fatal_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors (container) + + YANG Description: The count of the non-fatal PCIe errors. + """ + return self.__non_fatal_errors + + def _set_non_fatal_errors(self, v, load=False): + """ + Setter method for non_fatal_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_non_fatal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_non_fatal_errors() directly. + + YANG Description: The count of the non-fatal PCIe errors. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=non_fatal_errors.non_fatal_errors, is_container='container', yang_name="non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """non_fatal_errors must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=non_fatal_errors.non_fatal_errors, is_container='container', yang_name="non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__non_fatal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_non_fatal_errors(self): + self.__non_fatal_errors = YANGDynClass(base=non_fatal_errors.non_fatal_errors, is_container='container', yang_name="non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + + def _get_correctable_errors(self): + """ + Getter method for correctable_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors (container) + + YANG Description: The count of the correctable PCIe errors. + """ + return self.__correctable_errors + + def _set_correctable_errors(self, v, load=False): + """ + Setter method for correctable_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_correctable_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_correctable_errors() directly. + + YANG Description: The count of the correctable PCIe errors. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=correctable_errors.correctable_errors, is_container='container', yang_name="correctable-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """correctable_errors must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=correctable_errors.correctable_errors, is_container='container', yang_name="correctable-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False)""", + }) + + self.__correctable_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_correctable_errors(self): + self.__correctable_errors = YANGDynClass(base=correctable_errors.correctable_errors, is_container='container', yang_name="correctable-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=False) + + fatal_errors = __builtin__.property(_get_fatal_errors) + non_fatal_errors = __builtin__.property(_get_non_fatal_errors) + correctable_errors = __builtin__.property(_get_correctable_errors) + + + _pyangbind_elements = OrderedDict([('fatal_errors', fatal_errors), ('non_fatal_errors', non_fatal_errors), ('correctable_errors', correctable_errors), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/state/pcie/correctable_errors/__init__.py b/hackfest/netconf-oc/openconfig/components/component/state/pcie/correctable_errors/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..bbef37323ba6b26d689f1575ce9afcd1ffbb9a7e --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/state/pcie/correctable_errors/__init__.py @@ -0,0 +1,866 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class correctable_errors(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/state/pcie/correctable-errors. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The count of the correctable PCIe errors. + """ + __slots__ = ('_path_helper', '_extmethods', '__total_errors','__receiver_errors','__bad_tlp_errors','__bad_dllp_errors','__relay_rollover_errors','__replay_timeout_errors','__advisory_non_fatal_errors','__internal_errors','__hdr_log_overflow_errors',) + + _yang_name = 'correctable-errors' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__receiver_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__bad_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__bad_dllp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-dllp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__relay_rollover_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="relay-rollover-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__replay_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="replay-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__advisory_non_fatal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="advisory-non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__hdr_log_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="hdr-log-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'pcie', 'correctable-errors'] + + def _get_total_errors(self): + """ + Getter method for total_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/total_errors (oc-yang:counter64) + + YANG Description: Total number of correctable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__total_errors + + def _set_total_errors(self, v, load=False): + """ + Setter method for total_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/total_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_total_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_total_errors() directly. + + YANG Description: Total number of correctable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """total_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__total_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_total_errors(self): + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_receiver_errors(self): + """ + Getter method for receiver_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/receiver_errors (oc-yang:counter64) + + YANG Description: Number of receiver errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__receiver_errors + + def _set_receiver_errors(self, v, load=False): + """ + Setter method for receiver_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/receiver_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_receiver_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_receiver_errors() directly. + + YANG Description: Number of receiver errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """receiver_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__receiver_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_receiver_errors(self): + self.__receiver_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_bad_tlp_errors(self): + """ + Getter method for bad_tlp_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/bad_tlp_errors (oc-yang:counter64) + + YANG Description: Number of TLPs with bad LCRC detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__bad_tlp_errors + + def _set_bad_tlp_errors(self, v, load=False): + """ + Setter method for bad_tlp_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/bad_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_bad_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bad_tlp_errors() directly. + + YANG Description: Number of TLPs with bad LCRC detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bad_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__bad_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_bad_tlp_errors(self): + self.__bad_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_bad_dllp_errors(self): + """ + Getter method for bad_dllp_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/bad_dllp_errors (oc-yang:counter64) + + YANG Description: Number of DLLPs with bad LCRC detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__bad_dllp_errors + + def _set_bad_dllp_errors(self, v, load=False): + """ + Setter method for bad_dllp_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/bad_dllp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_bad_dllp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bad_dllp_errors() directly. + + YANG Description: Number of DLLPs with bad LCRC detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-dllp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bad_dllp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-dllp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__bad_dllp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_bad_dllp_errors(self): + self.__bad_dllp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-dllp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_relay_rollover_errors(self): + """ + Getter method for relay_rollover_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/relay_rollover_errors (oc-yang:counter64) + + YANG Description: Number of relay rollover errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__relay_rollover_errors + + def _set_relay_rollover_errors(self, v, load=False): + """ + Setter method for relay_rollover_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/relay_rollover_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_relay_rollover_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_relay_rollover_errors() directly. + + YANG Description: Number of relay rollover errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="relay-rollover-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """relay_rollover_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="relay-rollover-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__relay_rollover_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_relay_rollover_errors(self): + self.__relay_rollover_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="relay-rollover-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_replay_timeout_errors(self): + """ + Getter method for replay_timeout_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/replay_timeout_errors (oc-yang:counter64) + + YANG Description: Number of replay timeout errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__replay_timeout_errors + + def _set_replay_timeout_errors(self, v, load=False): + """ + Setter method for replay_timeout_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/replay_timeout_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_replay_timeout_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_replay_timeout_errors() directly. + + YANG Description: Number of replay timeout errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="replay-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """replay_timeout_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="replay-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__replay_timeout_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_replay_timeout_errors(self): + self.__replay_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="replay-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_advisory_non_fatal_errors(self): + """ + Getter method for advisory_non_fatal_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/advisory_non_fatal_errors (oc-yang:counter64) + + YANG Description: Number of advisory non fatal errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__advisory_non_fatal_errors + + def _set_advisory_non_fatal_errors(self, v, load=False): + """ + Setter method for advisory_non_fatal_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/advisory_non_fatal_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_advisory_non_fatal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_advisory_non_fatal_errors() directly. + + YANG Description: Number of advisory non fatal errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="advisory-non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """advisory_non_fatal_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="advisory-non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__advisory_non_fatal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_advisory_non_fatal_errors(self): + self.__advisory_non_fatal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="advisory-non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_internal_errors(self): + """ + Getter method for internal_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/internal_errors (oc-yang:counter64) + + YANG Description: Number of internal errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + return self.__internal_errors + + def _set_internal_errors(self, v, load=False): + """ + Setter method for internal_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/internal_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_internal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_internal_errors() directly. + + YANG Description: Number of internal errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """internal_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__internal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_internal_errors(self): + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_hdr_log_overflow_errors(self): + """ + Getter method for hdr_log_overflow_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/hdr_log_overflow_errors (oc-yang:counter64) + + YANG Description: Number of header log overflow errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__hdr_log_overflow_errors + + def _set_hdr_log_overflow_errors(self, v, load=False): + """ + Setter method for hdr_log_overflow_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/hdr_log_overflow_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_hdr_log_overflow_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hdr_log_overflow_errors() directly. + + YANG Description: Number of header log overflow errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="hdr-log-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hdr_log_overflow_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="hdr-log-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__hdr_log_overflow_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_hdr_log_overflow_errors(self): + self.__hdr_log_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="hdr-log-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + total_errors = __builtin__.property(_get_total_errors) + receiver_errors = __builtin__.property(_get_receiver_errors) + bad_tlp_errors = __builtin__.property(_get_bad_tlp_errors) + bad_dllp_errors = __builtin__.property(_get_bad_dllp_errors) + relay_rollover_errors = __builtin__.property(_get_relay_rollover_errors) + replay_timeout_errors = __builtin__.property(_get_replay_timeout_errors) + advisory_non_fatal_errors = __builtin__.property(_get_advisory_non_fatal_errors) + internal_errors = __builtin__.property(_get_internal_errors) + hdr_log_overflow_errors = __builtin__.property(_get_hdr_log_overflow_errors) + + + _pyangbind_elements = OrderedDict([('total_errors', total_errors), ('receiver_errors', receiver_errors), ('bad_tlp_errors', bad_tlp_errors), ('bad_dllp_errors', bad_dllp_errors), ('relay_rollover_errors', relay_rollover_errors), ('replay_timeout_errors', replay_timeout_errors), ('advisory_non_fatal_errors', advisory_non_fatal_errors), ('internal_errors', internal_errors), ('hdr_log_overflow_errors', hdr_log_overflow_errors), ]) + + +class correctable_errors(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/state/pcie/correctable-errors. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The count of the correctable PCIe errors. + """ + __slots__ = ('_path_helper', '_extmethods', '__total_errors','__receiver_errors','__bad_tlp_errors','__bad_dllp_errors','__relay_rollover_errors','__replay_timeout_errors','__advisory_non_fatal_errors','__internal_errors','__hdr_log_overflow_errors',) + + _yang_name = 'correctable-errors' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__receiver_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__bad_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__bad_dllp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-dllp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__relay_rollover_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="relay-rollover-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__replay_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="replay-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__advisory_non_fatal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="advisory-non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__hdr_log_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="hdr-log-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'pcie', 'correctable-errors'] + + def _get_total_errors(self): + """ + Getter method for total_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/total_errors (oc-yang:counter64) + + YANG Description: Total number of correctable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__total_errors + + def _set_total_errors(self, v, load=False): + """ + Setter method for total_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/total_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_total_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_total_errors() directly. + + YANG Description: Total number of correctable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """total_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__total_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_total_errors(self): + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_receiver_errors(self): + """ + Getter method for receiver_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/receiver_errors (oc-yang:counter64) + + YANG Description: Number of receiver errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__receiver_errors + + def _set_receiver_errors(self, v, load=False): + """ + Setter method for receiver_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/receiver_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_receiver_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_receiver_errors() directly. + + YANG Description: Number of receiver errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """receiver_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__receiver_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_receiver_errors(self): + self.__receiver_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_bad_tlp_errors(self): + """ + Getter method for bad_tlp_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/bad_tlp_errors (oc-yang:counter64) + + YANG Description: Number of TLPs with bad LCRC detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__bad_tlp_errors + + def _set_bad_tlp_errors(self, v, load=False): + """ + Setter method for bad_tlp_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/bad_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_bad_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bad_tlp_errors() directly. + + YANG Description: Number of TLPs with bad LCRC detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bad_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__bad_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_bad_tlp_errors(self): + self.__bad_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_bad_dllp_errors(self): + """ + Getter method for bad_dllp_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/bad_dllp_errors (oc-yang:counter64) + + YANG Description: Number of DLLPs with bad LCRC detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__bad_dllp_errors + + def _set_bad_dllp_errors(self, v, load=False): + """ + Setter method for bad_dllp_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/bad_dllp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_bad_dllp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bad_dllp_errors() directly. + + YANG Description: Number of DLLPs with bad LCRC detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-dllp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bad_dllp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-dllp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__bad_dllp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_bad_dllp_errors(self): + self.__bad_dllp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="bad-dllp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_relay_rollover_errors(self): + """ + Getter method for relay_rollover_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/relay_rollover_errors (oc-yang:counter64) + + YANG Description: Number of relay rollover errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__relay_rollover_errors + + def _set_relay_rollover_errors(self, v, load=False): + """ + Setter method for relay_rollover_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/relay_rollover_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_relay_rollover_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_relay_rollover_errors() directly. + + YANG Description: Number of relay rollover errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="relay-rollover-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """relay_rollover_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="relay-rollover-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__relay_rollover_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_relay_rollover_errors(self): + self.__relay_rollover_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="relay-rollover-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_replay_timeout_errors(self): + """ + Getter method for replay_timeout_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/replay_timeout_errors (oc-yang:counter64) + + YANG Description: Number of replay timeout errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__replay_timeout_errors + + def _set_replay_timeout_errors(self, v, load=False): + """ + Setter method for replay_timeout_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/replay_timeout_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_replay_timeout_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_replay_timeout_errors() directly. + + YANG Description: Number of replay timeout errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="replay-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """replay_timeout_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="replay-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__replay_timeout_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_replay_timeout_errors(self): + self.__replay_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="replay-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_advisory_non_fatal_errors(self): + """ + Getter method for advisory_non_fatal_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/advisory_non_fatal_errors (oc-yang:counter64) + + YANG Description: Number of advisory non fatal errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__advisory_non_fatal_errors + + def _set_advisory_non_fatal_errors(self, v, load=False): + """ + Setter method for advisory_non_fatal_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/advisory_non_fatal_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_advisory_non_fatal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_advisory_non_fatal_errors() directly. + + YANG Description: Number of advisory non fatal errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="advisory-non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """advisory_non_fatal_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="advisory-non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__advisory_non_fatal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_advisory_non_fatal_errors(self): + self.__advisory_non_fatal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="advisory-non-fatal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_internal_errors(self): + """ + Getter method for internal_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/internal_errors (oc-yang:counter64) + + YANG Description: Number of internal errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + return self.__internal_errors + + def _set_internal_errors(self, v, load=False): + """ + Setter method for internal_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/internal_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_internal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_internal_errors() directly. + + YANG Description: Number of internal errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """internal_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__internal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_internal_errors(self): + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_hdr_log_overflow_errors(self): + """ + Getter method for hdr_log_overflow_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/hdr_log_overflow_errors (oc-yang:counter64) + + YANG Description: Number of header log overflow errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__hdr_log_overflow_errors + + def _set_hdr_log_overflow_errors(self, v, load=False): + """ + Setter method for hdr_log_overflow_errors, mapped from YANG variable /components/component/state/pcie/correctable_errors/hdr_log_overflow_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_hdr_log_overflow_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hdr_log_overflow_errors() directly. + + YANG Description: Number of header log overflow errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="hdr-log-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hdr_log_overflow_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="hdr-log-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__hdr_log_overflow_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_hdr_log_overflow_errors(self): + self.__hdr_log_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="hdr-log-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + total_errors = __builtin__.property(_get_total_errors) + receiver_errors = __builtin__.property(_get_receiver_errors) + bad_tlp_errors = __builtin__.property(_get_bad_tlp_errors) + bad_dllp_errors = __builtin__.property(_get_bad_dllp_errors) + relay_rollover_errors = __builtin__.property(_get_relay_rollover_errors) + replay_timeout_errors = __builtin__.property(_get_replay_timeout_errors) + advisory_non_fatal_errors = __builtin__.property(_get_advisory_non_fatal_errors) + internal_errors = __builtin__.property(_get_internal_errors) + hdr_log_overflow_errors = __builtin__.property(_get_hdr_log_overflow_errors) + + + _pyangbind_elements = OrderedDict([('total_errors', total_errors), ('receiver_errors', receiver_errors), ('bad_tlp_errors', bad_tlp_errors), ('bad_dllp_errors', bad_dllp_errors), ('relay_rollover_errors', relay_rollover_errors), ('replay_timeout_errors', replay_timeout_errors), ('advisory_non_fatal_errors', advisory_non_fatal_errors), ('internal_errors', internal_errors), ('hdr_log_overflow_errors', hdr_log_overflow_errors), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/state/pcie/fatal_errors/__init__.py b/hackfest/netconf-oc/openconfig/components/component/state/pcie/fatal_errors/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..12185542ccc99155d1fd1bd22407db0421a753c0 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/state/pcie/fatal_errors/__init__.py @@ -0,0 +1,1604 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class fatal_errors(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/state/pcie/fatal-errors. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The count of the fatal PCIe errors. + """ + __slots__ = ('_path_helper', '_extmethods', '__total_errors','__undefined_errors','__data_link_errors','__surprise_down_errors','__poisoned_tlp_errors','__flow_control_protocol_errors','__completion_timeout_errors','__completion_abort_errors','__unexpected_completion_errors','__receiver_overflow_errors','__malformed_tlp_errors','__ecrc_errors','__unsupported_request_errors','__acs_violation_errors','__internal_errors','__blocked_tlp_errors','__atomic_op_blocked_errors','__tlp_prefix_blocked_errors',) + + _yang_name = 'fatal-errors' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__undefined_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__data_link_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__surprise_down_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__poisoned_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__flow_control_protocol_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__completion_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__completion_abort_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__unexpected_completion_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__receiver_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__malformed_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__ecrc_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__unsupported_request_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__acs_violation_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__blocked_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__atomic_op_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__tlp_prefix_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'pcie', 'fatal-errors'] + + def _get_total_errors(self): + """ + Getter method for total_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/total_errors (oc-yang:counter64) + + YANG Description: Total number of uncorrectable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__total_errors + + def _set_total_errors(self, v, load=False): + """ + Setter method for total_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/total_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_total_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_total_errors() directly. + + YANG Description: Total number of uncorrectable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """total_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__total_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_total_errors(self): + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_undefined_errors(self): + """ + Getter method for undefined_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/undefined_errors (oc-yang:counter64) + + YANG Description: Number of undefined errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__undefined_errors + + def _set_undefined_errors(self, v, load=False): + """ + Setter method for undefined_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/undefined_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_undefined_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_undefined_errors() directly. + + YANG Description: Number of undefined errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """undefined_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__undefined_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_undefined_errors(self): + self.__undefined_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_data_link_errors(self): + """ + Getter method for data_link_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/data_link_errors (oc-yang:counter64) + + YANG Description: Number of data-link errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__data_link_errors + + def _set_data_link_errors(self, v, load=False): + """ + Setter method for data_link_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/data_link_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_data_link_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_data_link_errors() directly. + + YANG Description: Number of data-link errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """data_link_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__data_link_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_data_link_errors(self): + self.__data_link_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_surprise_down_errors(self): + """ + Getter method for surprise_down_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/surprise_down_errors (oc-yang:counter64) + + YANG Description: Number of unexpected link down errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__surprise_down_errors + + def _set_surprise_down_errors(self, v, load=False): + """ + Setter method for surprise_down_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/surprise_down_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_surprise_down_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_surprise_down_errors() directly. + + YANG Description: Number of unexpected link down errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """surprise_down_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__surprise_down_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_surprise_down_errors(self): + self.__surprise_down_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_poisoned_tlp_errors(self): + """ + Getter method for poisoned_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/poisoned_tlp_errors (oc-yang:counter64) + + YANG Description: Number of poisoned TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__poisoned_tlp_errors + + def _set_poisoned_tlp_errors(self, v, load=False): + """ + Setter method for poisoned_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/poisoned_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_poisoned_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_poisoned_tlp_errors() directly. + + YANG Description: Number of poisoned TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """poisoned_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__poisoned_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_poisoned_tlp_errors(self): + self.__poisoned_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_flow_control_protocol_errors(self): + """ + Getter method for flow_control_protocol_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/flow_control_protocol_errors (oc-yang:counter64) + + YANG Description: Number of flow control protocol errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__flow_control_protocol_errors + + def _set_flow_control_protocol_errors(self, v, load=False): + """ + Setter method for flow_control_protocol_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/flow_control_protocol_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_flow_control_protocol_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_flow_control_protocol_errors() directly. + + YANG Description: Number of flow control protocol errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """flow_control_protocol_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__flow_control_protocol_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_flow_control_protocol_errors(self): + self.__flow_control_protocol_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_completion_timeout_errors(self): + """ + Getter method for completion_timeout_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/completion_timeout_errors (oc-yang:counter64) + + YANG Description: Number of completion timeout errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__completion_timeout_errors + + def _set_completion_timeout_errors(self, v, load=False): + """ + Setter method for completion_timeout_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/completion_timeout_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_completion_timeout_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_completion_timeout_errors() directly. + + YANG Description: Number of completion timeout errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """completion_timeout_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__completion_timeout_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_completion_timeout_errors(self): + self.__completion_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_completion_abort_errors(self): + """ + Getter method for completion_abort_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/completion_abort_errors (oc-yang:counter64) + + YANG Description: Number of completion abort errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__completion_abort_errors + + def _set_completion_abort_errors(self, v, load=False): + """ + Setter method for completion_abort_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/completion_abort_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_completion_abort_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_completion_abort_errors() directly. + + YANG Description: Number of completion abort errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """completion_abort_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__completion_abort_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_completion_abort_errors(self): + self.__completion_abort_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_unexpected_completion_errors(self): + """ + Getter method for unexpected_completion_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/unexpected_completion_errors (oc-yang:counter64) + + YANG Description: Number of unexpected completion errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__unexpected_completion_errors + + def _set_unexpected_completion_errors(self, v, load=False): + """ + Setter method for unexpected_completion_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/unexpected_completion_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_unexpected_completion_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unexpected_completion_errors() directly. + + YANG Description: Number of unexpected completion errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unexpected_completion_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__unexpected_completion_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_unexpected_completion_errors(self): + self.__unexpected_completion_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_receiver_overflow_errors(self): + """ + Getter method for receiver_overflow_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/receiver_overflow_errors (oc-yang:counter64) + + YANG Description: Number of receiver overflow errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__receiver_overflow_errors + + def _set_receiver_overflow_errors(self, v, load=False): + """ + Setter method for receiver_overflow_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/receiver_overflow_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_receiver_overflow_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_receiver_overflow_errors() directly. + + YANG Description: Number of receiver overflow errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """receiver_overflow_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__receiver_overflow_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_receiver_overflow_errors(self): + self.__receiver_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_malformed_tlp_errors(self): + """ + Getter method for malformed_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/malformed_tlp_errors (oc-yang:counter64) + + YANG Description: Number of malformed TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__malformed_tlp_errors + + def _set_malformed_tlp_errors(self, v, load=False): + """ + Setter method for malformed_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/malformed_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_malformed_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_malformed_tlp_errors() directly. + + YANG Description: Number of malformed TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """malformed_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__malformed_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_malformed_tlp_errors(self): + self.__malformed_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_ecrc_errors(self): + """ + Getter method for ecrc_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/ecrc_errors (oc-yang:counter64) + + YANG Description: Number of ECRC errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + return self.__ecrc_errors + + def _set_ecrc_errors(self, v, load=False): + """ + Setter method for ecrc_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/ecrc_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_ecrc_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ecrc_errors() directly. + + YANG Description: Number of ECRC errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ecrc_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__ecrc_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_ecrc_errors(self): + self.__ecrc_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_unsupported_request_errors(self): + """ + Getter method for unsupported_request_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/unsupported_request_errors (oc-yang:counter64) + + YANG Description: Number of unsupported request errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__unsupported_request_errors + + def _set_unsupported_request_errors(self, v, load=False): + """ + Setter method for unsupported_request_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/unsupported_request_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_unsupported_request_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unsupported_request_errors() directly. + + YANG Description: Number of unsupported request errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unsupported_request_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__unsupported_request_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_unsupported_request_errors(self): + self.__unsupported_request_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_acs_violation_errors(self): + """ + Getter method for acs_violation_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/acs_violation_errors (oc-yang:counter64) + + YANG Description: Number of access control errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__acs_violation_errors + + def _set_acs_violation_errors(self, v, load=False): + """ + Setter method for acs_violation_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/acs_violation_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_acs_violation_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_acs_violation_errors() directly. + + YANG Description: Number of access control errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """acs_violation_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__acs_violation_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_acs_violation_errors(self): + self.__acs_violation_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_internal_errors(self): + """ + Getter method for internal_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/internal_errors (oc-yang:counter64) + + YANG Description: Number of internal errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__internal_errors + + def _set_internal_errors(self, v, load=False): + """ + Setter method for internal_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/internal_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_internal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_internal_errors() directly. + + YANG Description: Number of internal errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """internal_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__internal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_internal_errors(self): + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_blocked_tlp_errors(self): + """ + Getter method for blocked_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/blocked_tlp_errors (oc-yang:counter64) + + YANG Description: Number of blocked TLP errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__blocked_tlp_errors + + def _set_blocked_tlp_errors(self, v, load=False): + """ + Setter method for blocked_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/blocked_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_blocked_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_blocked_tlp_errors() directly. + + YANG Description: Number of blocked TLP errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """blocked_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__blocked_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_blocked_tlp_errors(self): + self.__blocked_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_atomic_op_blocked_errors(self): + """ + Getter method for atomic_op_blocked_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/atomic_op_blocked_errors (oc-yang:counter64) + + YANG Description: Number of atomic operation blocked errors detected by PCIe +device since the system booted, according to PCIe AER driver. + """ + return self.__atomic_op_blocked_errors + + def _set_atomic_op_blocked_errors(self, v, load=False): + """ + Setter method for atomic_op_blocked_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/atomic_op_blocked_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_atomic_op_blocked_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_atomic_op_blocked_errors() directly. + + YANG Description: Number of atomic operation blocked errors detected by PCIe +device since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """atomic_op_blocked_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__atomic_op_blocked_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_atomic_op_blocked_errors(self): + self.__atomic_op_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_tlp_prefix_blocked_errors(self): + """ + Getter method for tlp_prefix_blocked_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/tlp_prefix_blocked_errors (oc-yang:counter64) + + YANG Description: Number of TLP prefix blocked errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__tlp_prefix_blocked_errors + + def _set_tlp_prefix_blocked_errors(self, v, load=False): + """ + Setter method for tlp_prefix_blocked_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/tlp_prefix_blocked_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_tlp_prefix_blocked_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tlp_prefix_blocked_errors() directly. + + YANG Description: Number of TLP prefix blocked errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tlp_prefix_blocked_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__tlp_prefix_blocked_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_tlp_prefix_blocked_errors(self): + self.__tlp_prefix_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + total_errors = __builtin__.property(_get_total_errors) + undefined_errors = __builtin__.property(_get_undefined_errors) + data_link_errors = __builtin__.property(_get_data_link_errors) + surprise_down_errors = __builtin__.property(_get_surprise_down_errors) + poisoned_tlp_errors = __builtin__.property(_get_poisoned_tlp_errors) + flow_control_protocol_errors = __builtin__.property(_get_flow_control_protocol_errors) + completion_timeout_errors = __builtin__.property(_get_completion_timeout_errors) + completion_abort_errors = __builtin__.property(_get_completion_abort_errors) + unexpected_completion_errors = __builtin__.property(_get_unexpected_completion_errors) + receiver_overflow_errors = __builtin__.property(_get_receiver_overflow_errors) + malformed_tlp_errors = __builtin__.property(_get_malformed_tlp_errors) + ecrc_errors = __builtin__.property(_get_ecrc_errors) + unsupported_request_errors = __builtin__.property(_get_unsupported_request_errors) + acs_violation_errors = __builtin__.property(_get_acs_violation_errors) + internal_errors = __builtin__.property(_get_internal_errors) + blocked_tlp_errors = __builtin__.property(_get_blocked_tlp_errors) + atomic_op_blocked_errors = __builtin__.property(_get_atomic_op_blocked_errors) + tlp_prefix_blocked_errors = __builtin__.property(_get_tlp_prefix_blocked_errors) + + + _pyangbind_elements = OrderedDict([('total_errors', total_errors), ('undefined_errors', undefined_errors), ('data_link_errors', data_link_errors), ('surprise_down_errors', surprise_down_errors), ('poisoned_tlp_errors', poisoned_tlp_errors), ('flow_control_protocol_errors', flow_control_protocol_errors), ('completion_timeout_errors', completion_timeout_errors), ('completion_abort_errors', completion_abort_errors), ('unexpected_completion_errors', unexpected_completion_errors), ('receiver_overflow_errors', receiver_overflow_errors), ('malformed_tlp_errors', malformed_tlp_errors), ('ecrc_errors', ecrc_errors), ('unsupported_request_errors', unsupported_request_errors), ('acs_violation_errors', acs_violation_errors), ('internal_errors', internal_errors), ('blocked_tlp_errors', blocked_tlp_errors), ('atomic_op_blocked_errors', atomic_op_blocked_errors), ('tlp_prefix_blocked_errors', tlp_prefix_blocked_errors), ]) + + +class fatal_errors(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/state/pcie/fatal-errors. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The count of the fatal PCIe errors. + """ + __slots__ = ('_path_helper', '_extmethods', '__total_errors','__undefined_errors','__data_link_errors','__surprise_down_errors','__poisoned_tlp_errors','__flow_control_protocol_errors','__completion_timeout_errors','__completion_abort_errors','__unexpected_completion_errors','__receiver_overflow_errors','__malformed_tlp_errors','__ecrc_errors','__unsupported_request_errors','__acs_violation_errors','__internal_errors','__blocked_tlp_errors','__atomic_op_blocked_errors','__tlp_prefix_blocked_errors',) + + _yang_name = 'fatal-errors' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__undefined_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__data_link_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__surprise_down_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__poisoned_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__flow_control_protocol_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__completion_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__completion_abort_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__unexpected_completion_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__receiver_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__malformed_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__ecrc_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__unsupported_request_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__acs_violation_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__blocked_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__atomic_op_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__tlp_prefix_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'pcie', 'fatal-errors'] + + def _get_total_errors(self): + """ + Getter method for total_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/total_errors (oc-yang:counter64) + + YANG Description: Total number of uncorrectable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__total_errors + + def _set_total_errors(self, v, load=False): + """ + Setter method for total_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/total_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_total_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_total_errors() directly. + + YANG Description: Total number of uncorrectable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """total_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__total_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_total_errors(self): + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_undefined_errors(self): + """ + Getter method for undefined_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/undefined_errors (oc-yang:counter64) + + YANG Description: Number of undefined errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__undefined_errors + + def _set_undefined_errors(self, v, load=False): + """ + Setter method for undefined_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/undefined_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_undefined_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_undefined_errors() directly. + + YANG Description: Number of undefined errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """undefined_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__undefined_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_undefined_errors(self): + self.__undefined_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_data_link_errors(self): + """ + Getter method for data_link_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/data_link_errors (oc-yang:counter64) + + YANG Description: Number of data-link errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__data_link_errors + + def _set_data_link_errors(self, v, load=False): + """ + Setter method for data_link_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/data_link_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_data_link_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_data_link_errors() directly. + + YANG Description: Number of data-link errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """data_link_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__data_link_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_data_link_errors(self): + self.__data_link_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_surprise_down_errors(self): + """ + Getter method for surprise_down_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/surprise_down_errors (oc-yang:counter64) + + YANG Description: Number of unexpected link down errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__surprise_down_errors + + def _set_surprise_down_errors(self, v, load=False): + """ + Setter method for surprise_down_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/surprise_down_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_surprise_down_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_surprise_down_errors() directly. + + YANG Description: Number of unexpected link down errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """surprise_down_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__surprise_down_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_surprise_down_errors(self): + self.__surprise_down_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_poisoned_tlp_errors(self): + """ + Getter method for poisoned_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/poisoned_tlp_errors (oc-yang:counter64) + + YANG Description: Number of poisoned TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__poisoned_tlp_errors + + def _set_poisoned_tlp_errors(self, v, load=False): + """ + Setter method for poisoned_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/poisoned_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_poisoned_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_poisoned_tlp_errors() directly. + + YANG Description: Number of poisoned TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """poisoned_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__poisoned_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_poisoned_tlp_errors(self): + self.__poisoned_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_flow_control_protocol_errors(self): + """ + Getter method for flow_control_protocol_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/flow_control_protocol_errors (oc-yang:counter64) + + YANG Description: Number of flow control protocol errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__flow_control_protocol_errors + + def _set_flow_control_protocol_errors(self, v, load=False): + """ + Setter method for flow_control_protocol_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/flow_control_protocol_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_flow_control_protocol_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_flow_control_protocol_errors() directly. + + YANG Description: Number of flow control protocol errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """flow_control_protocol_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__flow_control_protocol_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_flow_control_protocol_errors(self): + self.__flow_control_protocol_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_completion_timeout_errors(self): + """ + Getter method for completion_timeout_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/completion_timeout_errors (oc-yang:counter64) + + YANG Description: Number of completion timeout errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__completion_timeout_errors + + def _set_completion_timeout_errors(self, v, load=False): + """ + Setter method for completion_timeout_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/completion_timeout_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_completion_timeout_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_completion_timeout_errors() directly. + + YANG Description: Number of completion timeout errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """completion_timeout_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__completion_timeout_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_completion_timeout_errors(self): + self.__completion_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_completion_abort_errors(self): + """ + Getter method for completion_abort_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/completion_abort_errors (oc-yang:counter64) + + YANG Description: Number of completion abort errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__completion_abort_errors + + def _set_completion_abort_errors(self, v, load=False): + """ + Setter method for completion_abort_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/completion_abort_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_completion_abort_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_completion_abort_errors() directly. + + YANG Description: Number of completion abort errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """completion_abort_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__completion_abort_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_completion_abort_errors(self): + self.__completion_abort_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_unexpected_completion_errors(self): + """ + Getter method for unexpected_completion_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/unexpected_completion_errors (oc-yang:counter64) + + YANG Description: Number of unexpected completion errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__unexpected_completion_errors + + def _set_unexpected_completion_errors(self, v, load=False): + """ + Setter method for unexpected_completion_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/unexpected_completion_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_unexpected_completion_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unexpected_completion_errors() directly. + + YANG Description: Number of unexpected completion errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unexpected_completion_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__unexpected_completion_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_unexpected_completion_errors(self): + self.__unexpected_completion_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_receiver_overflow_errors(self): + """ + Getter method for receiver_overflow_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/receiver_overflow_errors (oc-yang:counter64) + + YANG Description: Number of receiver overflow errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__receiver_overflow_errors + + def _set_receiver_overflow_errors(self, v, load=False): + """ + Setter method for receiver_overflow_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/receiver_overflow_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_receiver_overflow_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_receiver_overflow_errors() directly. + + YANG Description: Number of receiver overflow errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """receiver_overflow_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__receiver_overflow_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_receiver_overflow_errors(self): + self.__receiver_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_malformed_tlp_errors(self): + """ + Getter method for malformed_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/malformed_tlp_errors (oc-yang:counter64) + + YANG Description: Number of malformed TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__malformed_tlp_errors + + def _set_malformed_tlp_errors(self, v, load=False): + """ + Setter method for malformed_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/malformed_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_malformed_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_malformed_tlp_errors() directly. + + YANG Description: Number of malformed TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """malformed_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__malformed_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_malformed_tlp_errors(self): + self.__malformed_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_ecrc_errors(self): + """ + Getter method for ecrc_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/ecrc_errors (oc-yang:counter64) + + YANG Description: Number of ECRC errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + return self.__ecrc_errors + + def _set_ecrc_errors(self, v, load=False): + """ + Setter method for ecrc_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/ecrc_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_ecrc_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ecrc_errors() directly. + + YANG Description: Number of ECRC errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ecrc_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__ecrc_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_ecrc_errors(self): + self.__ecrc_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_unsupported_request_errors(self): + """ + Getter method for unsupported_request_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/unsupported_request_errors (oc-yang:counter64) + + YANG Description: Number of unsupported request errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__unsupported_request_errors + + def _set_unsupported_request_errors(self, v, load=False): + """ + Setter method for unsupported_request_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/unsupported_request_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_unsupported_request_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unsupported_request_errors() directly. + + YANG Description: Number of unsupported request errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unsupported_request_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__unsupported_request_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_unsupported_request_errors(self): + self.__unsupported_request_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_acs_violation_errors(self): + """ + Getter method for acs_violation_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/acs_violation_errors (oc-yang:counter64) + + YANG Description: Number of access control errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__acs_violation_errors + + def _set_acs_violation_errors(self, v, load=False): + """ + Setter method for acs_violation_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/acs_violation_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_acs_violation_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_acs_violation_errors() directly. + + YANG Description: Number of access control errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """acs_violation_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__acs_violation_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_acs_violation_errors(self): + self.__acs_violation_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_internal_errors(self): + """ + Getter method for internal_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/internal_errors (oc-yang:counter64) + + YANG Description: Number of internal errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__internal_errors + + def _set_internal_errors(self, v, load=False): + """ + Setter method for internal_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/internal_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_internal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_internal_errors() directly. + + YANG Description: Number of internal errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """internal_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__internal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_internal_errors(self): + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_blocked_tlp_errors(self): + """ + Getter method for blocked_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/blocked_tlp_errors (oc-yang:counter64) + + YANG Description: Number of blocked TLP errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__blocked_tlp_errors + + def _set_blocked_tlp_errors(self, v, load=False): + """ + Setter method for blocked_tlp_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/blocked_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_blocked_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_blocked_tlp_errors() directly. + + YANG Description: Number of blocked TLP errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """blocked_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__blocked_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_blocked_tlp_errors(self): + self.__blocked_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_atomic_op_blocked_errors(self): + """ + Getter method for atomic_op_blocked_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/atomic_op_blocked_errors (oc-yang:counter64) + + YANG Description: Number of atomic operation blocked errors detected by PCIe +device since the system booted, according to PCIe AER driver. + """ + return self.__atomic_op_blocked_errors + + def _set_atomic_op_blocked_errors(self, v, load=False): + """ + Setter method for atomic_op_blocked_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/atomic_op_blocked_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_atomic_op_blocked_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_atomic_op_blocked_errors() directly. + + YANG Description: Number of atomic operation blocked errors detected by PCIe +device since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """atomic_op_blocked_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__atomic_op_blocked_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_atomic_op_blocked_errors(self): + self.__atomic_op_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_tlp_prefix_blocked_errors(self): + """ + Getter method for tlp_prefix_blocked_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/tlp_prefix_blocked_errors (oc-yang:counter64) + + YANG Description: Number of TLP prefix blocked errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__tlp_prefix_blocked_errors + + def _set_tlp_prefix_blocked_errors(self, v, load=False): + """ + Setter method for tlp_prefix_blocked_errors, mapped from YANG variable /components/component/state/pcie/fatal_errors/tlp_prefix_blocked_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_tlp_prefix_blocked_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tlp_prefix_blocked_errors() directly. + + YANG Description: Number of TLP prefix blocked errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tlp_prefix_blocked_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__tlp_prefix_blocked_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_tlp_prefix_blocked_errors(self): + self.__tlp_prefix_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + total_errors = __builtin__.property(_get_total_errors) + undefined_errors = __builtin__.property(_get_undefined_errors) + data_link_errors = __builtin__.property(_get_data_link_errors) + surprise_down_errors = __builtin__.property(_get_surprise_down_errors) + poisoned_tlp_errors = __builtin__.property(_get_poisoned_tlp_errors) + flow_control_protocol_errors = __builtin__.property(_get_flow_control_protocol_errors) + completion_timeout_errors = __builtin__.property(_get_completion_timeout_errors) + completion_abort_errors = __builtin__.property(_get_completion_abort_errors) + unexpected_completion_errors = __builtin__.property(_get_unexpected_completion_errors) + receiver_overflow_errors = __builtin__.property(_get_receiver_overflow_errors) + malformed_tlp_errors = __builtin__.property(_get_malformed_tlp_errors) + ecrc_errors = __builtin__.property(_get_ecrc_errors) + unsupported_request_errors = __builtin__.property(_get_unsupported_request_errors) + acs_violation_errors = __builtin__.property(_get_acs_violation_errors) + internal_errors = __builtin__.property(_get_internal_errors) + blocked_tlp_errors = __builtin__.property(_get_blocked_tlp_errors) + atomic_op_blocked_errors = __builtin__.property(_get_atomic_op_blocked_errors) + tlp_prefix_blocked_errors = __builtin__.property(_get_tlp_prefix_blocked_errors) + + + _pyangbind_elements = OrderedDict([('total_errors', total_errors), ('undefined_errors', undefined_errors), ('data_link_errors', data_link_errors), ('surprise_down_errors', surprise_down_errors), ('poisoned_tlp_errors', poisoned_tlp_errors), ('flow_control_protocol_errors', flow_control_protocol_errors), ('completion_timeout_errors', completion_timeout_errors), ('completion_abort_errors', completion_abort_errors), ('unexpected_completion_errors', unexpected_completion_errors), ('receiver_overflow_errors', receiver_overflow_errors), ('malformed_tlp_errors', malformed_tlp_errors), ('ecrc_errors', ecrc_errors), ('unsupported_request_errors', unsupported_request_errors), ('acs_violation_errors', acs_violation_errors), ('internal_errors', internal_errors), ('blocked_tlp_errors', blocked_tlp_errors), ('atomic_op_blocked_errors', atomic_op_blocked_errors), ('tlp_prefix_blocked_errors', tlp_prefix_blocked_errors), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/state/pcie/non_fatal_errors/__init__.py b/hackfest/netconf-oc/openconfig/components/component/state/pcie/non_fatal_errors/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..02674f40f1f19a8023fc756bb1b2225f7750e645 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/state/pcie/non_fatal_errors/__init__.py @@ -0,0 +1,1604 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class non_fatal_errors(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/state/pcie/non-fatal-errors. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The count of the non-fatal PCIe errors. + """ + __slots__ = ('_path_helper', '_extmethods', '__total_errors','__undefined_errors','__data_link_errors','__surprise_down_errors','__poisoned_tlp_errors','__flow_control_protocol_errors','__completion_timeout_errors','__completion_abort_errors','__unexpected_completion_errors','__receiver_overflow_errors','__malformed_tlp_errors','__ecrc_errors','__unsupported_request_errors','__acs_violation_errors','__internal_errors','__blocked_tlp_errors','__atomic_op_blocked_errors','__tlp_prefix_blocked_errors',) + + _yang_name = 'non-fatal-errors' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__undefined_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__data_link_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__surprise_down_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__poisoned_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__flow_control_protocol_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__completion_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__completion_abort_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__unexpected_completion_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__receiver_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__malformed_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__ecrc_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__unsupported_request_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__acs_violation_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__blocked_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__atomic_op_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__tlp_prefix_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'pcie', 'non-fatal-errors'] + + def _get_total_errors(self): + """ + Getter method for total_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/total_errors (oc-yang:counter64) + + YANG Description: Total number of uncorrectable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__total_errors + + def _set_total_errors(self, v, load=False): + """ + Setter method for total_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/total_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_total_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_total_errors() directly. + + YANG Description: Total number of uncorrectable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """total_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__total_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_total_errors(self): + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_undefined_errors(self): + """ + Getter method for undefined_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/undefined_errors (oc-yang:counter64) + + YANG Description: Number of undefined errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__undefined_errors + + def _set_undefined_errors(self, v, load=False): + """ + Setter method for undefined_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/undefined_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_undefined_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_undefined_errors() directly. + + YANG Description: Number of undefined errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """undefined_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__undefined_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_undefined_errors(self): + self.__undefined_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_data_link_errors(self): + """ + Getter method for data_link_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/data_link_errors (oc-yang:counter64) + + YANG Description: Number of data-link errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__data_link_errors + + def _set_data_link_errors(self, v, load=False): + """ + Setter method for data_link_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/data_link_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_data_link_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_data_link_errors() directly. + + YANG Description: Number of data-link errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """data_link_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__data_link_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_data_link_errors(self): + self.__data_link_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_surprise_down_errors(self): + """ + Getter method for surprise_down_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/surprise_down_errors (oc-yang:counter64) + + YANG Description: Number of unexpected link down errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__surprise_down_errors + + def _set_surprise_down_errors(self, v, load=False): + """ + Setter method for surprise_down_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/surprise_down_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_surprise_down_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_surprise_down_errors() directly. + + YANG Description: Number of unexpected link down errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """surprise_down_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__surprise_down_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_surprise_down_errors(self): + self.__surprise_down_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_poisoned_tlp_errors(self): + """ + Getter method for poisoned_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/poisoned_tlp_errors (oc-yang:counter64) + + YANG Description: Number of poisoned TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__poisoned_tlp_errors + + def _set_poisoned_tlp_errors(self, v, load=False): + """ + Setter method for poisoned_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/poisoned_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_poisoned_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_poisoned_tlp_errors() directly. + + YANG Description: Number of poisoned TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """poisoned_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__poisoned_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_poisoned_tlp_errors(self): + self.__poisoned_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_flow_control_protocol_errors(self): + """ + Getter method for flow_control_protocol_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/flow_control_protocol_errors (oc-yang:counter64) + + YANG Description: Number of flow control protocol errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__flow_control_protocol_errors + + def _set_flow_control_protocol_errors(self, v, load=False): + """ + Setter method for flow_control_protocol_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/flow_control_protocol_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_flow_control_protocol_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_flow_control_protocol_errors() directly. + + YANG Description: Number of flow control protocol errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """flow_control_protocol_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__flow_control_protocol_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_flow_control_protocol_errors(self): + self.__flow_control_protocol_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_completion_timeout_errors(self): + """ + Getter method for completion_timeout_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/completion_timeout_errors (oc-yang:counter64) + + YANG Description: Number of completion timeout errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__completion_timeout_errors + + def _set_completion_timeout_errors(self, v, load=False): + """ + Setter method for completion_timeout_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/completion_timeout_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_completion_timeout_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_completion_timeout_errors() directly. + + YANG Description: Number of completion timeout errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """completion_timeout_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__completion_timeout_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_completion_timeout_errors(self): + self.__completion_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_completion_abort_errors(self): + """ + Getter method for completion_abort_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/completion_abort_errors (oc-yang:counter64) + + YANG Description: Number of completion abort errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__completion_abort_errors + + def _set_completion_abort_errors(self, v, load=False): + """ + Setter method for completion_abort_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/completion_abort_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_completion_abort_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_completion_abort_errors() directly. + + YANG Description: Number of completion abort errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """completion_abort_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__completion_abort_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_completion_abort_errors(self): + self.__completion_abort_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_unexpected_completion_errors(self): + """ + Getter method for unexpected_completion_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/unexpected_completion_errors (oc-yang:counter64) + + YANG Description: Number of unexpected completion errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__unexpected_completion_errors + + def _set_unexpected_completion_errors(self, v, load=False): + """ + Setter method for unexpected_completion_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/unexpected_completion_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_unexpected_completion_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unexpected_completion_errors() directly. + + YANG Description: Number of unexpected completion errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unexpected_completion_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__unexpected_completion_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_unexpected_completion_errors(self): + self.__unexpected_completion_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_receiver_overflow_errors(self): + """ + Getter method for receiver_overflow_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/receiver_overflow_errors (oc-yang:counter64) + + YANG Description: Number of receiver overflow errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__receiver_overflow_errors + + def _set_receiver_overflow_errors(self, v, load=False): + """ + Setter method for receiver_overflow_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/receiver_overflow_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_receiver_overflow_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_receiver_overflow_errors() directly. + + YANG Description: Number of receiver overflow errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """receiver_overflow_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__receiver_overflow_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_receiver_overflow_errors(self): + self.__receiver_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_malformed_tlp_errors(self): + """ + Getter method for malformed_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/malformed_tlp_errors (oc-yang:counter64) + + YANG Description: Number of malformed TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__malformed_tlp_errors + + def _set_malformed_tlp_errors(self, v, load=False): + """ + Setter method for malformed_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/malformed_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_malformed_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_malformed_tlp_errors() directly. + + YANG Description: Number of malformed TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """malformed_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__malformed_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_malformed_tlp_errors(self): + self.__malformed_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_ecrc_errors(self): + """ + Getter method for ecrc_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/ecrc_errors (oc-yang:counter64) + + YANG Description: Number of ECRC errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + return self.__ecrc_errors + + def _set_ecrc_errors(self, v, load=False): + """ + Setter method for ecrc_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/ecrc_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_ecrc_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ecrc_errors() directly. + + YANG Description: Number of ECRC errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ecrc_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__ecrc_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_ecrc_errors(self): + self.__ecrc_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_unsupported_request_errors(self): + """ + Getter method for unsupported_request_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/unsupported_request_errors (oc-yang:counter64) + + YANG Description: Number of unsupported request errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__unsupported_request_errors + + def _set_unsupported_request_errors(self, v, load=False): + """ + Setter method for unsupported_request_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/unsupported_request_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_unsupported_request_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unsupported_request_errors() directly. + + YANG Description: Number of unsupported request errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unsupported_request_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__unsupported_request_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_unsupported_request_errors(self): + self.__unsupported_request_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_acs_violation_errors(self): + """ + Getter method for acs_violation_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/acs_violation_errors (oc-yang:counter64) + + YANG Description: Number of access control errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__acs_violation_errors + + def _set_acs_violation_errors(self, v, load=False): + """ + Setter method for acs_violation_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/acs_violation_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_acs_violation_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_acs_violation_errors() directly. + + YANG Description: Number of access control errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """acs_violation_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__acs_violation_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_acs_violation_errors(self): + self.__acs_violation_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_internal_errors(self): + """ + Getter method for internal_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/internal_errors (oc-yang:counter64) + + YANG Description: Number of internal errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__internal_errors + + def _set_internal_errors(self, v, load=False): + """ + Setter method for internal_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/internal_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_internal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_internal_errors() directly. + + YANG Description: Number of internal errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """internal_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__internal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_internal_errors(self): + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_blocked_tlp_errors(self): + """ + Getter method for blocked_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/blocked_tlp_errors (oc-yang:counter64) + + YANG Description: Number of blocked TLP errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__blocked_tlp_errors + + def _set_blocked_tlp_errors(self, v, load=False): + """ + Setter method for blocked_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/blocked_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_blocked_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_blocked_tlp_errors() directly. + + YANG Description: Number of blocked TLP errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """blocked_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__blocked_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_blocked_tlp_errors(self): + self.__blocked_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_atomic_op_blocked_errors(self): + """ + Getter method for atomic_op_blocked_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/atomic_op_blocked_errors (oc-yang:counter64) + + YANG Description: Number of atomic operation blocked errors detected by PCIe +device since the system booted, according to PCIe AER driver. + """ + return self.__atomic_op_blocked_errors + + def _set_atomic_op_blocked_errors(self, v, load=False): + """ + Setter method for atomic_op_blocked_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/atomic_op_blocked_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_atomic_op_blocked_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_atomic_op_blocked_errors() directly. + + YANG Description: Number of atomic operation blocked errors detected by PCIe +device since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """atomic_op_blocked_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__atomic_op_blocked_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_atomic_op_blocked_errors(self): + self.__atomic_op_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_tlp_prefix_blocked_errors(self): + """ + Getter method for tlp_prefix_blocked_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/tlp_prefix_blocked_errors (oc-yang:counter64) + + YANG Description: Number of TLP prefix blocked errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__tlp_prefix_blocked_errors + + def _set_tlp_prefix_blocked_errors(self, v, load=False): + """ + Setter method for tlp_prefix_blocked_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/tlp_prefix_blocked_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_tlp_prefix_blocked_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tlp_prefix_blocked_errors() directly. + + YANG Description: Number of TLP prefix blocked errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tlp_prefix_blocked_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__tlp_prefix_blocked_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_tlp_prefix_blocked_errors(self): + self.__tlp_prefix_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + total_errors = __builtin__.property(_get_total_errors) + undefined_errors = __builtin__.property(_get_undefined_errors) + data_link_errors = __builtin__.property(_get_data_link_errors) + surprise_down_errors = __builtin__.property(_get_surprise_down_errors) + poisoned_tlp_errors = __builtin__.property(_get_poisoned_tlp_errors) + flow_control_protocol_errors = __builtin__.property(_get_flow_control_protocol_errors) + completion_timeout_errors = __builtin__.property(_get_completion_timeout_errors) + completion_abort_errors = __builtin__.property(_get_completion_abort_errors) + unexpected_completion_errors = __builtin__.property(_get_unexpected_completion_errors) + receiver_overflow_errors = __builtin__.property(_get_receiver_overflow_errors) + malformed_tlp_errors = __builtin__.property(_get_malformed_tlp_errors) + ecrc_errors = __builtin__.property(_get_ecrc_errors) + unsupported_request_errors = __builtin__.property(_get_unsupported_request_errors) + acs_violation_errors = __builtin__.property(_get_acs_violation_errors) + internal_errors = __builtin__.property(_get_internal_errors) + blocked_tlp_errors = __builtin__.property(_get_blocked_tlp_errors) + atomic_op_blocked_errors = __builtin__.property(_get_atomic_op_blocked_errors) + tlp_prefix_blocked_errors = __builtin__.property(_get_tlp_prefix_blocked_errors) + + + _pyangbind_elements = OrderedDict([('total_errors', total_errors), ('undefined_errors', undefined_errors), ('data_link_errors', data_link_errors), ('surprise_down_errors', surprise_down_errors), ('poisoned_tlp_errors', poisoned_tlp_errors), ('flow_control_protocol_errors', flow_control_protocol_errors), ('completion_timeout_errors', completion_timeout_errors), ('completion_abort_errors', completion_abort_errors), ('unexpected_completion_errors', unexpected_completion_errors), ('receiver_overflow_errors', receiver_overflow_errors), ('malformed_tlp_errors', malformed_tlp_errors), ('ecrc_errors', ecrc_errors), ('unsupported_request_errors', unsupported_request_errors), ('acs_violation_errors', acs_violation_errors), ('internal_errors', internal_errors), ('blocked_tlp_errors', blocked_tlp_errors), ('atomic_op_blocked_errors', atomic_op_blocked_errors), ('tlp_prefix_blocked_errors', tlp_prefix_blocked_errors), ]) + + +class non_fatal_errors(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/state/pcie/non-fatal-errors. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The count of the non-fatal PCIe errors. + """ + __slots__ = ('_path_helper', '_extmethods', '__total_errors','__undefined_errors','__data_link_errors','__surprise_down_errors','__poisoned_tlp_errors','__flow_control_protocol_errors','__completion_timeout_errors','__completion_abort_errors','__unexpected_completion_errors','__receiver_overflow_errors','__malformed_tlp_errors','__ecrc_errors','__unsupported_request_errors','__acs_violation_errors','__internal_errors','__blocked_tlp_errors','__atomic_op_blocked_errors','__tlp_prefix_blocked_errors',) + + _yang_name = 'non-fatal-errors' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__undefined_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__data_link_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__surprise_down_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__poisoned_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__flow_control_protocol_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__completion_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__completion_abort_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__unexpected_completion_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__receiver_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__malformed_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__ecrc_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__unsupported_request_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__acs_violation_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__blocked_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__atomic_op_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + self.__tlp_prefix_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'pcie', 'non-fatal-errors'] + + def _get_total_errors(self): + """ + Getter method for total_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/total_errors (oc-yang:counter64) + + YANG Description: Total number of uncorrectable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__total_errors + + def _set_total_errors(self, v, load=False): + """ + Setter method for total_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/total_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_total_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_total_errors() directly. + + YANG Description: Total number of uncorrectable errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """total_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__total_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_total_errors(self): + self.__total_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="total-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_undefined_errors(self): + """ + Getter method for undefined_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/undefined_errors (oc-yang:counter64) + + YANG Description: Number of undefined errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__undefined_errors + + def _set_undefined_errors(self, v, load=False): + """ + Setter method for undefined_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/undefined_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_undefined_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_undefined_errors() directly. + + YANG Description: Number of undefined errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """undefined_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__undefined_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_undefined_errors(self): + self.__undefined_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="undefined-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_data_link_errors(self): + """ + Getter method for data_link_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/data_link_errors (oc-yang:counter64) + + YANG Description: Number of data-link errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__data_link_errors + + def _set_data_link_errors(self, v, load=False): + """ + Setter method for data_link_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/data_link_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_data_link_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_data_link_errors() directly. + + YANG Description: Number of data-link errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """data_link_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__data_link_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_data_link_errors(self): + self.__data_link_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="data-link-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_surprise_down_errors(self): + """ + Getter method for surprise_down_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/surprise_down_errors (oc-yang:counter64) + + YANG Description: Number of unexpected link down errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__surprise_down_errors + + def _set_surprise_down_errors(self, v, load=False): + """ + Setter method for surprise_down_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/surprise_down_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_surprise_down_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_surprise_down_errors() directly. + + YANG Description: Number of unexpected link down errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """surprise_down_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__surprise_down_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_surprise_down_errors(self): + self.__surprise_down_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="surprise-down-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_poisoned_tlp_errors(self): + """ + Getter method for poisoned_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/poisoned_tlp_errors (oc-yang:counter64) + + YANG Description: Number of poisoned TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__poisoned_tlp_errors + + def _set_poisoned_tlp_errors(self, v, load=False): + """ + Setter method for poisoned_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/poisoned_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_poisoned_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_poisoned_tlp_errors() directly. + + YANG Description: Number of poisoned TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """poisoned_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__poisoned_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_poisoned_tlp_errors(self): + self.__poisoned_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="poisoned-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_flow_control_protocol_errors(self): + """ + Getter method for flow_control_protocol_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/flow_control_protocol_errors (oc-yang:counter64) + + YANG Description: Number of flow control protocol errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__flow_control_protocol_errors + + def _set_flow_control_protocol_errors(self, v, load=False): + """ + Setter method for flow_control_protocol_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/flow_control_protocol_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_flow_control_protocol_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_flow_control_protocol_errors() directly. + + YANG Description: Number of flow control protocol errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """flow_control_protocol_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__flow_control_protocol_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_flow_control_protocol_errors(self): + self.__flow_control_protocol_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="flow-control-protocol-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_completion_timeout_errors(self): + """ + Getter method for completion_timeout_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/completion_timeout_errors (oc-yang:counter64) + + YANG Description: Number of completion timeout errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__completion_timeout_errors + + def _set_completion_timeout_errors(self, v, load=False): + """ + Setter method for completion_timeout_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/completion_timeout_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_completion_timeout_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_completion_timeout_errors() directly. + + YANG Description: Number of completion timeout errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """completion_timeout_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__completion_timeout_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_completion_timeout_errors(self): + self.__completion_timeout_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-timeout-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_completion_abort_errors(self): + """ + Getter method for completion_abort_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/completion_abort_errors (oc-yang:counter64) + + YANG Description: Number of completion abort errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__completion_abort_errors + + def _set_completion_abort_errors(self, v, load=False): + """ + Setter method for completion_abort_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/completion_abort_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_completion_abort_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_completion_abort_errors() directly. + + YANG Description: Number of completion abort errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """completion_abort_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__completion_abort_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_completion_abort_errors(self): + self.__completion_abort_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="completion-abort-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_unexpected_completion_errors(self): + """ + Getter method for unexpected_completion_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/unexpected_completion_errors (oc-yang:counter64) + + YANG Description: Number of unexpected completion errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__unexpected_completion_errors + + def _set_unexpected_completion_errors(self, v, load=False): + """ + Setter method for unexpected_completion_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/unexpected_completion_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_unexpected_completion_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unexpected_completion_errors() directly. + + YANG Description: Number of unexpected completion errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unexpected_completion_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__unexpected_completion_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_unexpected_completion_errors(self): + self.__unexpected_completion_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unexpected-completion-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_receiver_overflow_errors(self): + """ + Getter method for receiver_overflow_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/receiver_overflow_errors (oc-yang:counter64) + + YANG Description: Number of receiver overflow errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__receiver_overflow_errors + + def _set_receiver_overflow_errors(self, v, load=False): + """ + Setter method for receiver_overflow_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/receiver_overflow_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_receiver_overflow_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_receiver_overflow_errors() directly. + + YANG Description: Number of receiver overflow errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """receiver_overflow_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__receiver_overflow_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_receiver_overflow_errors(self): + self.__receiver_overflow_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="receiver-overflow-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_malformed_tlp_errors(self): + """ + Getter method for malformed_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/malformed_tlp_errors (oc-yang:counter64) + + YANG Description: Number of malformed TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__malformed_tlp_errors + + def _set_malformed_tlp_errors(self, v, load=False): + """ + Setter method for malformed_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/malformed_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_malformed_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_malformed_tlp_errors() directly. + + YANG Description: Number of malformed TLP errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """malformed_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__malformed_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_malformed_tlp_errors(self): + self.__malformed_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="malformed-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_ecrc_errors(self): + """ + Getter method for ecrc_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/ecrc_errors (oc-yang:counter64) + + YANG Description: Number of ECRC errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + return self.__ecrc_errors + + def _set_ecrc_errors(self, v, load=False): + """ + Setter method for ecrc_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/ecrc_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_ecrc_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ecrc_errors() directly. + + YANG Description: Number of ECRC errors detected by PCIe device since the system +booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ecrc_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__ecrc_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_ecrc_errors(self): + self.__ecrc_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="ecrc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_unsupported_request_errors(self): + """ + Getter method for unsupported_request_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/unsupported_request_errors (oc-yang:counter64) + + YANG Description: Number of unsupported request errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__unsupported_request_errors + + def _set_unsupported_request_errors(self, v, load=False): + """ + Setter method for unsupported_request_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/unsupported_request_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_unsupported_request_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_unsupported_request_errors() directly. + + YANG Description: Number of unsupported request errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """unsupported_request_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__unsupported_request_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_unsupported_request_errors(self): + self.__unsupported_request_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="unsupported-request-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_acs_violation_errors(self): + """ + Getter method for acs_violation_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/acs_violation_errors (oc-yang:counter64) + + YANG Description: Number of access control errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__acs_violation_errors + + def _set_acs_violation_errors(self, v, load=False): + """ + Setter method for acs_violation_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/acs_violation_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_acs_violation_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_acs_violation_errors() directly. + + YANG Description: Number of access control errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """acs_violation_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__acs_violation_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_acs_violation_errors(self): + self.__acs_violation_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="acs-violation-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_internal_errors(self): + """ + Getter method for internal_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/internal_errors (oc-yang:counter64) + + YANG Description: Number of internal errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + return self.__internal_errors + + def _set_internal_errors(self, v, load=False): + """ + Setter method for internal_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/internal_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_internal_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_internal_errors() directly. + + YANG Description: Number of internal errors detected by PCIe device since the +system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """internal_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__internal_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_internal_errors(self): + self.__internal_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="internal-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_blocked_tlp_errors(self): + """ + Getter method for blocked_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/blocked_tlp_errors (oc-yang:counter64) + + YANG Description: Number of blocked TLP errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + return self.__blocked_tlp_errors + + def _set_blocked_tlp_errors(self, v, load=False): + """ + Setter method for blocked_tlp_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/blocked_tlp_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_blocked_tlp_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_blocked_tlp_errors() directly. + + YANG Description: Number of blocked TLP errors detected by PCIe device since +the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """blocked_tlp_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__blocked_tlp_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_blocked_tlp_errors(self): + self.__blocked_tlp_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="blocked-tlp-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_atomic_op_blocked_errors(self): + """ + Getter method for atomic_op_blocked_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/atomic_op_blocked_errors (oc-yang:counter64) + + YANG Description: Number of atomic operation blocked errors detected by PCIe +device since the system booted, according to PCIe AER driver. + """ + return self.__atomic_op_blocked_errors + + def _set_atomic_op_blocked_errors(self, v, load=False): + """ + Setter method for atomic_op_blocked_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/atomic_op_blocked_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_atomic_op_blocked_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_atomic_op_blocked_errors() directly. + + YANG Description: Number of atomic operation blocked errors detected by PCIe +device since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """atomic_op_blocked_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__atomic_op_blocked_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_atomic_op_blocked_errors(self): + self.__atomic_op_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="atomic-op-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + + def _get_tlp_prefix_blocked_errors(self): + """ + Getter method for tlp_prefix_blocked_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/tlp_prefix_blocked_errors (oc-yang:counter64) + + YANG Description: Number of TLP prefix blocked errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + return self.__tlp_prefix_blocked_errors + + def _set_tlp_prefix_blocked_errors(self, v, load=False): + """ + Setter method for tlp_prefix_blocked_errors, mapped from YANG variable /components/component/state/pcie/non_fatal_errors/tlp_prefix_blocked_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_tlp_prefix_blocked_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_tlp_prefix_blocked_errors() directly. + + YANG Description: Number of TLP prefix blocked errors detected by PCIe device +since the system booted, according to PCIe AER driver. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """tlp_prefix_blocked_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__tlp_prefix_blocked_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_tlp_prefix_blocked_errors(self): + self.__tlp_prefix_blocked_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="tlp-prefix-blocked-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-yang:counter64', is_config=False) + + total_errors = __builtin__.property(_get_total_errors) + undefined_errors = __builtin__.property(_get_undefined_errors) + data_link_errors = __builtin__.property(_get_data_link_errors) + surprise_down_errors = __builtin__.property(_get_surprise_down_errors) + poisoned_tlp_errors = __builtin__.property(_get_poisoned_tlp_errors) + flow_control_protocol_errors = __builtin__.property(_get_flow_control_protocol_errors) + completion_timeout_errors = __builtin__.property(_get_completion_timeout_errors) + completion_abort_errors = __builtin__.property(_get_completion_abort_errors) + unexpected_completion_errors = __builtin__.property(_get_unexpected_completion_errors) + receiver_overflow_errors = __builtin__.property(_get_receiver_overflow_errors) + malformed_tlp_errors = __builtin__.property(_get_malformed_tlp_errors) + ecrc_errors = __builtin__.property(_get_ecrc_errors) + unsupported_request_errors = __builtin__.property(_get_unsupported_request_errors) + acs_violation_errors = __builtin__.property(_get_acs_violation_errors) + internal_errors = __builtin__.property(_get_internal_errors) + blocked_tlp_errors = __builtin__.property(_get_blocked_tlp_errors) + atomic_op_blocked_errors = __builtin__.property(_get_atomic_op_blocked_errors) + tlp_prefix_blocked_errors = __builtin__.property(_get_tlp_prefix_blocked_errors) + + + _pyangbind_elements = OrderedDict([('total_errors', total_errors), ('undefined_errors', undefined_errors), ('data_link_errors', data_link_errors), ('surprise_down_errors', surprise_down_errors), ('poisoned_tlp_errors', poisoned_tlp_errors), ('flow_control_protocol_errors', flow_control_protocol_errors), ('completion_timeout_errors', completion_timeout_errors), ('completion_abort_errors', completion_abort_errors), ('unexpected_completion_errors', unexpected_completion_errors), ('receiver_overflow_errors', receiver_overflow_errors), ('malformed_tlp_errors', malformed_tlp_errors), ('ecrc_errors', ecrc_errors), ('unsupported_request_errors', unsupported_request_errors), ('acs_violation_errors', acs_violation_errors), ('internal_errors', internal_errors), ('blocked_tlp_errors', blocked_tlp_errors), ('atomic_op_blocked_errors', atomic_op_blocked_errors), ('tlp_prefix_blocked_errors', tlp_prefix_blocked_errors), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/state/temperature/__init__.py b/hackfest/netconf-oc/openconfig/components/component/state/temperature/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..426d8a1d75604540a04fc92ab9494d9cd330434e --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/state/temperature/__init__.py @@ -0,0 +1,958 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class temperature(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/state/temperature. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Temperature in degrees Celsius of the component. Values include +the instantaneous, average, minimum, and maximum statistics. If +avg/min/max statistics are not supported, the target is expected +to just supply the instant value + """ + __slots__ = ('_path_helper', '_extmethods', '__instant','__avg','__min_','__max_','__interval','__min_time','__max_time','__alarm_status','__alarm_threshold','__alarm_severity',) + + _yang_name = 'temperature' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__instant = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="instant", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + self.__avg = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="avg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + self.__min_ = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="min", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + self.__max_ = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="max", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + self.__interval = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="interval", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:stat-interval', is_config=False) + self.__min_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="min-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + self.__max_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + self.__alarm_status = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="alarm-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + self.__alarm_threshold = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="alarm-threshold", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + self.__alarm_severity = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}},), is_leaf=True, yang_name="alarm-severity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'temperature'] + + def _get_instant(self): + """ + Getter method for instant, mapped from YANG variable /components/component/state/temperature/instant (decimal64) + + YANG Description: The instantaneous value of the statistic. + """ + return self.__instant + + def _set_instant(self, v, load=False): + """ + Setter method for instant, mapped from YANG variable /components/component/state/temperature/instant (decimal64) + If this variable is read-only (config: false) in the + source YANG file, then _set_instant is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_instant() directly. + + YANG Description: The instantaneous value of the statistic. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="instant", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """instant must be of a type compatible with decimal64""", + 'defined-type': "decimal64", + 'generated-type': """YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="instant", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False)""", + }) + + self.__instant = t + if hasattr(self, '_set'): + self._set() + + def _unset_instant(self): + self.__instant = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="instant", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + + + def _get_avg(self): + """ + Getter method for avg, mapped from YANG variable /components/component/state/temperature/avg (decimal64) + + YANG Description: The arithmetic mean value of the statistic over the +sampling period. + """ + return self.__avg + + def _set_avg(self, v, load=False): + """ + Setter method for avg, mapped from YANG variable /components/component/state/temperature/avg (decimal64) + If this variable is read-only (config: false) in the + source YANG file, then _set_avg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_avg() directly. + + YANG Description: The arithmetic mean value of the statistic over the +sampling period. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="avg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """avg must be of a type compatible with decimal64""", + 'defined-type': "decimal64", + 'generated-type': """YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="avg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False)""", + }) + + self.__avg = t + if hasattr(self, '_set'): + self._set() + + def _unset_avg(self): + self.__avg = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="avg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + + + def _get_min_(self): + """ + Getter method for min_, mapped from YANG variable /components/component/state/temperature/min (decimal64) + + YANG Description: The minimum value of the statistic over the sampling +period + """ + return self.__min_ + + def _set_min_(self, v, load=False): + """ + Setter method for min_, mapped from YANG variable /components/component/state/temperature/min (decimal64) + If this variable is read-only (config: false) in the + source YANG file, then _set_min_ is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_min_() directly. + + YANG Description: The minimum value of the statistic over the sampling +period + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="min", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """min_ must be of a type compatible with decimal64""", + 'defined-type': "decimal64", + 'generated-type': """YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="min", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False)""", + }) + + self.__min_ = t + if hasattr(self, '_set'): + self._set() + + def _unset_min_(self): + self.__min_ = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="min", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + + + def _get_max_(self): + """ + Getter method for max_, mapped from YANG variable /components/component/state/temperature/max (decimal64) + + YANG Description: The maximum value of the statistic over the sampling +period + """ + return self.__max_ + + def _set_max_(self, v, load=False): + """ + Setter method for max_, mapped from YANG variable /components/component/state/temperature/max (decimal64) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_ is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_() directly. + + YANG Description: The maximum value of the statistic over the sampling +period + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="max", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_ must be of a type compatible with decimal64""", + 'defined-type': "decimal64", + 'generated-type': """YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="max", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False)""", + }) + + self.__max_ = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_(self): + self.__max_ = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="max", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + + + def _get_interval(self): + """ + Getter method for interval, mapped from YANG variable /components/component/state/temperature/interval (oc-types:stat-interval) + + YANG Description: If supported by the system, this reports the time interval +over which the min/max/average statistics are computed by +the system. + """ + return self.__interval + + def _set_interval(self, v, load=False): + """ + Setter method for interval, mapped from YANG variable /components/component/state/temperature/interval (oc-types:stat-interval) + If this variable is read-only (config: false) in the + source YANG file, then _set_interval is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_interval() directly. + + YANG Description: If supported by the system, this reports the time interval +over which the min/max/average statistics are computed by +the system. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="interval", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:stat-interval', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """interval must be of a type compatible with oc-types:stat-interval""", + 'defined-type': "oc-types:stat-interval", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="interval", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:stat-interval', is_config=False)""", + }) + + self.__interval = t + if hasattr(self, '_set'): + self._set() + + def _unset_interval(self): + self.__interval = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="interval", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:stat-interval', is_config=False) + + + def _get_min_time(self): + """ + Getter method for min_time, mapped from YANG variable /components/component/state/temperature/min_time (oc-types:timeticks64) + + YANG Description: The absolute time at which the minimum value occurred. +The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + return self.__min_time + + def _set_min_time(self, v, load=False): + """ + Setter method for min_time, mapped from YANG variable /components/component/state/temperature/min_time (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_min_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_min_time() directly. + + YANG Description: The absolute time at which the minimum value occurred. +The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="min-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """min_time must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="min-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__min_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_min_time(self): + self.__min_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="min-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + + def _get_max_time(self): + """ + Getter method for max_time, mapped from YANG variable /components/component/state/temperature/max_time (oc-types:timeticks64) + + YANG Description: The absolute time at which the maximum value occurred. +The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + return self.__max_time + + def _set_max_time(self, v, load=False): + """ + Setter method for max_time, mapped from YANG variable /components/component/state/temperature/max_time (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_time() directly. + + YANG Description: The absolute time at which the maximum value occurred. +The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_time must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__max_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_time(self): + self.__max_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + + def _get_alarm_status(self): + """ + Getter method for alarm_status, mapped from YANG variable /components/component/state/temperature/alarm_status (boolean) + + YANG Description: A value of true indicates the alarm has been raised or +asserted. The value should be false when the alarm is +cleared. + """ + return self.__alarm_status + + def _set_alarm_status(self, v, load=False): + """ + Setter method for alarm_status, mapped from YANG variable /components/component/state/temperature/alarm_status (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_alarm_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_alarm_status() directly. + + YANG Description: A value of true indicates the alarm has been raised or +asserted. The value should be false when the alarm is +cleared. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="alarm-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """alarm_status must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="alarm-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False)""", + }) + + self.__alarm_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_alarm_status(self): + self.__alarm_status = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="alarm-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + + def _get_alarm_threshold(self): + """ + Getter method for alarm_threshold, mapped from YANG variable /components/component/state/temperature/alarm_threshold (uint32) + + YANG Description: The threshold value that was crossed for this alarm. + """ + return self.__alarm_threshold + + def _set_alarm_threshold(self, v, load=False): + """ + Setter method for alarm_threshold, mapped from YANG variable /components/component/state/temperature/alarm_threshold (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_alarm_threshold is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_alarm_threshold() directly. + + YANG Description: The threshold value that was crossed for this alarm. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="alarm-threshold", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """alarm_threshold must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="alarm-threshold", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False)""", + }) + + self.__alarm_threshold = t + if hasattr(self, '_set'): + self._set() + + def _unset_alarm_threshold(self): + self.__alarm_threshold = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="alarm-threshold", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + + + def _get_alarm_severity(self): + """ + Getter method for alarm_severity, mapped from YANG variable /components/component/state/temperature/alarm_severity (identityref) + + YANG Description: The severity of the current alarm. + """ + return self.__alarm_severity + + def _set_alarm_severity(self, v, load=False): + """ + Setter method for alarm_severity, mapped from YANG variable /components/component/state/temperature/alarm_severity (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_alarm_severity is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_alarm_severity() directly. + + YANG Description: The severity of the current alarm. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}},), is_leaf=True, yang_name="alarm-severity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """alarm_severity must be of a type compatible with identityref""", + 'defined-type': "openconfig-platform:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}},), is_leaf=True, yang_name="alarm-severity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False)""", + }) + + self.__alarm_severity = t + if hasattr(self, '_set'): + self._set() + + def _unset_alarm_severity(self): + self.__alarm_severity = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}},), is_leaf=True, yang_name="alarm-severity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + + instant = __builtin__.property(_get_instant) + avg = __builtin__.property(_get_avg) + min_ = __builtin__.property(_get_min_) + max_ = __builtin__.property(_get_max_) + interval = __builtin__.property(_get_interval) + min_time = __builtin__.property(_get_min_time) + max_time = __builtin__.property(_get_max_time) + alarm_status = __builtin__.property(_get_alarm_status) + alarm_threshold = __builtin__.property(_get_alarm_threshold) + alarm_severity = __builtin__.property(_get_alarm_severity) + + + _pyangbind_elements = OrderedDict([('instant', instant), ('avg', avg), ('min_', min_), ('max_', max_), ('interval', interval), ('min_time', min_time), ('max_time', max_time), ('alarm_status', alarm_status), ('alarm_threshold', alarm_threshold), ('alarm_severity', alarm_severity), ]) + + +class temperature(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/state/temperature. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Temperature in degrees Celsius of the component. Values include +the instantaneous, average, minimum, and maximum statistics. If +avg/min/max statistics are not supported, the target is expected +to just supply the instant value + """ + __slots__ = ('_path_helper', '_extmethods', '__instant','__avg','__min_','__max_','__interval','__min_time','__max_time','__alarm_status','__alarm_threshold','__alarm_severity',) + + _yang_name = 'temperature' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__instant = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="instant", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + self.__avg = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="avg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + self.__min_ = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="min", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + self.__max_ = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="max", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + self.__interval = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="interval", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:stat-interval', is_config=False) + self.__min_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="min-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + self.__max_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + self.__alarm_status = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="alarm-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + self.__alarm_threshold = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="alarm-threshold", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + self.__alarm_severity = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}},), is_leaf=True, yang_name="alarm-severity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'state', 'temperature'] + + def _get_instant(self): + """ + Getter method for instant, mapped from YANG variable /components/component/state/temperature/instant (decimal64) + + YANG Description: The instantaneous value of the statistic. + """ + return self.__instant + + def _set_instant(self, v, load=False): + """ + Setter method for instant, mapped from YANG variable /components/component/state/temperature/instant (decimal64) + If this variable is read-only (config: false) in the + source YANG file, then _set_instant is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_instant() directly. + + YANG Description: The instantaneous value of the statistic. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="instant", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """instant must be of a type compatible with decimal64""", + 'defined-type': "decimal64", + 'generated-type': """YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="instant", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False)""", + }) + + self.__instant = t + if hasattr(self, '_set'): + self._set() + + def _unset_instant(self): + self.__instant = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="instant", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + + + def _get_avg(self): + """ + Getter method for avg, mapped from YANG variable /components/component/state/temperature/avg (decimal64) + + YANG Description: The arithmetic mean value of the statistic over the +sampling period. + """ + return self.__avg + + def _set_avg(self, v, load=False): + """ + Setter method for avg, mapped from YANG variable /components/component/state/temperature/avg (decimal64) + If this variable is read-only (config: false) in the + source YANG file, then _set_avg is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_avg() directly. + + YANG Description: The arithmetic mean value of the statistic over the +sampling period. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="avg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """avg must be of a type compatible with decimal64""", + 'defined-type': "decimal64", + 'generated-type': """YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="avg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False)""", + }) + + self.__avg = t + if hasattr(self, '_set'): + self._set() + + def _unset_avg(self): + self.__avg = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="avg", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + + + def _get_min_(self): + """ + Getter method for min_, mapped from YANG variable /components/component/state/temperature/min (decimal64) + + YANG Description: The minimum value of the statistic over the sampling +period + """ + return self.__min_ + + def _set_min_(self, v, load=False): + """ + Setter method for min_, mapped from YANG variable /components/component/state/temperature/min (decimal64) + If this variable is read-only (config: false) in the + source YANG file, then _set_min_ is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_min_() directly. + + YANG Description: The minimum value of the statistic over the sampling +period + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="min", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """min_ must be of a type compatible with decimal64""", + 'defined-type': "decimal64", + 'generated-type': """YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="min", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False)""", + }) + + self.__min_ = t + if hasattr(self, '_set'): + self._set() + + def _unset_min_(self): + self.__min_ = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="min", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + + + def _get_max_(self): + """ + Getter method for max_, mapped from YANG variable /components/component/state/temperature/max (decimal64) + + YANG Description: The maximum value of the statistic over the sampling +period + """ + return self.__max_ + + def _set_max_(self, v, load=False): + """ + Setter method for max_, mapped from YANG variable /components/component/state/temperature/max (decimal64) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_ is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_() directly. + + YANG Description: The maximum value of the statistic over the sampling +period + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="max", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_ must be of a type compatible with decimal64""", + 'defined-type': "decimal64", + 'generated-type': """YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="max", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False)""", + }) + + self.__max_ = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_(self): + self.__max_ = YANGDynClass(base=RestrictedPrecisionDecimalType(precision=1), is_leaf=True, yang_name="max", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='decimal64', is_config=False) + + + def _get_interval(self): + """ + Getter method for interval, mapped from YANG variable /components/component/state/temperature/interval (oc-types:stat-interval) + + YANG Description: If supported by the system, this reports the time interval +over which the min/max/average statistics are computed by +the system. + """ + return self.__interval + + def _set_interval(self, v, load=False): + """ + Setter method for interval, mapped from YANG variable /components/component/state/temperature/interval (oc-types:stat-interval) + If this variable is read-only (config: false) in the + source YANG file, then _set_interval is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_interval() directly. + + YANG Description: If supported by the system, this reports the time interval +over which the min/max/average statistics are computed by +the system. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="interval", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:stat-interval', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """interval must be of a type compatible with oc-types:stat-interval""", + 'defined-type': "oc-types:stat-interval", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="interval", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:stat-interval', is_config=False)""", + }) + + self.__interval = t + if hasattr(self, '_set'): + self._set() + + def _unset_interval(self): + self.__interval = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="interval", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:stat-interval', is_config=False) + + + def _get_min_time(self): + """ + Getter method for min_time, mapped from YANG variable /components/component/state/temperature/min_time (oc-types:timeticks64) + + YANG Description: The absolute time at which the minimum value occurred. +The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + return self.__min_time + + def _set_min_time(self, v, load=False): + """ + Setter method for min_time, mapped from YANG variable /components/component/state/temperature/min_time (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_min_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_min_time() directly. + + YANG Description: The absolute time at which the minimum value occurred. +The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="min-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """min_time must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="min-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__min_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_min_time(self): + self.__min_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="min-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + + def _get_max_time(self): + """ + Getter method for max_time, mapped from YANG variable /components/component/state/temperature/max_time (oc-types:timeticks64) + + YANG Description: The absolute time at which the maximum value occurred. +The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + return self.__max_time + + def _set_max_time(self, v, load=False): + """ + Setter method for max_time, mapped from YANG variable /components/component/state/temperature/max_time (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_max_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_max_time() directly. + + YANG Description: The absolute time at which the maximum value occurred. +The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """max_time must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__max_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_max_time(self): + self.__max_time = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="max-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='oc-types:timeticks64', is_config=False) + + + def _get_alarm_status(self): + """ + Getter method for alarm_status, mapped from YANG variable /components/component/state/temperature/alarm_status (boolean) + + YANG Description: A value of true indicates the alarm has been raised or +asserted. The value should be false when the alarm is +cleared. + """ + return self.__alarm_status + + def _set_alarm_status(self, v, load=False): + """ + Setter method for alarm_status, mapped from YANG variable /components/component/state/temperature/alarm_status (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_alarm_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_alarm_status() directly. + + YANG Description: A value of true indicates the alarm has been raised or +asserted. The value should be false when the alarm is +cleared. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="alarm-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """alarm_status must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="alarm-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False)""", + }) + + self.__alarm_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_alarm_status(self): + self.__alarm_status = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="alarm-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='boolean', is_config=False) + + + def _get_alarm_threshold(self): + """ + Getter method for alarm_threshold, mapped from YANG variable /components/component/state/temperature/alarm_threshold (uint32) + + YANG Description: The threshold value that was crossed for this alarm. + """ + return self.__alarm_threshold + + def _set_alarm_threshold(self, v, load=False): + """ + Setter method for alarm_threshold, mapped from YANG variable /components/component/state/temperature/alarm_threshold (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_alarm_threshold is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_alarm_threshold() directly. + + YANG Description: The threshold value that was crossed for this alarm. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="alarm-threshold", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """alarm_threshold must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="alarm-threshold", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False)""", + }) + + self.__alarm_threshold = t + if hasattr(self, '_set'): + self._set() + + def _unset_alarm_threshold(self): + self.__alarm_threshold = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="alarm-threshold", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='uint32', is_config=False) + + + def _get_alarm_severity(self): + """ + Getter method for alarm_severity, mapped from YANG variable /components/component/state/temperature/alarm_severity (identityref) + + YANG Description: The severity of the current alarm. + """ + return self.__alarm_severity + + def _set_alarm_severity(self, v, load=False): + """ + Setter method for alarm_severity, mapped from YANG variable /components/component/state/temperature/alarm_severity (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_alarm_severity is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_alarm_severity() directly. + + YANG Description: The severity of the current alarm. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}},), is_leaf=True, yang_name="alarm-severity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """alarm_severity must be of a type compatible with identityref""", + 'defined-type': "openconfig-platform:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}},), is_leaf=True, yang_name="alarm-severity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False)""", + }) + + self.__alarm_severity = t + if hasattr(self, '_set'): + self._set() + + def _unset_alarm_severity(self): + self.__alarm_severity = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:UNKNOWN': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MINOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:WARNING': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:MAJOR': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}, 'oc-alarm-types:CRITICAL': {'@module': 'openconfig-alarm-types', '@namespace': 'http://openconfig.net/yang/alarms/types'}},), is_leaf=True, yang_name="alarm-severity", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='identityref', is_config=False) + + instant = __builtin__.property(_get_instant) + avg = __builtin__.property(_get_avg) + min_ = __builtin__.property(_get_min_) + max_ = __builtin__.property(_get_max_) + interval = __builtin__.property(_get_interval) + min_time = __builtin__.property(_get_min_time) + max_time = __builtin__.property(_get_max_time) + alarm_status = __builtin__.property(_get_alarm_status) + alarm_threshold = __builtin__.property(_get_alarm_threshold) + alarm_severity = __builtin__.property(_get_alarm_severity) + + + _pyangbind_elements = OrderedDict([('instant', instant), ('avg', avg), ('min_', min_), ('max_', max_), ('interval', interval), ('min_time', min_time), ('max_time', max_time), ('alarm_status', alarm_status), ('alarm_threshold', alarm_threshold), ('alarm_severity', alarm_severity), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/storage/__init__.py b/hackfest/netconf-oc/openconfig/components/component/storage/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..84f152b6c379edb6eb7c78e7b8e66f36dd47f23a --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/storage/__init__.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class storage(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/storage. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for storage components + """ + _pyangbind_elements = {} + + + +class storage(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/storage. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Data for storage components + """ + _pyangbind_elements = {} + + + diff --git a/hackfest/netconf-oc/openconfig/components/component/subcomponents/__init__.py b/hackfest/netconf-oc/openconfig/components/component/subcomponents/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..5c5d7cdc87ebbb50448438f8725da5b81848b3f7 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/subcomponents/__init__.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import subcomponent +class subcomponents(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/subcomponents. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container for subcomponent references + """ + __slots__ = ('_path_helper', '_extmethods', '__subcomponent',) + + _yang_name = 'subcomponents' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__subcomponent = YANGDynClass(base=YANGListType("name",subcomponent.subcomponent, yang_name="subcomponent", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="subcomponent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'subcomponents'] + + def _get_subcomponent(self): + """ + Getter method for subcomponent, mapped from YANG variable /components/component/subcomponents/subcomponent (list) + + YANG Description: List of subcomponent references + """ + return self.__subcomponent + + def _set_subcomponent(self, v, load=False): + """ + Setter method for subcomponent, mapped from YANG variable /components/component/subcomponents/subcomponent (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_subcomponent is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_subcomponent() directly. + + YANG Description: List of subcomponent references + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",subcomponent.subcomponent, yang_name="subcomponent", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="subcomponent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """subcomponent must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",subcomponent.subcomponent, yang_name="subcomponent", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="subcomponent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True)""", + }) + + self.__subcomponent = t + if hasattr(self, '_set'): + self._set() + + def _unset_subcomponent(self): + self.__subcomponent = YANGDynClass(base=YANGListType("name",subcomponent.subcomponent, yang_name="subcomponent", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="subcomponent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + subcomponent = __builtin__.property(_get_subcomponent, _set_subcomponent) + + + _pyangbind_elements = OrderedDict([('subcomponent', subcomponent), ]) + + +from . import subcomponent +class subcomponents(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/subcomponents. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container for subcomponent references + """ + __slots__ = ('_path_helper', '_extmethods', '__subcomponent',) + + _yang_name = 'subcomponents' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__subcomponent = YANGDynClass(base=YANGListType("name",subcomponent.subcomponent, yang_name="subcomponent", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="subcomponent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'subcomponents'] + + def _get_subcomponent(self): + """ + Getter method for subcomponent, mapped from YANG variable /components/component/subcomponents/subcomponent (list) + + YANG Description: List of subcomponent references + """ + return self.__subcomponent + + def _set_subcomponent(self, v, load=False): + """ + Setter method for subcomponent, mapped from YANG variable /components/component/subcomponents/subcomponent (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_subcomponent is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_subcomponent() directly. + + YANG Description: List of subcomponent references + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",subcomponent.subcomponent, yang_name="subcomponent", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="subcomponent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """subcomponent must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",subcomponent.subcomponent, yang_name="subcomponent", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="subcomponent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True)""", + }) + + self.__subcomponent = t + if hasattr(self, '_set'): + self._set() + + def _unset_subcomponent(self): + self.__subcomponent = YANGDynClass(base=YANGListType("name",subcomponent.subcomponent, yang_name="subcomponent", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="subcomponent", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='list', is_config=True) + + subcomponent = __builtin__.property(_get_subcomponent, _set_subcomponent) + + + _pyangbind_elements = OrderedDict([('subcomponent', subcomponent), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/subcomponents/subcomponent/__init__.py b/hackfest/netconf-oc/openconfig/components/component/subcomponents/subcomponent/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..8f187809f977bd6fa9cc12bc81196dca7d51b9a1 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/subcomponents/subcomponent/__init__.py @@ -0,0 +1,376 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import config +from . import state +class subcomponent(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/subcomponents/subcomponent. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of subcomponent references + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state',) + + _yang_name = 'subcomponent' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'subcomponents', 'subcomponent'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/name (leafref) + + YANG Description: Reference to the name list key + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Reference to the name list key + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/subcomponents/subcomponent/config (container) + + YANG Description: Configuration data for the subcomponent + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/subcomponents/subcomponent/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for the subcomponent + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/subcomponents/subcomponent/state (container) + + YANG Description: Operational state data for the subcomponent + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/subcomponents/subcomponent/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for the subcomponent + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ]) + + +from . import config +from . import state +class subcomponent(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/subcomponents/subcomponent. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: List of subcomponent references + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state',) + + _yang_name = 'subcomponent' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'subcomponents', 'subcomponent'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/name (leafref) + + YANG Description: Reference to the name list key + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Reference to the name list key + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /components/component/subcomponents/subcomponent/config (container) + + YANG Description: Configuration data for the subcomponent + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /components/component/subcomponents/subcomponent/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for the subcomponent + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /components/component/subcomponents/subcomponent/state (container) + + YANG Description: Operational state data for the subcomponent + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /components/component/subcomponents/subcomponent/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for the subcomponent + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/subcomponents/subcomponent/config/__init__.py b/hackfest/netconf-oc/openconfig/components/component/subcomponents/subcomponent/config/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..97f1e2adc9782da13a0285f91ca6a8662578c718 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/subcomponents/subcomponent/config/__init__.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/subcomponents/subcomponent/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for the subcomponent + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'subcomponents', 'subcomponent', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/config/name (leafref) + + YANG Description: Reference to the name of the subcomponent + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/config/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Reference to the name of the subcomponent + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/subcomponents/subcomponent/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for the subcomponent + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'subcomponents', 'subcomponent', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/config/name (leafref) + + YANG Description: Reference to the name of the subcomponent + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/config/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Reference to the name of the subcomponent + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/hackfest/netconf-oc/openconfig/components/component/subcomponents/subcomponent/state/__init__.py b/hackfest/netconf-oc/openconfig/components/component/subcomponents/subcomponent/state/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..fe204b7573784e4b542a53eac6c3ad9fbe15e89f --- /dev/null +++ b/hackfest/netconf-oc/openconfig/components/component/subcomponents/subcomponent/state/__init__.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform - based on the path /components/component/subcomponents/subcomponent/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for the subcomponent + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'subcomponents', 'subcomponent', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/state/name (leafref) + + YANG Description: Reference to the name of the subcomponent + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/state/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Reference to the name of the subcomponent + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + + name = __builtin__.property(_get_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-platform-common - based on the path /components/component/subcomponents/subcomponent/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for the subcomponent + """ + __slots__ = ('_path_helper', '_extmethods', '__name',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/platform' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['components', 'component', 'subcomponents', 'subcomponent', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/state/name (leafref) + + YANG Description: Reference to the name of the subcomponent + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /components/component/subcomponents/subcomponent/state/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: Reference to the name of the subcomponent + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform', defining_module='openconfig-platform', yang_type='leafref', is_config=False) + + name = __builtin__.property(_get_name) + + + _pyangbind_elements = OrderedDict([('name', name), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..af0371e3f1870194ab8abd48a8a57773453e59ac --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/__init__.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import interface +class interfaces(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Top level container for interfaces, including configuration +and state data. + """ + __slots__ = ('_path_helper', '_extmethods', '__interface',) + + _yang_name = 'interfaces' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__interface = YANGDynClass(base=YANGListType("name",interface.interface, yang_name="interface", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="interface", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces'] + + def _get_interface(self): + """ + Getter method for interface, mapped from YANG variable /interfaces/interface (list) + + YANG Description: The list of named interfaces on the device. + """ + return self.__interface + + def _set_interface(self, v, load=False): + """ + Setter method for interface, mapped from YANG variable /interfaces/interface (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_interface is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_interface() directly. + + YANG Description: The list of named interfaces on the device. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("name",interface.interface, yang_name="interface", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="interface", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """interface must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("name",interface.interface, yang_name="interface", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="interface", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='list', is_config=True)""", + }) + + self.__interface = t + if hasattr(self, '_set'): + self._set() + + def _unset_interface(self): + self.__interface = YANGDynClass(base=YANGListType("name",interface.interface, yang_name="interface", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='name', extensions=None), is_container='list', yang_name="interface", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='list', is_config=True) + + interface = __builtin__.property(_get_interface, _set_interface) + + + _pyangbind_elements = OrderedDict([('interface', interface), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7850395040d98f3431c7faa94fbeaedbf55e5b32 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/__init__.py @@ -0,0 +1,327 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import config +from . import state +from . import hold_time +from . import subinterfaces +from . import ethernet +class interface(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The list of named interfaces on the device. + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__config','__state','__hold_time','__subinterfaces','__ethernet',) + + _yang_name = 'interface' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + self.__hold_time = YANGDynClass(base=hold_time.hold_time, is_container='container', yang_name="hold-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + self.__subinterfaces = YANGDynClass(base=subinterfaces.subinterfaces, is_container='container', yang_name="subinterfaces", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + self.__ethernet = YANGDynClass(base=ethernet.ethernet, is_container='container', yang_name="ethernet", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /interfaces/interface/name (leafref) + + YANG Description: References the name of the interface + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /interfaces/interface/name (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: References the name of the interface + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='leafref', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /interfaces/interface/config (container) + + YANG Description: Configurable items at the global, physical interface +level + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /interfaces/interface/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configurable items at the global, physical interface +level + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /interfaces/interface/state (container) + + YANG Description: Operational state data at the global interface level + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /interfaces/interface/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data at the global interface level + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + + def _get_hold_time(self): + """ + Getter method for hold_time, mapped from YANG variable /interfaces/interface/hold_time (container) + + YANG Description: Top-level container for hold-time settings to enable +dampening advertisements of interface transitions. + """ + return self.__hold_time + + def _set_hold_time(self, v, load=False): + """ + Setter method for hold_time, mapped from YANG variable /interfaces/interface/hold_time (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_hold_time is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hold_time() directly. + + YANG Description: Top-level container for hold-time settings to enable +dampening advertisements of interface transitions. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=hold_time.hold_time, is_container='container', yang_name="hold-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hold_time must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=hold_time.hold_time, is_container='container', yang_name="hold-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True)""", + }) + + self.__hold_time = t + if hasattr(self, '_set'): + self._set() + + def _unset_hold_time(self): + self.__hold_time = YANGDynClass(base=hold_time.hold_time, is_container='container', yang_name="hold-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + + def _get_subinterfaces(self): + """ + Getter method for subinterfaces, mapped from YANG variable /interfaces/interface/subinterfaces (container) + + YANG Description: Enclosing container for the list of subinterfaces associated +with a physical interface + """ + return self.__subinterfaces + + def _set_subinterfaces(self, v, load=False): + """ + Setter method for subinterfaces, mapped from YANG variable /interfaces/interface/subinterfaces (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_subinterfaces is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_subinterfaces() directly. + + YANG Description: Enclosing container for the list of subinterfaces associated +with a physical interface + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=subinterfaces.subinterfaces, is_container='container', yang_name="subinterfaces", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """subinterfaces must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=subinterfaces.subinterfaces, is_container='container', yang_name="subinterfaces", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True)""", + }) + + self.__subinterfaces = t + if hasattr(self, '_set'): + self._set() + + def _unset_subinterfaces(self): + self.__subinterfaces = YANGDynClass(base=subinterfaces.subinterfaces, is_container='container', yang_name="subinterfaces", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + + def _get_ethernet(self): + """ + Getter method for ethernet, mapped from YANG variable /interfaces/interface/ethernet (container) + + YANG Description: Top-level container for ethernet configuration +and state + """ + return self.__ethernet + + def _set_ethernet(self, v, load=False): + """ + Setter method for ethernet, mapped from YANG variable /interfaces/interface/ethernet (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_ethernet is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ethernet() directly. + + YANG Description: Top-level container for ethernet configuration +and state + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=ethernet.ethernet, is_container='container', yang_name="ethernet", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ethernet must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=ethernet.ethernet, is_container='container', yang_name="ethernet", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True)""", + }) + + self.__ethernet = t + if hasattr(self, '_set'): + self._set() + + def _unset_ethernet(self): + self.__ethernet = YANGDynClass(base=ethernet.ethernet, is_container='container', yang_name="ethernet", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + hold_time = __builtin__.property(_get_hold_time, _set_hold_time) + subinterfaces = __builtin__.property(_get_subinterfaces, _set_subinterfaces) + ethernet = __builtin__.property(_get_ethernet, _set_ethernet) + + + _pyangbind_elements = OrderedDict([('name', name), ('config', config), ('state', state), ('hold_time', hold_time), ('subinterfaces', subinterfaces), ('ethernet', ethernet), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/config/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/config/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..84dbcfaec66e765d244886bc83622aee2e31c7f4 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/config/__init__.py @@ -0,0 +1,476 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configurable items at the global, physical interface +level + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__type','__mtu','__loopback_mode','__description','__enabled',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True) + self.__type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}},), is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='identityref', is_config=True) + self.__mtu = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="mtu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint16', is_config=True) + self.__loopback_mode = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="loopback-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True) + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True) + self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'config'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /interfaces/interface/config/name (string) + + YANG Description: The name of the interface. + +A device MAY restrict the allowed values for this leaf, +possibly depending on the type of the interface. +For system-controlled interfaces, this leaf is the +device-specific name of the interface. The 'config false' +list interfaces/interface[name]/state contains the currently +existing interfaces on the device. + +If a client tries to create configuration for a +system-controlled interface that is not present in the +corresponding state list, the server MAY reject +the request if the implementation does not support +pre-provisioning of interfaces or if the name refers to +an interface that can never exist in the system. A +NETCONF server MUST reply with an rpc-error with the +error-tag 'invalid-value' in this case. + +The IETF model in RFC 7223 provides YANG features for the +following (i.e., pre-provisioning and arbitrary-names), +however they are omitted here: + + If the device supports pre-provisioning of interface + configuration, the 'pre-provisioning' feature is + advertised. + + If the device allows arbitrarily named user-controlled + interfaces, the 'arbitrary-names' feature is advertised. + +When a configured user-controlled interface is created by +the system, it is instantiated with the same name in the +/interfaces/interface[name]/state list. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /interfaces/interface/config/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: The name of the interface. + +A device MAY restrict the allowed values for this leaf, +possibly depending on the type of the interface. +For system-controlled interfaces, this leaf is the +device-specific name of the interface. The 'config false' +list interfaces/interface[name]/state contains the currently +existing interfaces on the device. + +If a client tries to create configuration for a +system-controlled interface that is not present in the +corresponding state list, the server MAY reject +the request if the implementation does not support +pre-provisioning of interfaces or if the name refers to +an interface that can never exist in the system. A +NETCONF server MUST reply with an rpc-error with the +error-tag 'invalid-value' in this case. + +The IETF model in RFC 7223 provides YANG features for the +following (i.e., pre-provisioning and arbitrary-names), +however they are omitted here: + + If the device supports pre-provisioning of interface + configuration, the 'pre-provisioning' feature is + advertised. + + If the device allows arbitrarily named user-controlled + interfaces, the 'arbitrary-names' feature is advertised. + +When a configured user-controlled interface is created by +the system, it is instantiated with the same name in the +/interfaces/interface[name]/state list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True) + + + def _get_type(self): + """ + Getter method for type, mapped from YANG variable /interfaces/interface/config/type (identityref) + + YANG Description: The type of the interface. + +When an interface entry is created, a server MAY +initialize the type leaf with a valid value, e.g., if it +is possible to derive the type from the name of the +interface. + +If a client tries to set the type of an interface to a +value that can never be used by the system, e.g., if the +type is not supported or if the type does not match the +name of the interface, the server MUST reject the request. +A NETCONF server MUST reply with an rpc-error with the +error-tag 'invalid-value' in this case. + """ + return self.__type + + def _set_type(self, v, load=False): + """ + Setter method for type, mapped from YANG variable /interfaces/interface/config/type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_type() directly. + + YANG Description: The type of the interface. + +When an interface entry is created, a server MAY +initialize the type leaf with a valid value, e.g., if it +is possible to derive the type from the name of the +interface. + +If a client tries to set the type of an interface to a +value that can never be used by the system, e.g., if the +type is not supported or if the type does not match the +name of the interface, the server MUST reject the request. +A NETCONF server MUST reply with an rpc-error with the +error-tag 'invalid-value' in this case. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}},), is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """type must be of a type compatible with identityref""", + 'defined-type': "openconfig-interfaces:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}},), is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='identityref', is_config=True)""", + }) + + self.__type = t + if hasattr(self, '_set'): + self._set() + + def _unset_type(self): + self.__type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}},), is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='identityref', is_config=True) + + + def _get_mtu(self): + """ + Getter method for mtu, mapped from YANG variable /interfaces/interface/config/mtu (uint16) + + YANG Description: Set the max transmission unit size in octets +for the physical interface. If this is not set, the mtu is +set to the operational default -- e.g., 1514 bytes on an +Ethernet interface. + """ + return self.__mtu + + def _set_mtu(self, v, load=False): + """ + Setter method for mtu, mapped from YANG variable /interfaces/interface/config/mtu (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_mtu is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_mtu() directly. + + YANG Description: Set the max transmission unit size in octets +for the physical interface. If this is not set, the mtu is +set to the operational default -- e.g., 1514 bytes on an +Ethernet interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="mtu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint16', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """mtu must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="mtu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint16', is_config=True)""", + }) + + self.__mtu = t + if hasattr(self, '_set'): + self._set() + + def _unset_mtu(self): + self.__mtu = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="mtu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint16', is_config=True) + + + def _get_loopback_mode(self): + """ + Getter method for loopback_mode, mapped from YANG variable /interfaces/interface/config/loopback_mode (boolean) + + YANG Description: When set to true, the interface is logically looped back, +such that packets that are forwarded via the interface +are received on the same interface. + """ + return self.__loopback_mode + + def _set_loopback_mode(self, v, load=False): + """ + Setter method for loopback_mode, mapped from YANG variable /interfaces/interface/config/loopback_mode (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_loopback_mode is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_loopback_mode() directly. + + YANG Description: When set to true, the interface is logically looped back, +such that packets that are forwarded via the interface +are received on the same interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="loopback-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """loopback_mode must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="loopback-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True)""", + }) + + self.__loopback_mode = t + if hasattr(self, '_set'): + self._set() + + def _unset_loopback_mode(self): + self.__loopback_mode = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="loopback-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True) + + + def _get_description(self): + """ + Getter method for description, mapped from YANG variable /interfaces/interface/config/description (string) + + YANG Description: A textual description of the interface. + +A server implementation MAY map this leaf to the ifAlias +MIB object. Such an implementation needs to use some +mechanism to handle the differences in size and characters +allowed between this leaf and ifAlias. The definition of +such a mechanism is outside the scope of this document. + +Since ifAlias is defined to be stored in non-volatile +storage, the MIB implementation MUST map ifAlias to the +value of 'description' in the persistently stored +datastore. + +Specifically, if the device supports ':startup', when +ifAlias is read the device MUST return the value of +'description' in the 'startup' datastore, and when it is +written, it MUST be written to the 'running' and 'startup' +datastores. Note that it is up to the implementation to + +decide whether to modify this single leaf in 'startup' or +perform an implicit copy-config from 'running' to +'startup'. + +If the device does not support ':startup', ifAlias MUST +be mapped to the 'description' leaf in the 'running' +datastore. + """ + return self.__description + + def _set_description(self, v, load=False): + """ + Setter method for description, mapped from YANG variable /interfaces/interface/config/description (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_description is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_description() directly. + + YANG Description: A textual description of the interface. + +A server implementation MAY map this leaf to the ifAlias +MIB object. Such an implementation needs to use some +mechanism to handle the differences in size and characters +allowed between this leaf and ifAlias. The definition of +such a mechanism is outside the scope of this document. + +Since ifAlias is defined to be stored in non-volatile +storage, the MIB implementation MUST map ifAlias to the +value of 'description' in the persistently stored +datastore. + +Specifically, if the device supports ':startup', when +ifAlias is read the device MUST return the value of +'description' in the 'startup' datastore, and when it is +written, it MUST be written to the 'running' and 'startup' +datastores. Note that it is up to the implementation to + +decide whether to modify this single leaf in 'startup' or +perform an implicit copy-config from 'running' to +'startup'. + +If the device does not support ':startup', ifAlias MUST +be mapped to the 'description' leaf in the 'running' +datastore. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """description must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True)""", + }) + + self.__description = t + if hasattr(self, '_set'): + self._set() + + def _unset_description(self): + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True) + + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /interfaces/interface/config/enabled (boolean) + + YANG Description: This leaf contains the configured, desired state of the +interface. + +Systems that implement the IF-MIB use the value of this +leaf in the 'running' datastore to set +IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry +has been initialized, as described in RFC 2863. + +Changes in this leaf in the 'running' datastore are +reflected in ifAdminStatus, but if ifAdminStatus is +changed over SNMP, this leaf is not affected. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /interfaces/interface/config/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: This leaf contains the configured, desired state of the +interface. + +Systems that implement the IF-MIB use the value of this +leaf in the 'running' datastore to set +IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry +has been initialized, as described in RFC 2863. + +Changes in this leaf in the 'running' datastore are +reflected in ifAdminStatus, but if ifAdminStatus is +changed over SNMP, this leaf is not affected. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True) + + name = __builtin__.property(_get_name, _set_name) + type = __builtin__.property(_get_type, _set_type) + mtu = __builtin__.property(_get_mtu, _set_mtu) + loopback_mode = __builtin__.property(_get_loopback_mode, _set_loopback_mode) + description = __builtin__.property(_get_description, _set_description) + enabled = __builtin__.property(_get_enabled, _set_enabled) + + + _pyangbind_elements = OrderedDict([('name', name), ('type', type), ('mtu', mtu), ('loopback_mode', loopback_mode), ('description', description), ('enabled', enabled), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..0d56776a7581d6f16a0059ec7f3909e4aa80c41b --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/__init__.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import config +from . import state +class ethernet(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/ethernet. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Top-level container for ethernet configuration +and state + """ + __slots__ = ('_path_helper', '_extmethods', '__config','__state',) + + _yang_name = 'ethernet' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'ethernet'] + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /interfaces/interface/ethernet/config (container) + + YANG Description: Configuration data for ethernet interfaces + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /interfaces/interface/ethernet/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for ethernet interfaces + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /interfaces/interface/ethernet/state (container) + + YANG Description: State variables for Ethernet interfaces + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /interfaces/interface/ethernet/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: State variables for Ethernet interfaces + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=True) + + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('config', config), ('state', state), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/config/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/config/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d07a615a7896c294e004680cc920859df3f80b15 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/config/__init__.py @@ -0,0 +1,416 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/ethernet/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for ethernet interfaces + """ + __slots__ = ('_path_helper', '_extmethods', '__mac_address','__auto_negotiate','__standalone_link_training','__duplex_mode','__port_speed','__enable_flow_control','__fec_mode',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__mac_address = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=True) + self.__auto_negotiate = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="auto-negotiate", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True) + self.__standalone_link_training = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="standalone-link-training", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True) + self.__duplex_mode = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=True) + self.__port_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=True) + self.__enable_flow_control = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enable-flow-control", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True) + self.__fec_mode = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="fec-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'ethernet', 'config'] + + def _get_mac_address(self): + """ + Getter method for mac_address, mapped from YANG variable /interfaces/interface/ethernet/config/mac_address (oc-yang:mac-address) + + YANG Description: Assigns a MAC address to the Ethernet interface. If not +specified, the corresponding operational state leaf is +expected to show the system-assigned MAC address. + """ + return self.__mac_address + + def _set_mac_address(self, v, load=False): + """ + Setter method for mac_address, mapped from YANG variable /interfaces/interface/ethernet/config/mac_address (oc-yang:mac-address) + If this variable is read-only (config: false) in the + source YANG file, then _set_mac_address is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_mac_address() directly. + + YANG Description: Assigns a MAC address to the Ethernet interface. If not +specified, the corresponding operational state leaf is +expected to show the system-assigned MAC address. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """mac_address must be of a type compatible with oc-yang:mac-address""", + 'defined-type': "oc-yang:mac-address", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=True)""", + }) + + self.__mac_address = t + if hasattr(self, '_set'): + self._set() + + def _unset_mac_address(self): + self.__mac_address = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=True) + + + def _get_auto_negotiate(self): + """ + Getter method for auto_negotiate, mapped from YANG variable /interfaces/interface/ethernet/config/auto_negotiate (boolean) + + YANG Description: Set to TRUE to request the interface to auto-negotiate +transmission parameters with its peer interface. When +set to FALSE, the transmission parameters are specified +manually. + """ + return self.__auto_negotiate + + def _set_auto_negotiate(self, v, load=False): + """ + Setter method for auto_negotiate, mapped from YANG variable /interfaces/interface/ethernet/config/auto_negotiate (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_auto_negotiate is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_auto_negotiate() directly. + + YANG Description: Set to TRUE to request the interface to auto-negotiate +transmission parameters with its peer interface. When +set to FALSE, the transmission parameters are specified +manually. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="auto-negotiate", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """auto_negotiate must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="auto-negotiate", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True)""", + }) + + self.__auto_negotiate = t + if hasattr(self, '_set'): + self._set() + + def _unset_auto_negotiate(self): + self.__auto_negotiate = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="auto-negotiate", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True) + + + def _get_standalone_link_training(self): + """ + Getter method for standalone_link_training, mapped from YANG variable /interfaces/interface/ethernet/config/standalone_link_training (boolean) + + YANG Description: Link training is automatic tuning of the SerDes transmit and +receive parameters to ensure an optimal connection over copper +links. It is normally run as part of the auto negotiation +sequence as specified in IEEE 802.3 Clause 73. + +Standalone link training is used when full auto negotiation is +not desired on an Ethernet link but link training is needed. +It is configured by setting the standalone-link-training leaf +to TRUE and augo-negotiate leaf to FALSE. + +Note: If auto-negotiate is true, then the value of standalone +link training leaf will be ignored. + """ + return self.__standalone_link_training + + def _set_standalone_link_training(self, v, load=False): + """ + Setter method for standalone_link_training, mapped from YANG variable /interfaces/interface/ethernet/config/standalone_link_training (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_standalone_link_training is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_standalone_link_training() directly. + + YANG Description: Link training is automatic tuning of the SerDes transmit and +receive parameters to ensure an optimal connection over copper +links. It is normally run as part of the auto negotiation +sequence as specified in IEEE 802.3 Clause 73. + +Standalone link training is used when full auto negotiation is +not desired on an Ethernet link but link training is needed. +It is configured by setting the standalone-link-training leaf +to TRUE and augo-negotiate leaf to FALSE. + +Note: If auto-negotiate is true, then the value of standalone +link training leaf will be ignored. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="standalone-link-training", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """standalone_link_training must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="standalone-link-training", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True)""", + }) + + self.__standalone_link_training = t + if hasattr(self, '_set'): + self._set() + + def _unset_standalone_link_training(self): + self.__standalone_link_training = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="standalone-link-training", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True) + + + def _get_duplex_mode(self): + """ + Getter method for duplex_mode, mapped from YANG variable /interfaces/interface/ethernet/config/duplex_mode (enumeration) + + YANG Description: When auto-negotiate is TRUE, this optionally sets the +duplex mode that will be advertised to the peer. If +unspecified, the interface should negotiate the duplex mode +directly (typically full-duplex). When auto-negotiate is +FALSE, this sets the duplex mode on the interface directly. + """ + return self.__duplex_mode + + def _set_duplex_mode(self, v, load=False): + """ + Setter method for duplex_mode, mapped from YANG variable /interfaces/interface/ethernet/config/duplex_mode (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_duplex_mode is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_duplex_mode() directly. + + YANG Description: When auto-negotiate is TRUE, this optionally sets the +duplex mode that will be advertised to the peer. If +unspecified, the interface should negotiate the duplex mode +directly (typically full-duplex). When auto-negotiate is +FALSE, this sets the duplex mode on the interface directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """duplex_mode must be of a type compatible with enumeration""", + 'defined-type': "openconfig-if-ethernet:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=True)""", + }) + + self.__duplex_mode = t + if hasattr(self, '_set'): + self._set() + + def _unset_duplex_mode(self): + self.__duplex_mode = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=True) + + + def _get_port_speed(self): + """ + Getter method for port_speed, mapped from YANG variable /interfaces/interface/ethernet/config/port_speed (identityref) + + YANG Description: When auto-negotiate is TRUE, this optionally sets the +port-speed mode that will be advertised to the peer for +negotiation. If unspecified, it is expected that the +interface will select the highest speed available based on +negotiation. When auto-negotiate is set to FALSE, sets the +link speed to a fixed value -- supported values are defined +by ETHERNET_SPEED identities + """ + return self.__port_speed + + def _set_port_speed(self, v, load=False): + """ + Setter method for port_speed, mapped from YANG variable /interfaces/interface/ethernet/config/port_speed (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_port_speed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port_speed() directly. + + YANG Description: When auto-negotiate is TRUE, this optionally sets the +port-speed mode that will be advertised to the peer for +negotiation. If unspecified, it is expected that the +interface will select the highest speed available based on +negotiation. When auto-negotiate is set to FALSE, sets the +link speed to a fixed value -- supported values are defined +by ETHERNET_SPEED identities + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port_speed must be of a type compatible with identityref""", + 'defined-type': "openconfig-if-ethernet:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=True)""", + }) + + self.__port_speed = t + if hasattr(self, '_set'): + self._set() + + def _unset_port_speed(self): + self.__port_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=True) + + + def _get_enable_flow_control(self): + """ + Getter method for enable_flow_control, mapped from YANG variable /interfaces/interface/ethernet/config/enable_flow_control (boolean) + + YANG Description: Enable or disable flow control for this interface. +Ethernet flow control is a mechanism by which a receiver +may send PAUSE frames to a sender to stop transmission for +a specified time. + +This setting should override auto-negotiated flow control +settings. If left unspecified, and auto-negotiate is TRUE, +flow control mode is negotiated with the peer interface. + """ + return self.__enable_flow_control + + def _set_enable_flow_control(self, v, load=False): + """ + Setter method for enable_flow_control, mapped from YANG variable /interfaces/interface/ethernet/config/enable_flow_control (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enable_flow_control is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enable_flow_control() directly. + + YANG Description: Enable or disable flow control for this interface. +Ethernet flow control is a mechanism by which a receiver +may send PAUSE frames to a sender to stop transmission for +a specified time. + +This setting should override auto-negotiated flow control +settings. If left unspecified, and auto-negotiate is TRUE, +flow control mode is negotiated with the peer interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enable-flow-control", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enable_flow_control must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enable-flow-control", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True)""", + }) + + self.__enable_flow_control = t + if hasattr(self, '_set'): + self._set() + + def _unset_enable_flow_control(self): + self.__enable_flow_control = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enable-flow-control", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=True) + + + def _get_fec_mode(self): + """ + Getter method for fec_mode, mapped from YANG variable /interfaces/interface/ethernet/config/fec_mode (identityref) + + YANG Description: The FEC mode applied to the physical channels associated with +the interface. + """ + return self.__fec_mode + + def _set_fec_mode(self, v, load=False): + """ + Setter method for fec_mode, mapped from YANG variable /interfaces/interface/ethernet/config/fec_mode (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_fec_mode is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_fec_mode() directly. + + YANG Description: The FEC mode applied to the physical channels associated with +the interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="fec-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """fec_mode must be of a type compatible with identityref""", + 'defined-type': "openconfig-if-ethernet:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="fec-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=True)""", + }) + + self.__fec_mode = t + if hasattr(self, '_set'): + self._set() + + def _unset_fec_mode(self): + self.__fec_mode = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="fec-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=True) + + mac_address = __builtin__.property(_get_mac_address, _set_mac_address) + auto_negotiate = __builtin__.property(_get_auto_negotiate, _set_auto_negotiate) + standalone_link_training = __builtin__.property(_get_standalone_link_training, _set_standalone_link_training) + duplex_mode = __builtin__.property(_get_duplex_mode, _set_duplex_mode) + port_speed = __builtin__.property(_get_port_speed, _set_port_speed) + enable_flow_control = __builtin__.property(_get_enable_flow_control, _set_enable_flow_control) + fec_mode = __builtin__.property(_get_fec_mode, _set_fec_mode) + + + _pyangbind_elements = OrderedDict([('mac_address', mac_address), ('auto_negotiate', auto_negotiate), ('standalone_link_training', standalone_link_training), ('duplex_mode', duplex_mode), ('port_speed', port_speed), ('enable_flow_control', enable_flow_control), ('fec_mode', fec_mode), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/state/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/state/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..07b61c4c08146ce5641faf9efa6188fe84d7d55c --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/state/__init__.py @@ -0,0 +1,583 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import counters +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/ethernet/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: State variables for Ethernet interfaces + """ + __slots__ = ('_path_helper', '_extmethods', '__mac_address','__auto_negotiate','__standalone_link_training','__duplex_mode','__port_speed','__enable_flow_control','__fec_mode','__hw_mac_address','__negotiated_duplex_mode','__negotiated_port_speed','__counters',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__mac_address = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=False) + self.__auto_negotiate = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="auto-negotiate", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False) + self.__standalone_link_training = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="standalone-link-training", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False) + self.__duplex_mode = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=False) + self.__port_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False) + self.__enable_flow_control = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enable-flow-control", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False) + self.__fec_mode = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="fec-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False) + self.__hw_mac_address = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="hw-mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=False) + self.__negotiated_duplex_mode = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="negotiated-duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=False) + self.__negotiated_port_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="negotiated-port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False) + self.__counters = YANGDynClass(base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'ethernet', 'state'] + + def _get_mac_address(self): + """ + Getter method for mac_address, mapped from YANG variable /interfaces/interface/ethernet/state/mac_address (oc-yang:mac-address) + + YANG Description: Assigns a MAC address to the Ethernet interface. If not +specified, the corresponding operational state leaf is +expected to show the system-assigned MAC address. + """ + return self.__mac_address + + def _set_mac_address(self, v, load=False): + """ + Setter method for mac_address, mapped from YANG variable /interfaces/interface/ethernet/state/mac_address (oc-yang:mac-address) + If this variable is read-only (config: false) in the + source YANG file, then _set_mac_address is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_mac_address() directly. + + YANG Description: Assigns a MAC address to the Ethernet interface. If not +specified, the corresponding operational state leaf is +expected to show the system-assigned MAC address. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """mac_address must be of a type compatible with oc-yang:mac-address""", + 'defined-type': "oc-yang:mac-address", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=False)""", + }) + + self.__mac_address = t + if hasattr(self, '_set'): + self._set() + + def _unset_mac_address(self): + self.__mac_address = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=False) + + + def _get_auto_negotiate(self): + """ + Getter method for auto_negotiate, mapped from YANG variable /interfaces/interface/ethernet/state/auto_negotiate (boolean) + + YANG Description: Set to TRUE to request the interface to auto-negotiate +transmission parameters with its peer interface. When +set to FALSE, the transmission parameters are specified +manually. + """ + return self.__auto_negotiate + + def _set_auto_negotiate(self, v, load=False): + """ + Setter method for auto_negotiate, mapped from YANG variable /interfaces/interface/ethernet/state/auto_negotiate (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_auto_negotiate is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_auto_negotiate() directly. + + YANG Description: Set to TRUE to request the interface to auto-negotiate +transmission parameters with its peer interface. When +set to FALSE, the transmission parameters are specified +manually. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="auto-negotiate", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """auto_negotiate must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="auto-negotiate", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False)""", + }) + + self.__auto_negotiate = t + if hasattr(self, '_set'): + self._set() + + def _unset_auto_negotiate(self): + self.__auto_negotiate = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="auto-negotiate", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False) + + + def _get_standalone_link_training(self): + """ + Getter method for standalone_link_training, mapped from YANG variable /interfaces/interface/ethernet/state/standalone_link_training (boolean) + + YANG Description: Link training is automatic tuning of the SerDes transmit and +receive parameters to ensure an optimal connection over copper +links. It is normally run as part of the auto negotiation +sequence as specified in IEEE 802.3 Clause 73. + +Standalone link training is used when full auto negotiation is +not desired on an Ethernet link but link training is needed. +It is configured by setting the standalone-link-training leaf +to TRUE and augo-negotiate leaf to FALSE. + +Note: If auto-negotiate is true, then the value of standalone +link training leaf will be ignored. + """ + return self.__standalone_link_training + + def _set_standalone_link_training(self, v, load=False): + """ + Setter method for standalone_link_training, mapped from YANG variable /interfaces/interface/ethernet/state/standalone_link_training (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_standalone_link_training is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_standalone_link_training() directly. + + YANG Description: Link training is automatic tuning of the SerDes transmit and +receive parameters to ensure an optimal connection over copper +links. It is normally run as part of the auto negotiation +sequence as specified in IEEE 802.3 Clause 73. + +Standalone link training is used when full auto negotiation is +not desired on an Ethernet link but link training is needed. +It is configured by setting the standalone-link-training leaf +to TRUE and augo-negotiate leaf to FALSE. + +Note: If auto-negotiate is true, then the value of standalone +link training leaf will be ignored. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="standalone-link-training", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """standalone_link_training must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="standalone-link-training", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False)""", + }) + + self.__standalone_link_training = t + if hasattr(self, '_set'): + self._set() + + def _unset_standalone_link_training(self): + self.__standalone_link_training = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="standalone-link-training", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False) + + + def _get_duplex_mode(self): + """ + Getter method for duplex_mode, mapped from YANG variable /interfaces/interface/ethernet/state/duplex_mode (enumeration) + + YANG Description: When auto-negotiate is TRUE, this optionally sets the +duplex mode that will be advertised to the peer. If +unspecified, the interface should negotiate the duplex mode +directly (typically full-duplex). When auto-negotiate is +FALSE, this sets the duplex mode on the interface directly. + """ + return self.__duplex_mode + + def _set_duplex_mode(self, v, load=False): + """ + Setter method for duplex_mode, mapped from YANG variable /interfaces/interface/ethernet/state/duplex_mode (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_duplex_mode is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_duplex_mode() directly. + + YANG Description: When auto-negotiate is TRUE, this optionally sets the +duplex mode that will be advertised to the peer. If +unspecified, the interface should negotiate the duplex mode +directly (typically full-duplex). When auto-negotiate is +FALSE, this sets the duplex mode on the interface directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """duplex_mode must be of a type compatible with enumeration""", + 'defined-type': "openconfig-if-ethernet:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=False)""", + }) + + self.__duplex_mode = t + if hasattr(self, '_set'): + self._set() + + def _unset_duplex_mode(self): + self.__duplex_mode = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=False) + + + def _get_port_speed(self): + """ + Getter method for port_speed, mapped from YANG variable /interfaces/interface/ethernet/state/port_speed (identityref) + + YANG Description: When auto-negotiate is TRUE, this optionally sets the +port-speed mode that will be advertised to the peer for +negotiation. If unspecified, it is expected that the +interface will select the highest speed available based on +negotiation. When auto-negotiate is set to FALSE, sets the +link speed to a fixed value -- supported values are defined +by ETHERNET_SPEED identities + """ + return self.__port_speed + + def _set_port_speed(self, v, load=False): + """ + Setter method for port_speed, mapped from YANG variable /interfaces/interface/ethernet/state/port_speed (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_port_speed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port_speed() directly. + + YANG Description: When auto-negotiate is TRUE, this optionally sets the +port-speed mode that will be advertised to the peer for +negotiation. If unspecified, it is expected that the +interface will select the highest speed available based on +negotiation. When auto-negotiate is set to FALSE, sets the +link speed to a fixed value -- supported values are defined +by ETHERNET_SPEED identities + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port_speed must be of a type compatible with identityref""", + 'defined-type': "openconfig-if-ethernet:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False)""", + }) + + self.__port_speed = t + if hasattr(self, '_set'): + self._set() + + def _unset_port_speed(self): + self.__port_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False) + + + def _get_enable_flow_control(self): + """ + Getter method for enable_flow_control, mapped from YANG variable /interfaces/interface/ethernet/state/enable_flow_control (boolean) + + YANG Description: Enable or disable flow control for this interface. +Ethernet flow control is a mechanism by which a receiver +may send PAUSE frames to a sender to stop transmission for +a specified time. + +This setting should override auto-negotiated flow control +settings. If left unspecified, and auto-negotiate is TRUE, +flow control mode is negotiated with the peer interface. + """ + return self.__enable_flow_control + + def _set_enable_flow_control(self, v, load=False): + """ + Setter method for enable_flow_control, mapped from YANG variable /interfaces/interface/ethernet/state/enable_flow_control (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enable_flow_control is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enable_flow_control() directly. + + YANG Description: Enable or disable flow control for this interface. +Ethernet flow control is a mechanism by which a receiver +may send PAUSE frames to a sender to stop transmission for +a specified time. + +This setting should override auto-negotiated flow control +settings. If left unspecified, and auto-negotiate is TRUE, +flow control mode is negotiated with the peer interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enable-flow-control", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enable_flow_control must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enable-flow-control", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False)""", + }) + + self.__enable_flow_control = t + if hasattr(self, '_set'): + self._set() + + def _unset_enable_flow_control(self): + self.__enable_flow_control = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enable-flow-control", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='boolean', is_config=False) + + + def _get_fec_mode(self): + """ + Getter method for fec_mode, mapped from YANG variable /interfaces/interface/ethernet/state/fec_mode (identityref) + + YANG Description: The FEC mode applied to the physical channels associated with +the interface. + """ + return self.__fec_mode + + def _set_fec_mode(self, v, load=False): + """ + Setter method for fec_mode, mapped from YANG variable /interfaces/interface/ethernet/state/fec_mode (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_fec_mode is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_fec_mode() directly. + + YANG Description: The FEC mode applied to the physical channels associated with +the interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="fec-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """fec_mode must be of a type compatible with identityref""", + 'defined-type': "openconfig-if-ethernet:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="fec-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False)""", + }) + + self.__fec_mode = t + if hasattr(self, '_set'): + self._set() + + def _unset_fec_mode(self): + self.__fec_mode = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_FC': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS528': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_RS544_2X_INTERLEAVE': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:FEC_DISABLED': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="fec-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False) + + + def _get_hw_mac_address(self): + """ + Getter method for hw_mac_address, mapped from YANG variable /interfaces/interface/ethernet/state/hw_mac_address (oc-yang:mac-address) + + YANG Description: Represents the 'burned-in', or system-assigned, MAC +address for the Ethernet interface. + """ + return self.__hw_mac_address + + def _set_hw_mac_address(self, v, load=False): + """ + Setter method for hw_mac_address, mapped from YANG variable /interfaces/interface/ethernet/state/hw_mac_address (oc-yang:mac-address) + If this variable is read-only (config: false) in the + source YANG file, then _set_hw_mac_address is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hw_mac_address() directly. + + YANG Description: Represents the 'burned-in', or system-assigned, MAC +address for the Ethernet interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="hw-mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hw_mac_address must be of a type compatible with oc-yang:mac-address""", + 'defined-type': "oc-yang:mac-address", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="hw-mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=False)""", + }) + + self.__hw_mac_address = t + if hasattr(self, '_set'): + self._set() + + def _unset_hw_mac_address(self): + self.__hw_mac_address = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_dict={'pattern': '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'}), is_leaf=True, yang_name="hw-mac-address", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:mac-address', is_config=False) + + + def _get_negotiated_duplex_mode(self): + """ + Getter method for negotiated_duplex_mode, mapped from YANG variable /interfaces/interface/ethernet/state/negotiated_duplex_mode (enumeration) + + YANG Description: When auto-negotiate is set to TRUE, and the interface has +completed auto-negotiation with the remote peer, this value +shows the duplex mode that has been negotiated. + """ + return self.__negotiated_duplex_mode + + def _set_negotiated_duplex_mode(self, v, load=False): + """ + Setter method for negotiated_duplex_mode, mapped from YANG variable /interfaces/interface/ethernet/state/negotiated_duplex_mode (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_negotiated_duplex_mode is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_negotiated_duplex_mode() directly. + + YANG Description: When auto-negotiate is set to TRUE, and the interface has +completed auto-negotiation with the remote peer, this value +shows the duplex mode that has been negotiated. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="negotiated-duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """negotiated_duplex_mode must be of a type compatible with enumeration""", + 'defined-type': "openconfig-if-ethernet:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="negotiated-duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=False)""", + }) + + self.__negotiated_duplex_mode = t + if hasattr(self, '_set'): + self._set() + + def _unset_negotiated_duplex_mode(self): + self.__negotiated_duplex_mode = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'FULL': {}, 'HALF': {}},), is_leaf=True, yang_name="negotiated-duplex-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='enumeration', is_config=False) + + + def _get_negotiated_port_speed(self): + """ + Getter method for negotiated_port_speed, mapped from YANG variable /interfaces/interface/ethernet/state/negotiated_port_speed (identityref) + + YANG Description: When auto-negotiate is set to TRUE, and the interface has +completed auto-negotiation with the remote peer, this value +shows the interface speed that has been negotiated. + """ + return self.__negotiated_port_speed + + def _set_negotiated_port_speed(self, v, load=False): + """ + Setter method for negotiated_port_speed, mapped from YANG variable /interfaces/interface/ethernet/state/negotiated_port_speed (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_negotiated_port_speed is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_negotiated_port_speed() directly. + + YANG Description: When auto-negotiate is set to TRUE, and the interface has +completed auto-negotiation with the remote peer, this value +shows the interface speed that has been negotiated. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="negotiated-port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """negotiated_port_speed must be of a type compatible with identityref""", + 'defined-type': "openconfig-if-ethernet:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="negotiated-port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False)""", + }) + + self.__negotiated_port_speed = t + if hasattr(self, '_set'): + self._set() + + def _unset_negotiated_port_speed(self): + self.__negotiated_port_speed = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_1GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_2500MB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_5GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_10GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_25GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_40GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_50GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_100GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_200GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_400GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_600GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_800GB': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}, 'oc-eth:SPEED_UNKNOWN': {'@module': 'openconfig-if-ethernet', '@namespace': 'http://openconfig.net/yang/interfaces/ethernet'}},), is_leaf=True, yang_name="negotiated-port-speed", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='identityref', is_config=False) + + + def _get_counters(self): + """ + Getter method for counters, mapped from YANG variable /interfaces/interface/ethernet/state/counters (container) + + YANG Description: Ethernet interface counters + """ + return self.__counters + + def _set_counters(self, v, load=False): + """ + Setter method for counters, mapped from YANG variable /interfaces/interface/ethernet/state/counters (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_counters is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_counters() directly. + + YANG Description: Ethernet interface counters + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """counters must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=False)""", + }) + + self.__counters = t + if hasattr(self, '_set'): + self._set() + + def _unset_counters(self): + self.__counters = YANGDynClass(base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='container', is_config=False) + + mac_address = __builtin__.property(_get_mac_address) + auto_negotiate = __builtin__.property(_get_auto_negotiate) + standalone_link_training = __builtin__.property(_get_standalone_link_training) + duplex_mode = __builtin__.property(_get_duplex_mode) + port_speed = __builtin__.property(_get_port_speed) + enable_flow_control = __builtin__.property(_get_enable_flow_control) + fec_mode = __builtin__.property(_get_fec_mode) + hw_mac_address = __builtin__.property(_get_hw_mac_address) + negotiated_duplex_mode = __builtin__.property(_get_negotiated_duplex_mode) + negotiated_port_speed = __builtin__.property(_get_negotiated_port_speed) + counters = __builtin__.property(_get_counters) + + + _pyangbind_elements = OrderedDict([('mac_address', mac_address), ('auto_negotiate', auto_negotiate), ('standalone_link_training', standalone_link_training), ('duplex_mode', duplex_mode), ('port_speed', port_speed), ('enable_flow_control', enable_flow_control), ('fec_mode', fec_mode), ('hw_mac_address', hw_mac_address), ('negotiated_duplex_mode', negotiated_duplex_mode), ('negotiated_port_speed', negotiated_port_speed), ('counters', counters), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/state/counters/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/state/counters/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7387174585ced25cd6461839f76702d29e434ceb --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/ethernet/state/counters/__init__.py @@ -0,0 +1,951 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class counters(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/ethernet/state/counters. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Ethernet interface counters + """ + __slots__ = ('_path_helper', '_extmethods', '__in_mac_control_frames','__in_mac_pause_frames','__in_oversize_frames','__in_undersize_frames','__in_jabber_frames','__in_fragment_frames','__in_8021q_frames','__in_crc_errors','__in_block_errors','__in_carrier_errors','__in_interrupted_tx','__in_late_collision','__in_mac_errors_rx','__in_single_collision','__in_symbol_error','__in_maxsize_exceeded','__out_mac_control_frames','__out_mac_pause_frames','__out_8021q_frames','__out_mac_errors_tx',) + + _yang_name = 'counters' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__in_mac_control_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-control-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_mac_pause_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-pause-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_oversize_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-oversize-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_undersize_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-undersize-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_jabber_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-jabber-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_fragment_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fragment-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_8021q_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-8021q-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_crc_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-crc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_block_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-block-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_carrier_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-carrier-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_interrupted_tx = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-interrupted-tx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_late_collision = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-late-collision", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_mac_errors_rx = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-errors-rx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_single_collision = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-single-collision", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_symbol_error = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-symbol-error", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__in_maxsize_exceeded = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-maxsize-exceeded", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__out_mac_control_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-control-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__out_mac_pause_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-pause-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__out_8021q_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-8021q-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + self.__out_mac_errors_tx = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-errors-tx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'ethernet', 'state', 'counters'] + + def _get_in_mac_control_frames(self): + """ + Getter method for in_mac_control_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_mac_control_frames (oc-yang:counter64) + + YANG Description: MAC layer control frames received on the interface + """ + return self.__in_mac_control_frames + + def _set_in_mac_control_frames(self, v, load=False): + """ + Setter method for in_mac_control_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_mac_control_frames (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_mac_control_frames is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_mac_control_frames() directly. + + YANG Description: MAC layer control frames received on the interface + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-control-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_mac_control_frames must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-control-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_mac_control_frames = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_mac_control_frames(self): + self.__in_mac_control_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-control-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_mac_pause_frames(self): + """ + Getter method for in_mac_pause_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_mac_pause_frames (oc-yang:counter64) + + YANG Description: MAC layer PAUSE frames received on the interface + """ + return self.__in_mac_pause_frames + + def _set_in_mac_pause_frames(self, v, load=False): + """ + Setter method for in_mac_pause_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_mac_pause_frames (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_mac_pause_frames is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_mac_pause_frames() directly. + + YANG Description: MAC layer PAUSE frames received on the interface + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-pause-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_mac_pause_frames must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-pause-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_mac_pause_frames = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_mac_pause_frames(self): + self.__in_mac_pause_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-pause-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_oversize_frames(self): + """ + Getter method for in_oversize_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_oversize_frames (oc-yang:counter64) + + YANG Description: The total number of frames received that were +longer than 1518 octets (excluding framing bits, +but including FCS octets) and were otherwise +well formed. + """ + return self.__in_oversize_frames + + def _set_in_oversize_frames(self, v, load=False): + """ + Setter method for in_oversize_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_oversize_frames (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_oversize_frames is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_oversize_frames() directly. + + YANG Description: The total number of frames received that were +longer than 1518 octets (excluding framing bits, +but including FCS octets) and were otherwise +well formed. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-oversize-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_oversize_frames must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-oversize-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_oversize_frames = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_oversize_frames(self): + self.__in_oversize_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-oversize-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_undersize_frames(self): + """ + Getter method for in_undersize_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_undersize_frames (oc-yang:counter64) + + YANG Description: The total number of frames received that were +less than 64 octets long (excluding framing bits, +but including FCS octets) and were otherwise well +formed. + """ + return self.__in_undersize_frames + + def _set_in_undersize_frames(self, v, load=False): + """ + Setter method for in_undersize_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_undersize_frames (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_undersize_frames is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_undersize_frames() directly. + + YANG Description: The total number of frames received that were +less than 64 octets long (excluding framing bits, +but including FCS octets) and were otherwise well +formed. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-undersize-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_undersize_frames must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-undersize-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_undersize_frames = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_undersize_frames(self): + self.__in_undersize_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-undersize-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_jabber_frames(self): + """ + Getter method for in_jabber_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_jabber_frames (oc-yang:counter64) + + YANG Description: Number of jabber frames received on the +interface. Jabber frames are typically defined as oversize +frames which also have a bad CRC. Implementations may use +slightly different definitions of what constitutes a jabber +frame. Often indicative of a NIC hardware problem. + """ + return self.__in_jabber_frames + + def _set_in_jabber_frames(self, v, load=False): + """ + Setter method for in_jabber_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_jabber_frames (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_jabber_frames is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_jabber_frames() directly. + + YANG Description: Number of jabber frames received on the +interface. Jabber frames are typically defined as oversize +frames which also have a bad CRC. Implementations may use +slightly different definitions of what constitutes a jabber +frame. Often indicative of a NIC hardware problem. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-jabber-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_jabber_frames must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-jabber-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_jabber_frames = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_jabber_frames(self): + self.__in_jabber_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-jabber-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_fragment_frames(self): + """ + Getter method for in_fragment_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_fragment_frames (oc-yang:counter64) + + YANG Description: The total number of frames received that were less than +64 octets in length (excluding framing bits but including +FCS octets) and had either a bad Frame Check Sequence +(FCS) with an integral number of octets (FCS Error) or a +bad FCS with a non-integral number of octets (Alignment +Error). + """ + return self.__in_fragment_frames + + def _set_in_fragment_frames(self, v, load=False): + """ + Setter method for in_fragment_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_fragment_frames (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_fragment_frames is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_fragment_frames() directly. + + YANG Description: The total number of frames received that were less than +64 octets in length (excluding framing bits but including +FCS octets) and had either a bad Frame Check Sequence +(FCS) with an integral number of octets (FCS Error) or a +bad FCS with a non-integral number of octets (Alignment +Error). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fragment-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_fragment_frames must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fragment-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_fragment_frames = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_fragment_frames(self): + self.__in_fragment_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fragment-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_8021q_frames(self): + """ + Getter method for in_8021q_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_8021q_frames (oc-yang:counter64) + + YANG Description: Number of 802.1q tagged frames received on the interface + """ + return self.__in_8021q_frames + + def _set_in_8021q_frames(self, v, load=False): + """ + Setter method for in_8021q_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_8021q_frames (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_8021q_frames is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_8021q_frames() directly. + + YANG Description: Number of 802.1q tagged frames received on the interface + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-8021q-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_8021q_frames must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-8021q-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_8021q_frames = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_8021q_frames(self): + self.__in_8021q_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-8021q-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_crc_errors(self): + """ + Getter method for in_crc_errors, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_crc_errors (oc-yang:counter64) + + YANG Description: The total number of frames received that +had a length (excluding framing bits, but +including FCS octets) of between 64 and 1518 +octets, inclusive, but had either a bad +Frame Check Sequence (FCS) with an integral +number of octets (FCS Error) or a bad FCS with +a non-integral number of octets (Alignment Error) + """ + return self.__in_crc_errors + + def _set_in_crc_errors(self, v, load=False): + """ + Setter method for in_crc_errors, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_crc_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_crc_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_crc_errors() directly. + + YANG Description: The total number of frames received that +had a length (excluding framing bits, but +including FCS octets) of between 64 and 1518 +octets, inclusive, but had either a bad +Frame Check Sequence (FCS) with an integral +number of octets (FCS Error) or a bad FCS with +a non-integral number of octets (Alignment Error) + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-crc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_crc_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-crc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_crc_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_crc_errors(self): + self.__in_crc_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-crc-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_block_errors(self): + """ + Getter method for in_block_errors, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_block_errors (oc-yang:counter64) + + YANG Description: The number of received errored blocks. Error detection codes +are capable of detecting whether one or more errors have +occurred in a given sequence of bits – the block. It is +normally not possible to determine the exact number of errored +bits within the block + """ + return self.__in_block_errors + + def _set_in_block_errors(self, v, load=False): + """ + Setter method for in_block_errors, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_block_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_block_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_block_errors() directly. + + YANG Description: The number of received errored blocks. Error detection codes +are capable of detecting whether one or more errors have +occurred in a given sequence of bits – the block. It is +normally not possible to determine the exact number of errored +bits within the block + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-block-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_block_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-block-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_block_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_block_errors(self): + self.__in_block_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-block-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_carrier_errors(self): + """ + Getter method for in_carrier_errors, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_carrier_errors (oc-yang:counter64) + + YANG Description: The number of received errored frames due to a carrier issue. +The value refers to MIB counter for +dot3StatsCarrierSenseErrors +oid=1.3.6.1.2.1.10.7.2.1.11 + """ + return self.__in_carrier_errors + + def _set_in_carrier_errors(self, v, load=False): + """ + Setter method for in_carrier_errors, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_carrier_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_carrier_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_carrier_errors() directly. + + YANG Description: The number of received errored frames due to a carrier issue. +The value refers to MIB counter for +dot3StatsCarrierSenseErrors +oid=1.3.6.1.2.1.10.7.2.1.11 + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-carrier-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_carrier_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-carrier-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_carrier_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_carrier_errors(self): + self.__in_carrier_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-carrier-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_interrupted_tx(self): + """ + Getter method for in_interrupted_tx, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_interrupted_tx (oc-yang:counter64) + + YANG Description: The number of received errored frames due to interrupted +transmission issue. The value refers to MIB counter for +dot3StatsDeferredTransmissions +oid=1.3.6.1.2.1.10.7.2.1.7 + """ + return self.__in_interrupted_tx + + def _set_in_interrupted_tx(self, v, load=False): + """ + Setter method for in_interrupted_tx, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_interrupted_tx (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_interrupted_tx is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_interrupted_tx() directly. + + YANG Description: The number of received errored frames due to interrupted +transmission issue. The value refers to MIB counter for +dot3StatsDeferredTransmissions +oid=1.3.6.1.2.1.10.7.2.1.7 + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-interrupted-tx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_interrupted_tx must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-interrupted-tx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_interrupted_tx = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_interrupted_tx(self): + self.__in_interrupted_tx = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-interrupted-tx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_late_collision(self): + """ + Getter method for in_late_collision, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_late_collision (oc-yang:counter64) + + YANG Description: The number of received errored frames due to late collision +issue. The value refers to MIB counter for +dot3StatsLateCollisions +oid=1.3.6.1.2.1.10.7.2.1.8 + """ + return self.__in_late_collision + + def _set_in_late_collision(self, v, load=False): + """ + Setter method for in_late_collision, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_late_collision (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_late_collision is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_late_collision() directly. + + YANG Description: The number of received errored frames due to late collision +issue. The value refers to MIB counter for +dot3StatsLateCollisions +oid=1.3.6.1.2.1.10.7.2.1.8 + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-late-collision", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_late_collision must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-late-collision", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_late_collision = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_late_collision(self): + self.__in_late_collision = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-late-collision", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_mac_errors_rx(self): + """ + Getter method for in_mac_errors_rx, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_mac_errors_rx (oc-yang:counter64) + + YANG Description: The number of received errored frames due to MAC errors +received. The value refers to MIB counter for +dot3StatsInternalMacReceiveErrors +oid=1.3.6.1.2.1.10.7.2.1.16 + """ + return self.__in_mac_errors_rx + + def _set_in_mac_errors_rx(self, v, load=False): + """ + Setter method for in_mac_errors_rx, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_mac_errors_rx (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_mac_errors_rx is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_mac_errors_rx() directly. + + YANG Description: The number of received errored frames due to MAC errors +received. The value refers to MIB counter for +dot3StatsInternalMacReceiveErrors +oid=1.3.6.1.2.1.10.7.2.1.16 + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-errors-rx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_mac_errors_rx must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-errors-rx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_mac_errors_rx = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_mac_errors_rx(self): + self.__in_mac_errors_rx = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-mac-errors-rx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_single_collision(self): + """ + Getter method for in_single_collision, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_single_collision (oc-yang:counter64) + + YANG Description: The number of received errored frames due to single collision +issue. The value refers to MIB counter for +dot3StatsSingleCollisionFrames +oid=1.3.6.1.2.1.10.7.2.1.4 + """ + return self.__in_single_collision + + def _set_in_single_collision(self, v, load=False): + """ + Setter method for in_single_collision, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_single_collision (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_single_collision is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_single_collision() directly. + + YANG Description: The number of received errored frames due to single collision +issue. The value refers to MIB counter for +dot3StatsSingleCollisionFrames +oid=1.3.6.1.2.1.10.7.2.1.4 + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-single-collision", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_single_collision must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-single-collision", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_single_collision = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_single_collision(self): + self.__in_single_collision = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-single-collision", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_symbol_error(self): + """ + Getter method for in_symbol_error, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_symbol_error (oc-yang:counter64) + + YANG Description: The number of received errored frames due to symbol error. +The value refers to MIB counter for +in-symbol-error +oid=1.3.6.1.2.1.10.7.2.1.18 + """ + return self.__in_symbol_error + + def _set_in_symbol_error(self, v, load=False): + """ + Setter method for in_symbol_error, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_symbol_error (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_symbol_error is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_symbol_error() directly. + + YANG Description: The number of received errored frames due to symbol error. +The value refers to MIB counter for +in-symbol-error +oid=1.3.6.1.2.1.10.7.2.1.18 + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-symbol-error", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_symbol_error must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-symbol-error", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_symbol_error = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_symbol_error(self): + self.__in_symbol_error = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-symbol-error", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_maxsize_exceeded(self): + """ + Getter method for in_maxsize_exceeded, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_maxsize_exceeded (oc-yang:counter64) + + YANG Description: The total number frames received that are well-formed but +dropped due to exceeding the maximum frame size on the interface +(e.g., MTU or MRU) + """ + return self.__in_maxsize_exceeded + + def _set_in_maxsize_exceeded(self, v, load=False): + """ + Setter method for in_maxsize_exceeded, mapped from YANG variable /interfaces/interface/ethernet/state/counters/in_maxsize_exceeded (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_maxsize_exceeded is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_maxsize_exceeded() directly. + + YANG Description: The total number frames received that are well-formed but +dropped due to exceeding the maximum frame size on the interface +(e.g., MTU or MRU) + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-maxsize-exceeded", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_maxsize_exceeded must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-maxsize-exceeded", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_maxsize_exceeded = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_maxsize_exceeded(self): + self.__in_maxsize_exceeded = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-maxsize-exceeded", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_mac_control_frames(self): + """ + Getter method for out_mac_control_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/out_mac_control_frames (oc-yang:counter64) + + YANG Description: MAC layer control frames sent on the interface + """ + return self.__out_mac_control_frames + + def _set_out_mac_control_frames(self, v, load=False): + """ + Setter method for out_mac_control_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/out_mac_control_frames (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_mac_control_frames is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_mac_control_frames() directly. + + YANG Description: MAC layer control frames sent on the interface + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-control-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_mac_control_frames must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-control-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_mac_control_frames = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_mac_control_frames(self): + self.__out_mac_control_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-control-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_mac_pause_frames(self): + """ + Getter method for out_mac_pause_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/out_mac_pause_frames (oc-yang:counter64) + + YANG Description: MAC layer PAUSE frames sent on the interface + """ + return self.__out_mac_pause_frames + + def _set_out_mac_pause_frames(self, v, load=False): + """ + Setter method for out_mac_pause_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/out_mac_pause_frames (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_mac_pause_frames is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_mac_pause_frames() directly. + + YANG Description: MAC layer PAUSE frames sent on the interface + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-pause-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_mac_pause_frames must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-pause-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_mac_pause_frames = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_mac_pause_frames(self): + self.__out_mac_pause_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-pause-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_8021q_frames(self): + """ + Getter method for out_8021q_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/out_8021q_frames (oc-yang:counter64) + + YANG Description: Number of 802.1q tagged frames sent on the interface + """ + return self.__out_8021q_frames + + def _set_out_8021q_frames(self, v, load=False): + """ + Setter method for out_8021q_frames, mapped from YANG variable /interfaces/interface/ethernet/state/counters/out_8021q_frames (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_8021q_frames is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_8021q_frames() directly. + + YANG Description: Number of 802.1q tagged frames sent on the interface + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-8021q-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_8021q_frames must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-8021q-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_8021q_frames = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_8021q_frames(self): + self.__out_8021q_frames = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-8021q-frames", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_mac_errors_tx(self): + """ + Getter method for out_mac_errors_tx, mapped from YANG variable /interfaces/interface/ethernet/state/counters/out_mac_errors_tx (oc-yang:counter64) + + YANG Description: The number of sent errored frames due to MAC errors +transmitted. The value refers to MIB counter for +dot3StatsInternalMacTransmitErrors +oid=1.3.6.1.2.1.10.7.2.1.10 + """ + return self.__out_mac_errors_tx + + def _set_out_mac_errors_tx(self, v, load=False): + """ + Setter method for out_mac_errors_tx, mapped from YANG variable /interfaces/interface/ethernet/state/counters/out_mac_errors_tx (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_mac_errors_tx is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_mac_errors_tx() directly. + + YANG Description: The number of sent errored frames due to MAC errors +transmitted. The value refers to MIB counter for +dot3StatsInternalMacTransmitErrors +oid=1.3.6.1.2.1.10.7.2.1.10 + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-errors-tx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_mac_errors_tx must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-errors-tx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_mac_errors_tx = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_mac_errors_tx(self): + self.__out_mac_errors_tx = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-mac-errors-tx", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces/ethernet', defining_module='openconfig-if-ethernet', yang_type='oc-yang:counter64', is_config=False) + + in_mac_control_frames = __builtin__.property(_get_in_mac_control_frames) + in_mac_pause_frames = __builtin__.property(_get_in_mac_pause_frames) + in_oversize_frames = __builtin__.property(_get_in_oversize_frames) + in_undersize_frames = __builtin__.property(_get_in_undersize_frames) + in_jabber_frames = __builtin__.property(_get_in_jabber_frames) + in_fragment_frames = __builtin__.property(_get_in_fragment_frames) + in_8021q_frames = __builtin__.property(_get_in_8021q_frames) + in_crc_errors = __builtin__.property(_get_in_crc_errors) + in_block_errors = __builtin__.property(_get_in_block_errors) + in_carrier_errors = __builtin__.property(_get_in_carrier_errors) + in_interrupted_tx = __builtin__.property(_get_in_interrupted_tx) + in_late_collision = __builtin__.property(_get_in_late_collision) + in_mac_errors_rx = __builtin__.property(_get_in_mac_errors_rx) + in_single_collision = __builtin__.property(_get_in_single_collision) + in_symbol_error = __builtin__.property(_get_in_symbol_error) + in_maxsize_exceeded = __builtin__.property(_get_in_maxsize_exceeded) + out_mac_control_frames = __builtin__.property(_get_out_mac_control_frames) + out_mac_pause_frames = __builtin__.property(_get_out_mac_pause_frames) + out_8021q_frames = __builtin__.property(_get_out_8021q_frames) + out_mac_errors_tx = __builtin__.property(_get_out_mac_errors_tx) + + + _pyangbind_elements = OrderedDict([('in_mac_control_frames', in_mac_control_frames), ('in_mac_pause_frames', in_mac_pause_frames), ('in_oversize_frames', in_oversize_frames), ('in_undersize_frames', in_undersize_frames), ('in_jabber_frames', in_jabber_frames), ('in_fragment_frames', in_fragment_frames), ('in_8021q_frames', in_8021q_frames), ('in_crc_errors', in_crc_errors), ('in_block_errors', in_block_errors), ('in_carrier_errors', in_carrier_errors), ('in_interrupted_tx', in_interrupted_tx), ('in_late_collision', in_late_collision), ('in_mac_errors_rx', in_mac_errors_rx), ('in_single_collision', in_single_collision), ('in_symbol_error', in_symbol_error), ('in_maxsize_exceeded', in_maxsize_exceeded), ('out_mac_control_frames', out_mac_control_frames), ('out_mac_pause_frames', out_mac_pause_frames), ('out_8021q_frames', out_8021q_frames), ('out_mac_errors_tx', out_mac_errors_tx), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/hold_time/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/hold_time/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..2ccfda7efab86d3f1384c506d84a25962e66c1c4 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/hold_time/__init__.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import config +from . import state +class hold_time(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/hold-time. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Top-level container for hold-time settings to enable +dampening advertisements of interface transitions. + """ + __slots__ = ('_path_helper', '_extmethods', '__config','__state',) + + _yang_name = 'hold-time' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'hold-time'] + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /interfaces/interface/hold_time/config (container) + + YANG Description: Configuration data for interface hold-time settings. + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /interfaces/interface/hold_time/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configuration data for interface hold-time settings. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /interfaces/interface/hold_time/state (container) + + YANG Description: Operational state data for interface hold-time. + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /interfaces/interface/hold_time/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for interface hold-time. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('config', config), ('state', state), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/hold_time/config/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/hold_time/config/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..c3f1d822b900afa7e780d7dbc31564dd5e4316b2 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/hold_time/config/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/hold-time/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configuration data for interface hold-time settings. + """ + __slots__ = ('_path_helper', '_extmethods', '__up','__down',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__up = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="up", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True) + self.__down = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="down", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'hold-time', 'config'] + + def _get_up(self): + """ + Getter method for up, mapped from YANG variable /interfaces/interface/hold_time/config/up (uint32) + + YANG Description: Dampens advertisement when the interface +transitions from down to up. A zero value means dampening +is turned off, i.e., immediate notification. + """ + return self.__up + + def _set_up(self, v, load=False): + """ + Setter method for up, mapped from YANG variable /interfaces/interface/hold_time/config/up (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_up is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_up() directly. + + YANG Description: Dampens advertisement when the interface +transitions from down to up. A zero value means dampening +is turned off, i.e., immediate notification. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="up", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """up must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="up", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True)""", + }) + + self.__up = t + if hasattr(self, '_set'): + self._set() + + def _unset_up(self): + self.__up = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="up", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True) + + + def _get_down(self): + """ + Getter method for down, mapped from YANG variable /interfaces/interface/hold_time/config/down (uint32) + + YANG Description: Dampens advertisement when the interface transitions from +up to down. A zero value means dampening is turned off, +i.e., immediate notification. + """ + return self.__down + + def _set_down(self, v, load=False): + """ + Setter method for down, mapped from YANG variable /interfaces/interface/hold_time/config/down (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_down is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_down() directly. + + YANG Description: Dampens advertisement when the interface transitions from +up to down. A zero value means dampening is turned off, +i.e., immediate notification. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="down", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """down must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="down", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True)""", + }) + + self.__down = t + if hasattr(self, '_set'): + self._set() + + def _unset_down(self): + self.__down = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="down", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True) + + up = __builtin__.property(_get_up, _set_up) + down = __builtin__.property(_get_down, _set_down) + + + _pyangbind_elements = OrderedDict([('up', up), ('down', down), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/hold_time/state/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/hold_time/state/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d5c994a6de356feb3618bd10efb399bb7b3ad302 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/hold_time/state/__init__.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/hold-time/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for interface hold-time. + """ + __slots__ = ('_path_helper', '_extmethods', '__up','__down',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__up = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="up", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + self.__down = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="down", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'hold-time', 'state'] + + def _get_up(self): + """ + Getter method for up, mapped from YANG variable /interfaces/interface/hold_time/state/up (uint32) + + YANG Description: Dampens advertisement when the interface +transitions from down to up. A zero value means dampening +is turned off, i.e., immediate notification. + """ + return self.__up + + def _set_up(self, v, load=False): + """ + Setter method for up, mapped from YANG variable /interfaces/interface/hold_time/state/up (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_up is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_up() directly. + + YANG Description: Dampens advertisement when the interface +transitions from down to up. A zero value means dampening +is turned off, i.e., immediate notification. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="up", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """up must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="up", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False)""", + }) + + self.__up = t + if hasattr(self, '_set'): + self._set() + + def _unset_up(self): + self.__up = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="up", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + + + def _get_down(self): + """ + Getter method for down, mapped from YANG variable /interfaces/interface/hold_time/state/down (uint32) + + YANG Description: Dampens advertisement when the interface transitions from +up to down. A zero value means dampening is turned off, +i.e., immediate notification. + """ + return self.__down + + def _set_down(self, v, load=False): + """ + Setter method for down, mapped from YANG variable /interfaces/interface/hold_time/state/down (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_down is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_down() directly. + + YANG Description: Dampens advertisement when the interface transitions from +up to down. A zero value means dampening is turned off, +i.e., immediate notification. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="down", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """down must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="down", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False)""", + }) + + self.__down = t + if hasattr(self, '_set'): + self._set() + + def _unset_down(self): + self.__down = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="down", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + + up = __builtin__.property(_get_up) + down = __builtin__.property(_get_down) + + + _pyangbind_elements = OrderedDict([('up', up), ('down', down), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/state/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/state/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d8e2ff185e1300fa19b14959b005ddd00dd08c88 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/state/__init__.py @@ -0,0 +1,875 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import counters +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data at the global interface level + """ + __slots__ = ('_path_helper', '_extmethods', '__name','__type','__mtu','__loopback_mode','__description','__enabled','__ifindex','__admin_status','__oper_status','__last_change','__logical','__management','__cpu','__counters','__hardware_port',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + self.__type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}},), is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='identityref', is_config=False) + self.__mtu = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="mtu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint16', is_config=False) + self.__loopback_mode = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="loopback-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + self.__ifindex = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ifindex", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {}, 'DOWN': {}, 'TESTING': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {'value': 1}, 'DOWN': {'value': 2}, 'TESTING': {'value': 3}, 'UNKNOWN': {'value': 4}, 'DORMANT': {'value': 5}, 'NOT_PRESENT': {'value': 6}, 'LOWER_LAYER_DOWN': {'value': 7}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + self.__last_change = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-change", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + self.__logical = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="logical", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + self.__management = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="management", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + self.__cpu = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + self.__counters = YANGDynClass(base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=False) + self.__hardware_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="hardware-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'state'] + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /interfaces/interface/state/name (string) + + YANG Description: The name of the interface. + +A device MAY restrict the allowed values for this leaf, +possibly depending on the type of the interface. +For system-controlled interfaces, this leaf is the +device-specific name of the interface. The 'config false' +list interfaces/interface[name]/state contains the currently +existing interfaces on the device. + +If a client tries to create configuration for a +system-controlled interface that is not present in the +corresponding state list, the server MAY reject +the request if the implementation does not support +pre-provisioning of interfaces or if the name refers to +an interface that can never exist in the system. A +NETCONF server MUST reply with an rpc-error with the +error-tag 'invalid-value' in this case. + +The IETF model in RFC 7223 provides YANG features for the +following (i.e., pre-provisioning and arbitrary-names), +however they are omitted here: + + If the device supports pre-provisioning of interface + configuration, the 'pre-provisioning' feature is + advertised. + + If the device allows arbitrarily named user-controlled + interfaces, the 'arbitrary-names' feature is advertised. + +When a configured user-controlled interface is created by +the system, it is instantiated with the same name in the +/interfaces/interface[name]/state list. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /interfaces/interface/state/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: The name of the interface. + +A device MAY restrict the allowed values for this leaf, +possibly depending on the type of the interface. +For system-controlled interfaces, this leaf is the +device-specific name of the interface. The 'config false' +list interfaces/interface[name]/state contains the currently +existing interfaces on the device. + +If a client tries to create configuration for a +system-controlled interface that is not present in the +corresponding state list, the server MAY reject +the request if the implementation does not support +pre-provisioning of interfaces or if the name refers to +an interface that can never exist in the system. A +NETCONF server MUST reply with an rpc-error with the +error-tag 'invalid-value' in this case. + +The IETF model in RFC 7223 provides YANG features for the +following (i.e., pre-provisioning and arbitrary-names), +however they are omitted here: + + If the device supports pre-provisioning of interface + configuration, the 'pre-provisioning' feature is + advertised. + + If the device allows arbitrarily named user-controlled + interfaces, the 'arbitrary-names' feature is advertised. + +When a configured user-controlled interface is created by +the system, it is instantiated with the same name in the +/interfaces/interface[name]/state list. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + + + def _get_type(self): + """ + Getter method for type, mapped from YANG variable /interfaces/interface/state/type (identityref) + + YANG Description: The type of the interface. + +When an interface entry is created, a server MAY +initialize the type leaf with a valid value, e.g., if it +is possible to derive the type from the name of the +interface. + +If a client tries to set the type of an interface to a +value that can never be used by the system, e.g., if the +type is not supported or if the type does not match the +name of the interface, the server MUST reject the request. +A NETCONF server MUST reply with an rpc-error with the +error-tag 'invalid-value' in this case. + """ + return self.__type + + def _set_type(self, v, load=False): + """ + Setter method for type, mapped from YANG variable /interfaces/interface/state/type (identityref) + If this variable is read-only (config: false) in the + source YANG file, then _set_type is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_type() directly. + + YANG Description: The type of the interface. + +When an interface entry is created, a server MAY +initialize the type leaf with a valid value, e.g., if it +is possible to derive the type from the name of the +interface. + +If a client tries to set the type of an interface to a +value that can never be used by the system, e.g., if the +type is not supported or if the type does not match the +name of the interface, the server MUST reject the request. +A NETCONF server MUST reply with an rpc-error with the +error-tag 'invalid-value' in this case. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}},), is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='identityref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """type must be of a type compatible with identityref""", + 'defined-type': "openconfig-interfaces:identityref", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}},), is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='identityref', is_config=False)""", + }) + + self.__type = t + if hasattr(self, '_set'): + self._set() + + def _unset_type(self): + self.__type = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iana-interface-type': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:other': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:regular1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdh1822': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ddnX25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc877x25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernetCsmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88023Csmacd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88024TokenBus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025TokenRing': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88026Man': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:starLan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon10Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:proteon80Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hyperchannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fddi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:e1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:basicISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:primaryISDN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propPointToPointSerial': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ppp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:softwareLoopback': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ethernet3Mbit': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nsip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:slip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ultra': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds3': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rs232': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:para': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arcnetPlus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:miox25': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25ple': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88022llc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:localTalk': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayService': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v35': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hssi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:modem': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal5': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetPath': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetVT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:smdsIcip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propMultiplexor': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80212': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fibreChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hippiInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayInterconnect': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8023': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aflane8025': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cctEmul': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v11': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v36': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at64k': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g703at2mb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qllc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastEtherFX': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:channel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80211': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ibm370parChan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:escon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dlsw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdns': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isdnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapd': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rsrb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmLogical': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds0Bundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bsc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:async': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cnr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Dtr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:eplrs': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:arap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propCnls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hostPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:termPad': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frameRelayMPI': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x213': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025CRFPInt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:myrinet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEM': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXO': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFXS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEncap': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmDxi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmFuni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmIma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pppMultilinkBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverCdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverClaw': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:stackToStack': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualIpAddress': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:iso88025Fiber': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gigabitEthernet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lapf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:v37': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25mlp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x25huntGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:transpHdlc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:interleave': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:a12MppSwitch': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:coffee': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ces': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmSubInterface': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l2vlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:l3ipxvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalPowerline': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mediaMailOverIp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dcn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ipForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:msdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee1394': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:if-gsn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRccUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVirtual': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mplsTunnel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:srp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverFrameRelay': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:idsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:compositeLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ss7SigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propWirelessP2P': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frForward': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rfc1483': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:usb': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee8023adLag': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bgppolicyaccounting': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frf16MfrBundle': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Gatekeeper': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:h323Proxy': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpls': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mfSigLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:shdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ds1FDL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pos': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiIn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbAsiOut': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:plc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:nfas': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:tr008': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303RDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gr303IDT': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:isup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessMaclayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propDocsWirelessUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:hiperlan2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propBWAp2Mp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sonetOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:digitalWrapperOverheadChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aal2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:radioMAC': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:imt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mvl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:reachDSL': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:frDlciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmVciEndPt': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:propAtm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceOverCable': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:infiniband': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:teLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:q2931': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:virtualTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipTg': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sipSig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamChannel': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:econet': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon155': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pon622': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bridge': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:linegroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEMFGD': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDEANA': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceDID': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mpegTransport': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sixToFour': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gtp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pdnEtherLoop2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:opticalChannelGroup': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:homepna': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ciscoISLvlan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:actelisMetaLOOP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fcipLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:rpr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:qam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:lmp': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cblVectaStar': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableMCmtsDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecControlledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:macSecUncontrolledIF': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aviciOpticalEther': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:atmbond': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceFGDOS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:mocaVersion1': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee80216WMAN': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:adsl2plus': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsMacLayer': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbTdm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:dvbRcsTdma': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:x86Laps': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:wwanPP2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:voiceEBS': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifPwType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ilan': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:pip': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluELP': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vdsl2': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Profile': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapDot11Bss': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:capwapWtpVirtualRadio': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:bits': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableUpstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:cableDownstreamRfPort': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareVirtualNic': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ieee802154': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOdu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ifVfiType': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9981': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9982': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:g9983': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEpon': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluEponLogicalLink': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponOnu': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:aluGponPhysicalUni': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:vmwareNicTeam': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmDownstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsOfdmaUpstream': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:gfast': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:sdci': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:xboxWireless': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:fastdsl': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1FwdOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d1RetOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2DsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableScte55d2UsOob': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdf': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:docsCableNdr': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ptm': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:ghn': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsi': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtuc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOduc': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:otnOtsig': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveCarrierTermination': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}, 'ianaift:microwaveRadioLinkTerminal': {'@module': 'iana-if-type', '@namespace': 'urn:ietf:params:xml:ns:yang:iana-if-type'}},), is_leaf=True, yang_name="type", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='identityref', is_config=False) + + + def _get_mtu(self): + """ + Getter method for mtu, mapped from YANG variable /interfaces/interface/state/mtu (uint16) + + YANG Description: Set the max transmission unit size in octets +for the physical interface. If this is not set, the mtu is +set to the operational default -- e.g., 1514 bytes on an +Ethernet interface. + """ + return self.__mtu + + def _set_mtu(self, v, load=False): + """ + Setter method for mtu, mapped from YANG variable /interfaces/interface/state/mtu (uint16) + If this variable is read-only (config: false) in the + source YANG file, then _set_mtu is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_mtu() directly. + + YANG Description: Set the max transmission unit size in octets +for the physical interface. If this is not set, the mtu is +set to the operational default -- e.g., 1514 bytes on an +Ethernet interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="mtu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint16', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """mtu must be of a type compatible with uint16""", + 'defined-type': "uint16", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="mtu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint16', is_config=False)""", + }) + + self.__mtu = t + if hasattr(self, '_set'): + self._set() + + def _unset_mtu(self): + self.__mtu = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="mtu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint16', is_config=False) + + + def _get_loopback_mode(self): + """ + Getter method for loopback_mode, mapped from YANG variable /interfaces/interface/state/loopback_mode (boolean) + + YANG Description: When set to true, the interface is logically looped back, +such that packets that are forwarded via the interface +are received on the same interface. + """ + return self.__loopback_mode + + def _set_loopback_mode(self, v, load=False): + """ + Setter method for loopback_mode, mapped from YANG variable /interfaces/interface/state/loopback_mode (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_loopback_mode is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_loopback_mode() directly. + + YANG Description: When set to true, the interface is logically looped back, +such that packets that are forwarded via the interface +are received on the same interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="loopback-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """loopback_mode must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="loopback-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False)""", + }) + + self.__loopback_mode = t + if hasattr(self, '_set'): + self._set() + + def _unset_loopback_mode(self): + self.__loopback_mode = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="loopback-mode", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + + + def _get_description(self): + """ + Getter method for description, mapped from YANG variable /interfaces/interface/state/description (string) + + YANG Description: A textual description of the interface. + +A server implementation MAY map this leaf to the ifAlias +MIB object. Such an implementation needs to use some +mechanism to handle the differences in size and characters +allowed between this leaf and ifAlias. The definition of +such a mechanism is outside the scope of this document. + +Since ifAlias is defined to be stored in non-volatile +storage, the MIB implementation MUST map ifAlias to the +value of 'description' in the persistently stored +datastore. + +Specifically, if the device supports ':startup', when +ifAlias is read the device MUST return the value of +'description' in the 'startup' datastore, and when it is +written, it MUST be written to the 'running' and 'startup' +datastores. Note that it is up to the implementation to + +decide whether to modify this single leaf in 'startup' or +perform an implicit copy-config from 'running' to +'startup'. + +If the device does not support ':startup', ifAlias MUST +be mapped to the 'description' leaf in the 'running' +datastore. + """ + return self.__description + + def _set_description(self, v, load=False): + """ + Setter method for description, mapped from YANG variable /interfaces/interface/state/description (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_description is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_description() directly. + + YANG Description: A textual description of the interface. + +A server implementation MAY map this leaf to the ifAlias +MIB object. Such an implementation needs to use some +mechanism to handle the differences in size and characters +allowed between this leaf and ifAlias. The definition of +such a mechanism is outside the scope of this document. + +Since ifAlias is defined to be stored in non-volatile +storage, the MIB implementation MUST map ifAlias to the +value of 'description' in the persistently stored +datastore. + +Specifically, if the device supports ':startup', when +ifAlias is read the device MUST return the value of +'description' in the 'startup' datastore, and when it is +written, it MUST be written to the 'running' and 'startup' +datastores. Note that it is up to the implementation to + +decide whether to modify this single leaf in 'startup' or +perform an implicit copy-config from 'running' to +'startup'. + +If the device does not support ':startup', ifAlias MUST +be mapped to the 'description' leaf in the 'running' +datastore. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """description must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False)""", + }) + + self.__description = t + if hasattr(self, '_set'): + self._set() + + def _unset_description(self): + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /interfaces/interface/state/enabled (boolean) + + YANG Description: This leaf contains the configured, desired state of the +interface. + +Systems that implement the IF-MIB use the value of this +leaf in the 'running' datastore to set +IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry +has been initialized, as described in RFC 2863. + +Changes in this leaf in the 'running' datastore are +reflected in ifAdminStatus, but if ifAdminStatus is +changed over SNMP, this leaf is not affected. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /interfaces/interface/state/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: This leaf contains the configured, desired state of the +interface. + +Systems that implement the IF-MIB use the value of this +leaf in the 'running' datastore to set +IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry +has been initialized, as described in RFC 2863. + +Changes in this leaf in the 'running' datastore are +reflected in ifAdminStatus, but if ifAdminStatus is +changed over SNMP, this leaf is not affected. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + + + def _get_ifindex(self): + """ + Getter method for ifindex, mapped from YANG variable /interfaces/interface/state/ifindex (uint32) + + YANG Description: System assigned number for each interface. Corresponds to +ifIndex object in SNMP Interface MIB + """ + return self.__ifindex + + def _set_ifindex(self, v, load=False): + """ + Setter method for ifindex, mapped from YANG variable /interfaces/interface/state/ifindex (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_ifindex is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ifindex() directly. + + YANG Description: System assigned number for each interface. Corresponds to +ifIndex object in SNMP Interface MIB + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ifindex", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ifindex must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ifindex", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False)""", + }) + + self.__ifindex = t + if hasattr(self, '_set'): + self._set() + + def _unset_ifindex(self): + self.__ifindex = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ifindex", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + + + def _get_admin_status(self): + """ + Getter method for admin_status, mapped from YANG variable /interfaces/interface/state/admin_status (enumeration) + + YANG Description: The desired state of the interface. In RFC 7223 this leaf +has the same read semantics as ifAdminStatus. Here, it +reflects the administrative state as set by enabling or +disabling the interface. + """ + return self.__admin_status + + def _set_admin_status(self, v, load=False): + """ + Setter method for admin_status, mapped from YANG variable /interfaces/interface/state/admin_status (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_admin_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_admin_status() directly. + + YANG Description: The desired state of the interface. In RFC 7223 this leaf +has the same read semantics as ifAdminStatus. Here, it +reflects the administrative state as set by enabling or +disabling the interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {}, 'DOWN': {}, 'TESTING': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """admin_status must be of a type compatible with enumeration""", + 'defined-type': "openconfig-interfaces:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {}, 'DOWN': {}, 'TESTING': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False)""", + }) + + self.__admin_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_admin_status(self): + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {}, 'DOWN': {}, 'TESTING': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + + + def _get_oper_status(self): + """ + Getter method for oper_status, mapped from YANG variable /interfaces/interface/state/oper_status (enumeration) + + YANG Description: The current operational state of the interface. + +This leaf has the same semantics as ifOperStatus. + """ + return self.__oper_status + + def _set_oper_status(self, v, load=False): + """ + Setter method for oper_status, mapped from YANG variable /interfaces/interface/state/oper_status (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_oper_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_oper_status() directly. + + YANG Description: The current operational state of the interface. + +This leaf has the same semantics as ifOperStatus. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {'value': 1}, 'DOWN': {'value': 2}, 'TESTING': {'value': 3}, 'UNKNOWN': {'value': 4}, 'DORMANT': {'value': 5}, 'NOT_PRESENT': {'value': 6}, 'LOWER_LAYER_DOWN': {'value': 7}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """oper_status must be of a type compatible with enumeration""", + 'defined-type': "openconfig-interfaces:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {'value': 1}, 'DOWN': {'value': 2}, 'TESTING': {'value': 3}, 'UNKNOWN': {'value': 4}, 'DORMANT': {'value': 5}, 'NOT_PRESENT': {'value': 6}, 'LOWER_LAYER_DOWN': {'value': 7}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False)""", + }) + + self.__oper_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_oper_status(self): + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {'value': 1}, 'DOWN': {'value': 2}, 'TESTING': {'value': 3}, 'UNKNOWN': {'value': 4}, 'DORMANT': {'value': 5}, 'NOT_PRESENT': {'value': 6}, 'LOWER_LAYER_DOWN': {'value': 7}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + + + def _get_last_change(self): + """ + Getter method for last_change, mapped from YANG variable /interfaces/interface/state/last_change (oc-types:timeticks64) + + YANG Description: This timestamp indicates the absolute time of the last +state change of the interface (e.g., up-to-down transition). +This is different than the SNMP ifLastChange object in the +standard interface MIB in that it is not relative to the +system boot time (i.e,. sysUpTime). + +The value is the timestamp in nanoseconds relative to +the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + return self.__last_change + + def _set_last_change(self, v, load=False): + """ + Setter method for last_change, mapped from YANG variable /interfaces/interface/state/last_change (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_change is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_change() directly. + + YANG Description: This timestamp indicates the absolute time of the last +state change of the interface (e.g., up-to-down transition). +This is different than the SNMP ifLastChange object in the +standard interface MIB in that it is not relative to the +system boot time (i.e,. sysUpTime). + +The value is the timestamp in nanoseconds relative to +the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-change", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_change must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-change", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_change = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_change(self): + self.__last_change = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-change", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + + + def _get_logical(self): + """ + Getter method for logical, mapped from YANG variable /interfaces/interface/state/logical (boolean) + + YANG Description: When set to true, the interface is a logical interface +which does not have an associated physical port or +channel on the system. + """ + return self.__logical + + def _set_logical(self, v, load=False): + """ + Setter method for logical, mapped from YANG variable /interfaces/interface/state/logical (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_logical is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_logical() directly. + + YANG Description: When set to true, the interface is a logical interface +which does not have an associated physical port or +channel on the system. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="logical", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """logical must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="logical", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False)""", + }) + + self.__logical = t + if hasattr(self, '_set'): + self._set() + + def _unset_logical(self): + self.__logical = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="logical", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + + + def _get_management(self): + """ + Getter method for management, mapped from YANG variable /interfaces/interface/state/management (boolean) + + YANG Description: When set to true, the interface is a dedicated +management interface that is not connected to dataplane +interfaces. It may be used to connect the system to an +out-of-band management network, for example. + """ + return self.__management + + def _set_management(self, v, load=False): + """ + Setter method for management, mapped from YANG variable /interfaces/interface/state/management (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_management is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_management() directly. + + YANG Description: When set to true, the interface is a dedicated +management interface that is not connected to dataplane +interfaces. It may be used to connect the system to an +out-of-band management network, for example. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="management", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """management must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="management", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False)""", + }) + + self.__management = t + if hasattr(self, '_set'): + self._set() + + def _unset_management(self): + self.__management = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="management", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + + + def _get_cpu(self): + """ + Getter method for cpu, mapped from YANG variable /interfaces/interface/state/cpu (boolean) + + YANG Description: When set to true, the interface is for traffic +that is handled by the system CPU, sometimes also called the +control plane interface. On systems that represent the CPU +interface as an Ethernet interface, for example, this leaf +should be used to distinguish the CPU interface from dataplane +interfaces. + """ + return self.__cpu + + def _set_cpu(self, v, load=False): + """ + Setter method for cpu, mapped from YANG variable /interfaces/interface/state/cpu (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_cpu is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_cpu() directly. + + YANG Description: When set to true, the interface is for traffic +that is handled by the system CPU, sometimes also called the +control plane interface. On systems that represent the CPU +interface as an Ethernet interface, for example, this leaf +should be used to distinguish the CPU interface from dataplane +interfaces. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """cpu must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False)""", + }) + + self.__cpu = t + if hasattr(self, '_set'): + self._set() + + def _unset_cpu(self): + self.__cpu = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + + + def _get_counters(self): + """ + Getter method for counters, mapped from YANG variable /interfaces/interface/state/counters (container) + + YANG Description: A collection of interface-related statistics objects. + """ + return self.__counters + + def _set_counters(self, v, load=False): + """ + Setter method for counters, mapped from YANG variable /interfaces/interface/state/counters (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_counters is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_counters() directly. + + YANG Description: A collection of interface-related statistics objects. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """counters must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=False)""", + }) + + self.__counters = t + if hasattr(self, '_set'): + self._set() + + def _unset_counters(self): + self.__counters = YANGDynClass(base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=False) + + + def _get_hardware_port(self): + """ + Getter method for hardware_port, mapped from YANG variable /interfaces/interface/state/hardware_port (leafref) + + YANG Description: For non-channelized interfaces, references the hardware port +corresponding to the base interface. + """ + return self.__hardware_port + + def _set_hardware_port(self, v, load=False): + """ + Setter method for hardware_port, mapped from YANG variable /interfaces/interface/state/hardware_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_hardware_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_hardware_port() directly. + + YANG Description: For non-channelized interfaces, references the hardware port +corresponding to the base interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="hardware-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """hardware_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="hardware-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=False)""", + }) + + self.__hardware_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_hardware_port(self): + self.__hardware_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="hardware-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/platform/port', defining_module='openconfig-platform-port', yang_type='leafref', is_config=False) + + name = __builtin__.property(_get_name) + type = __builtin__.property(_get_type) + mtu = __builtin__.property(_get_mtu) + loopback_mode = __builtin__.property(_get_loopback_mode) + description = __builtin__.property(_get_description) + enabled = __builtin__.property(_get_enabled) + ifindex = __builtin__.property(_get_ifindex) + admin_status = __builtin__.property(_get_admin_status) + oper_status = __builtin__.property(_get_oper_status) + last_change = __builtin__.property(_get_last_change) + logical = __builtin__.property(_get_logical) + management = __builtin__.property(_get_management) + cpu = __builtin__.property(_get_cpu) + counters = __builtin__.property(_get_counters) + hardware_port = __builtin__.property(_get_hardware_port) + + + _pyangbind_elements = OrderedDict([('name', name), ('type', type), ('mtu', mtu), ('loopback_mode', loopback_mode), ('description', description), ('enabled', enabled), ('ifindex', ifindex), ('admin_status', admin_status), ('oper_status', oper_status), ('last_change', last_change), ('logical', logical), ('management', management), ('cpu', cpu), ('counters', counters), ('hardware_port', hardware_port), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/state/counters/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/state/counters/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..bdda9eb5484cac77f7bee914eac4c130431c4630 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/state/counters/__init__.py @@ -0,0 +1,1029 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class counters(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/state/counters. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A collection of interface-related statistics objects. + """ + __slots__ = ('_path_helper', '_extmethods', '__in_octets','__in_pkts','__in_unicast_pkts','__in_broadcast_pkts','__in_multicast_pkts','__in_discards','__in_errors','__in_unknown_protos','__in_fcs_errors','__out_octets','__out_pkts','__out_unicast_pkts','__out_broadcast_pkts','__out_multicast_pkts','__out_discards','__out_errors','__carrier_transitions','__last_clear',) + + _yang_name = 'counters' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__in_octets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_unicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_broadcast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_multicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_discards = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_unknown_protos = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unknown-protos", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_fcs_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fcs-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_octets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_unicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_broadcast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_multicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_discards = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__carrier_transitions = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="carrier-transitions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__last_clear = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-clear", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'state', 'counters'] + + def _get_in_octets(self): + """ + Getter method for in_octets, mapped from YANG variable /interfaces/interface/state/counters/in_octets (oc-yang:counter64) + + YANG Description: The total number of octets received on the interface, +including framing characters. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_octets + + def _set_in_octets(self, v, load=False): + """ + Setter method for in_octets, mapped from YANG variable /interfaces/interface/state/counters/in_octets (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_octets is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_octets() directly. + + YANG Description: The total number of octets received on the interface, +including framing characters. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_octets must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_octets = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_octets(self): + self.__in_octets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_pkts(self): + """ + Getter method for in_pkts, mapped from YANG variable /interfaces/interface/state/counters/in_pkts (oc-yang:counter64) + + YANG Description: The total number of packets received on the interface, +including all unicast, multicast, broadcast and bad packets +etc. + """ + return self.__in_pkts + + def _set_in_pkts(self, v, load=False): + """ + Setter method for in_pkts, mapped from YANG variable /interfaces/interface/state/counters/in_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_pkts() directly. + + YANG Description: The total number of packets received on the interface, +including all unicast, multicast, broadcast and bad packets +etc. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_pkts(self): + self.__in_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_unicast_pkts(self): + """ + Getter method for in_unicast_pkts, mapped from YANG variable /interfaces/interface/state/counters/in_unicast_pkts (oc-yang:counter64) + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were not addressed to a +multicast or broadcast address at this sub-layer. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_unicast_pkts + + def _set_in_unicast_pkts(self, v, load=False): + """ + Setter method for in_unicast_pkts, mapped from YANG variable /interfaces/interface/state/counters/in_unicast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_unicast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_unicast_pkts() directly. + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were not addressed to a +multicast or broadcast address at this sub-layer. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_unicast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_unicast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_unicast_pkts(self): + self.__in_unicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_broadcast_pkts(self): + """ + Getter method for in_broadcast_pkts, mapped from YANG variable /interfaces/interface/state/counters/in_broadcast_pkts (oc-yang:counter64) + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were addressed to a broadcast +address at this sub-layer. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_broadcast_pkts + + def _set_in_broadcast_pkts(self, v, load=False): + """ + Setter method for in_broadcast_pkts, mapped from YANG variable /interfaces/interface/state/counters/in_broadcast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_broadcast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_broadcast_pkts() directly. + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were addressed to a broadcast +address at this sub-layer. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_broadcast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_broadcast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_broadcast_pkts(self): + self.__in_broadcast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_multicast_pkts(self): + """ + Getter method for in_multicast_pkts, mapped from YANG variable /interfaces/interface/state/counters/in_multicast_pkts (oc-yang:counter64) + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were addressed to a multicast +address at this sub-layer. For a MAC-layer protocol, +this includes both Group and Functional addresses. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_multicast_pkts + + def _set_in_multicast_pkts(self, v, load=False): + """ + Setter method for in_multicast_pkts, mapped from YANG variable /interfaces/interface/state/counters/in_multicast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_multicast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_multicast_pkts() directly. + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were addressed to a multicast +address at this sub-layer. For a MAC-layer protocol, +this includes both Group and Functional addresses. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_multicast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_multicast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_multicast_pkts(self): + self.__in_multicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_discards(self): + """ + Getter method for in_discards, mapped from YANG variable /interfaces/interface/state/counters/in_discards (oc-yang:counter64) + + YANG Description: The number of inbound packets that were chosen to be +discarded even though no errors had been detected to +prevent their being deliverable to a higher-layer +protocol. One possible reason for discarding such a +packet could be to free up buffer space. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_discards + + def _set_in_discards(self, v, load=False): + """ + Setter method for in_discards, mapped from YANG variable /interfaces/interface/state/counters/in_discards (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_discards is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_discards() directly. + + YANG Description: The number of inbound packets that were chosen to be +discarded even though no errors had been detected to +prevent their being deliverable to a higher-layer +protocol. One possible reason for discarding such a +packet could be to free up buffer space. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_discards must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_discards = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_discards(self): + self.__in_discards = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_errors(self): + """ + Getter method for in_errors, mapped from YANG variable /interfaces/interface/state/counters/in_errors (oc-yang:counter64) + + YANG Description: For packet-oriented interfaces, the number of inbound +packets that contained errors preventing them from being +deliverable to a higher-layer protocol. For character- +oriented or fixed-length interfaces, the number of +inbound transmission units that contained errors +preventing them from being deliverable to a higher-layer +protocol. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_errors + + def _set_in_errors(self, v, load=False): + """ + Setter method for in_errors, mapped from YANG variable /interfaces/interface/state/counters/in_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_errors() directly. + + YANG Description: For packet-oriented interfaces, the number of inbound +packets that contained errors preventing them from being +deliverable to a higher-layer protocol. For character- +oriented or fixed-length interfaces, the number of +inbound transmission units that contained errors +preventing them from being deliverable to a higher-layer +protocol. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_errors(self): + self.__in_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_unknown_protos(self): + """ + Getter method for in_unknown_protos, mapped from YANG variable /interfaces/interface/state/counters/in_unknown_protos (oc-yang:counter64) + + YANG Description: For packet-oriented interfaces, the number of packets +received via the interface that were discarded because +of an unknown or unsupported protocol. For +character-oriented or fixed-length interfaces that +support protocol multiplexing, the number of +transmission units received via the interface that were +discarded because of an unknown or unsupported protocol. +For any interface that does not support protocol +multiplexing, this counter is not present. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_unknown_protos + + def _set_in_unknown_protos(self, v, load=False): + """ + Setter method for in_unknown_protos, mapped from YANG variable /interfaces/interface/state/counters/in_unknown_protos (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_unknown_protos is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_unknown_protos() directly. + + YANG Description: For packet-oriented interfaces, the number of packets +received via the interface that were discarded because +of an unknown or unsupported protocol. For +character-oriented or fixed-length interfaces that +support protocol multiplexing, the number of +transmission units received via the interface that were +discarded because of an unknown or unsupported protocol. +For any interface that does not support protocol +multiplexing, this counter is not present. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unknown-protos", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_unknown_protos must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unknown-protos", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_unknown_protos = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_unknown_protos(self): + self.__in_unknown_protos = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unknown-protos", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_fcs_errors(self): + """ + Getter method for in_fcs_errors, mapped from YANG variable /interfaces/interface/state/counters/in_fcs_errors (oc-yang:counter64) + + YANG Description: Number of received packets which had errors in the +frame check sequence (FCS), i.e., framing errors. + +Discontinuities in the value of this counter can occur +when the device is re-initialization as indicated by the +value of 'last-clear'. + """ + return self.__in_fcs_errors + + def _set_in_fcs_errors(self, v, load=False): + """ + Setter method for in_fcs_errors, mapped from YANG variable /interfaces/interface/state/counters/in_fcs_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_fcs_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_fcs_errors() directly. + + YANG Description: Number of received packets which had errors in the +frame check sequence (FCS), i.e., framing errors. + +Discontinuities in the value of this counter can occur +when the device is re-initialization as indicated by the +value of 'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fcs-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_fcs_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fcs-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_fcs_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_fcs_errors(self): + self.__in_fcs_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fcs-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_octets(self): + """ + Getter method for out_octets, mapped from YANG variable /interfaces/interface/state/counters/out_octets (oc-yang:counter64) + + YANG Description: The total number of octets transmitted out of the +interface, including framing characters. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_octets + + def _set_out_octets(self, v, load=False): + """ + Setter method for out_octets, mapped from YANG variable /interfaces/interface/state/counters/out_octets (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_octets is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_octets() directly. + + YANG Description: The total number of octets transmitted out of the +interface, including framing characters. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_octets must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_octets = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_octets(self): + self.__out_octets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_pkts(self): + """ + Getter method for out_pkts, mapped from YANG variable /interfaces/interface/state/counters/out_pkts (oc-yang:counter64) + + YANG Description: The total number of packets transmitted out of the +interface, including all unicast, multicast, broadcast, +and bad packets etc. + """ + return self.__out_pkts + + def _set_out_pkts(self, v, load=False): + """ + Setter method for out_pkts, mapped from YANG variable /interfaces/interface/state/counters/out_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_pkts() directly. + + YANG Description: The total number of packets transmitted out of the +interface, including all unicast, multicast, broadcast, +and bad packets etc. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_pkts(self): + self.__out_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_unicast_pkts(self): + """ + Getter method for out_unicast_pkts, mapped from YANG variable /interfaces/interface/state/counters/out_unicast_pkts (oc-yang:counter64) + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were not addressed +to a multicast or broadcast address at this sub-layer, +including those that were discarded or not sent. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_unicast_pkts + + def _set_out_unicast_pkts(self, v, load=False): + """ + Setter method for out_unicast_pkts, mapped from YANG variable /interfaces/interface/state/counters/out_unicast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_unicast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_unicast_pkts() directly. + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were not addressed +to a multicast or broadcast address at this sub-layer, +including those that were discarded or not sent. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_unicast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_unicast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_unicast_pkts(self): + self.__out_unicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_broadcast_pkts(self): + """ + Getter method for out_broadcast_pkts, mapped from YANG variable /interfaces/interface/state/counters/out_broadcast_pkts (oc-yang:counter64) + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were addressed to a +broadcast address at this sub-layer, including those +that were discarded or not sent. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_broadcast_pkts + + def _set_out_broadcast_pkts(self, v, load=False): + """ + Setter method for out_broadcast_pkts, mapped from YANG variable /interfaces/interface/state/counters/out_broadcast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_broadcast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_broadcast_pkts() directly. + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were addressed to a +broadcast address at this sub-layer, including those +that were discarded or not sent. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_broadcast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_broadcast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_broadcast_pkts(self): + self.__out_broadcast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_multicast_pkts(self): + """ + Getter method for out_multicast_pkts, mapped from YANG variable /interfaces/interface/state/counters/out_multicast_pkts (oc-yang:counter64) + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were addressed to a +multicast address at this sub-layer, including those +that were discarded or not sent. For a MAC-layer +protocol, this includes both Group and Functional +addresses. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_multicast_pkts + + def _set_out_multicast_pkts(self, v, load=False): + """ + Setter method for out_multicast_pkts, mapped from YANG variable /interfaces/interface/state/counters/out_multicast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_multicast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_multicast_pkts() directly. + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were addressed to a +multicast address at this sub-layer, including those +that were discarded or not sent. For a MAC-layer +protocol, this includes both Group and Functional +addresses. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_multicast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_multicast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_multicast_pkts(self): + self.__out_multicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_discards(self): + """ + Getter method for out_discards, mapped from YANG variable /interfaces/interface/state/counters/out_discards (oc-yang:counter64) + + YANG Description: The number of outbound packets that were chosen to be +discarded even though no errors had been detected to +prevent their being transmitted. One possible reason +for discarding such a packet could be to free up buffer +space. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_discards + + def _set_out_discards(self, v, load=False): + """ + Setter method for out_discards, mapped from YANG variable /interfaces/interface/state/counters/out_discards (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_discards is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_discards() directly. + + YANG Description: The number of outbound packets that were chosen to be +discarded even though no errors had been detected to +prevent their being transmitted. One possible reason +for discarding such a packet could be to free up buffer +space. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_discards must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_discards = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_discards(self): + self.__out_discards = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_errors(self): + """ + Getter method for out_errors, mapped from YANG variable /interfaces/interface/state/counters/out_errors (oc-yang:counter64) + + YANG Description: For packet-oriented interfaces, the number of outbound +packets that could not be transmitted because of errors. +For character-oriented or fixed-length interfaces, the +number of outbound transmission units that could not be +transmitted because of errors. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_errors + + def _set_out_errors(self, v, load=False): + """ + Setter method for out_errors, mapped from YANG variable /interfaces/interface/state/counters/out_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_errors() directly. + + YANG Description: For packet-oriented interfaces, the number of outbound +packets that could not be transmitted because of errors. +For character-oriented or fixed-length interfaces, the +number of outbound transmission units that could not be +transmitted because of errors. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_errors(self): + self.__out_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_carrier_transitions(self): + """ + Getter method for carrier_transitions, mapped from YANG variable /interfaces/interface/state/counters/carrier_transitions (oc-yang:counter64) + + YANG Description: Number of times the interface state has transitioned +between up and down since the time the device restarted +or the last-clear time, whichever is most recent. + """ + return self.__carrier_transitions + + def _set_carrier_transitions(self, v, load=False): + """ + Setter method for carrier_transitions, mapped from YANG variable /interfaces/interface/state/counters/carrier_transitions (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_carrier_transitions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_carrier_transitions() directly. + + YANG Description: Number of times the interface state has transitioned +between up and down since the time the device restarted +or the last-clear time, whichever is most recent. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="carrier-transitions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """carrier_transitions must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="carrier-transitions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__carrier_transitions = t + if hasattr(self, '_set'): + self._set() + + def _unset_carrier_transitions(self): + self.__carrier_transitions = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="carrier-transitions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_last_clear(self): + """ + Getter method for last_clear, mapped from YANG variable /interfaces/interface/state/counters/last_clear (oc-types:timeticks64) + + YANG Description: Timestamp of the last time the interface counters were +cleared. + +The value is the timestamp in nanoseconds relative to +the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + return self.__last_clear + + def _set_last_clear(self, v, load=False): + """ + Setter method for last_clear, mapped from YANG variable /interfaces/interface/state/counters/last_clear (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_clear is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_clear() directly. + + YANG Description: Timestamp of the last time the interface counters were +cleared. + +The value is the timestamp in nanoseconds relative to +the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-clear", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_clear must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-clear", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_clear = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_clear(self): + self.__last_clear = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-clear", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + + in_octets = __builtin__.property(_get_in_octets) + in_pkts = __builtin__.property(_get_in_pkts) + in_unicast_pkts = __builtin__.property(_get_in_unicast_pkts) + in_broadcast_pkts = __builtin__.property(_get_in_broadcast_pkts) + in_multicast_pkts = __builtin__.property(_get_in_multicast_pkts) + in_discards = __builtin__.property(_get_in_discards) + in_errors = __builtin__.property(_get_in_errors) + in_unknown_protos = __builtin__.property(_get_in_unknown_protos) + in_fcs_errors = __builtin__.property(_get_in_fcs_errors) + out_octets = __builtin__.property(_get_out_octets) + out_pkts = __builtin__.property(_get_out_pkts) + out_unicast_pkts = __builtin__.property(_get_out_unicast_pkts) + out_broadcast_pkts = __builtin__.property(_get_out_broadcast_pkts) + out_multicast_pkts = __builtin__.property(_get_out_multicast_pkts) + out_discards = __builtin__.property(_get_out_discards) + out_errors = __builtin__.property(_get_out_errors) + carrier_transitions = __builtin__.property(_get_carrier_transitions) + last_clear = __builtin__.property(_get_last_clear) + + + _pyangbind_elements = OrderedDict([('in_octets', in_octets), ('in_pkts', in_pkts), ('in_unicast_pkts', in_unicast_pkts), ('in_broadcast_pkts', in_broadcast_pkts), ('in_multicast_pkts', in_multicast_pkts), ('in_discards', in_discards), ('in_errors', in_errors), ('in_unknown_protos', in_unknown_protos), ('in_fcs_errors', in_fcs_errors), ('out_octets', out_octets), ('out_pkts', out_pkts), ('out_unicast_pkts', out_unicast_pkts), ('out_broadcast_pkts', out_broadcast_pkts), ('out_multicast_pkts', out_multicast_pkts), ('out_discards', out_discards), ('out_errors', out_errors), ('carrier_transitions', carrier_transitions), ('last_clear', last_clear), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..0145b376a03bf233ef31b50261f70d58241e9a66 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/__init__.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import subinterface +class subinterfaces(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/subinterfaces. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Enclosing container for the list of subinterfaces associated +with a physical interface + """ + __slots__ = ('_path_helper', '_extmethods', '__subinterface',) + + _yang_name = 'subinterfaces' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__subinterface = YANGDynClass(base=YANGListType("index",subinterface.subinterface, yang_name="subinterface", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="subinterface", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'subinterfaces'] + + def _get_subinterface(self): + """ + Getter method for subinterface, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface (list) + + YANG Description: The list of subinterfaces (logical interfaces) associated +with a physical interface + """ + return self.__subinterface + + def _set_subinterface(self, v, load=False): + """ + Setter method for subinterface, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_subinterface is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_subinterface() directly. + + YANG Description: The list of subinterfaces (logical interfaces) associated +with a physical interface + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("index",subinterface.subinterface, yang_name="subinterface", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="subinterface", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """subinterface must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("index",subinterface.subinterface, yang_name="subinterface", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="subinterface", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='list', is_config=True)""", + }) + + self.__subinterface = t + if hasattr(self, '_set'): + self._set() + + def _unset_subinterface(self): + self.__subinterface = YANGDynClass(base=YANGListType("index",subinterface.subinterface, yang_name="subinterface", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='index', extensions=None), is_container='list', yang_name="subinterface", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='list', is_config=True) + + subinterface = __builtin__.property(_get_subinterface, _set_subinterface) + + + _pyangbind_elements = OrderedDict([('subinterface', subinterface), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..b74e019a7552177737d6d1ad0425467f9ef5e526 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/__init__.py @@ -0,0 +1,202 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import config +from . import state +class subinterface(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/subinterfaces/subinterface. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: The list of subinterfaces (logical interfaces) associated +with a physical interface + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__config','__state',) + + _yang_name = 'subinterface' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='leafref', is_config=True) + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'subinterfaces', 'subinterface'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/index (leafref) + + YANG Description: The index number of the subinterface -- used to address +the logical interface + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/index (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index number of the subinterface -- used to address +the logical interface + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='leafref', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='leafref', is_config=True) + + + def _get_config(self): + """ + Getter method for config, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/config (container) + + YANG Description: Configurable items at the subinterface level + """ + return self.__config + + def _set_config(self, v, load=False): + """ + Setter method for config, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/config (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_config is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_config() directly. + + YANG Description: Configurable items at the subinterface level + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """config must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True)""", + }) + + self.__config = t + if hasattr(self, '_set'): + self._set() + + def _unset_config(self): + self.__config = YANGDynClass(base=config.config, is_container='container', yang_name="config", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + + def _get_state(self): + """ + Getter method for state, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state (container) + + YANG Description: Operational state data for logical interfaces + """ + return self.__state + + def _set_state(self, v, load=False): + """ + Setter method for state, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_state is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_state() directly. + + YANG Description: Operational state data for logical interfaces + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """state must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True)""", + }) + + self.__state = t + if hasattr(self, '_set'): + self._set() + + def _unset_state(self): + self.__state = YANGDynClass(base=state.state, is_container='container', yang_name="state", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + config = __builtin__.property(_get_config, _set_config) + state = __builtin__.property(_get_state, _set_state) + + + _pyangbind_elements = OrderedDict([('index', index), ('config', config), ('state', state), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/config/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/config/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..fb6262e5facf1d46a17eb9edce771ecd99575c17 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/config/__init__.py @@ -0,0 +1,268 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class config(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/subinterfaces/subinterface/config. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Configurable items at the subinterface level + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__description','__enabled',) + + _yang_name = 'config' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True) + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True) + self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'subinterfaces', 'subinterface', 'config'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/config/index (uint32) + + YANG Description: The index of the subinterface, or logical interface number. +On systems with no support for subinterfaces, or not using +subinterfaces, this value should default to 0, i.e., the +default subinterface. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/config/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the subinterface, or logical interface number. +On systems with no support for subinterfaces, or not using +subinterfaces, this value should default to 0, i.e., the +default subinterface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=True) + + + def _get_description(self): + """ + Getter method for description, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/config/description (string) + + YANG Description: A textual description of the interface. + +A server implementation MAY map this leaf to the ifAlias +MIB object. Such an implementation needs to use some +mechanism to handle the differences in size and characters +allowed between this leaf and ifAlias. The definition of +such a mechanism is outside the scope of this document. + +Since ifAlias is defined to be stored in non-volatile +storage, the MIB implementation MUST map ifAlias to the +value of 'description' in the persistently stored +datastore. + +Specifically, if the device supports ':startup', when +ifAlias is read the device MUST return the value of +'description' in the 'startup' datastore, and when it is +written, it MUST be written to the 'running' and 'startup' +datastores. Note that it is up to the implementation to + +decide whether to modify this single leaf in 'startup' or +perform an implicit copy-config from 'running' to +'startup'. + +If the device does not support ':startup', ifAlias MUST +be mapped to the 'description' leaf in the 'running' +datastore. + """ + return self.__description + + def _set_description(self, v, load=False): + """ + Setter method for description, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/config/description (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_description is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_description() directly. + + YANG Description: A textual description of the interface. + +A server implementation MAY map this leaf to the ifAlias +MIB object. Such an implementation needs to use some +mechanism to handle the differences in size and characters +allowed between this leaf and ifAlias. The definition of +such a mechanism is outside the scope of this document. + +Since ifAlias is defined to be stored in non-volatile +storage, the MIB implementation MUST map ifAlias to the +value of 'description' in the persistently stored +datastore. + +Specifically, if the device supports ':startup', when +ifAlias is read the device MUST return the value of +'description' in the 'startup' datastore, and when it is +written, it MUST be written to the 'running' and 'startup' +datastores. Note that it is up to the implementation to + +decide whether to modify this single leaf in 'startup' or +perform an implicit copy-config from 'running' to +'startup'. + +If the device does not support ':startup', ifAlias MUST +be mapped to the 'description' leaf in the 'running' +datastore. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """description must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True)""", + }) + + self.__description = t + if hasattr(self, '_set'): + self._set() + + def _unset_description(self): + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=True) + + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/config/enabled (boolean) + + YANG Description: This leaf contains the configured, desired state of the +interface. + +Systems that implement the IF-MIB use the value of this +leaf in the 'running' datastore to set +IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry +has been initialized, as described in RFC 2863. + +Changes in this leaf in the 'running' datastore are +reflected in ifAdminStatus, but if ifAdminStatus is +changed over SNMP, this leaf is not affected. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/config/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: This leaf contains the configured, desired state of the +interface. + +Systems that implement the IF-MIB use the value of this +leaf in the 'running' datastore to set +IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry +has been initialized, as described in RFC 2863. + +Changes in this leaf in the 'running' datastore are +reflected in ifAdminStatus, but if ifAdminStatus is +changed over SNMP, this leaf is not affected. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=True) + + index = __builtin__.property(_get_index, _set_index) + description = __builtin__.property(_get_description, _set_description) + enabled = __builtin__.property(_get_enabled, _set_enabled) + + + _pyangbind_elements = OrderedDict([('index', index), ('description', description), ('enabled', enabled), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/state/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/state/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..a40a3022793b2329361872906fca74829d38f711 --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/state/__init__.py @@ -0,0 +1,672 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +from . import counters +class state(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/subinterfaces/subinterface/state. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Operational state data for logical interfaces + """ + __slots__ = ('_path_helper', '_extmethods', '__index','__description','__enabled','__name','__ifindex','__admin_status','__oper_status','__last_change','__logical','__management','__cpu','__counters',) + + _yang_name = 'state' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + self.__ifindex = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ifindex", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {}, 'DOWN': {}, 'TESTING': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {'value': 1}, 'DOWN': {'value': 2}, 'TESTING': {'value': 3}, 'UNKNOWN': {'value': 4}, 'DORMANT': {'value': 5}, 'NOT_PRESENT': {'value': 6}, 'LOWER_LAYER_DOWN': {'value': 7}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + self.__last_change = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-change", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + self.__logical = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="logical", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + self.__management = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="management", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + self.__cpu = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + self.__counters = YANGDynClass(base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'subinterfaces', 'subinterface', 'state'] + + def _get_index(self): + """ + Getter method for index, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/index (uint32) + + YANG Description: The index of the subinterface, or logical interface number. +On systems with no support for subinterfaces, or not using +subinterfaces, this value should default to 0, i.e., the +default subinterface. + """ + return self.__index + + def _set_index(self, v, load=False): + """ + Setter method for index, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/index (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_index is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_index() directly. + + YANG Description: The index of the subinterface, or logical interface number. +On systems with no support for subinterfaces, or not using +subinterfaces, this value should default to 0, i.e., the +default subinterface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """index must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False)""", + }) + + self.__index = t + if hasattr(self, '_set'): + self._set() + + def _unset_index(self): + self.__index = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), default=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32)(0), is_leaf=True, yang_name="index", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + + + def _get_description(self): + """ + Getter method for description, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/description (string) + + YANG Description: A textual description of the interface. + +A server implementation MAY map this leaf to the ifAlias +MIB object. Such an implementation needs to use some +mechanism to handle the differences in size and characters +allowed between this leaf and ifAlias. The definition of +such a mechanism is outside the scope of this document. + +Since ifAlias is defined to be stored in non-volatile +storage, the MIB implementation MUST map ifAlias to the +value of 'description' in the persistently stored +datastore. + +Specifically, if the device supports ':startup', when +ifAlias is read the device MUST return the value of +'description' in the 'startup' datastore, and when it is +written, it MUST be written to the 'running' and 'startup' +datastores. Note that it is up to the implementation to + +decide whether to modify this single leaf in 'startup' or +perform an implicit copy-config from 'running' to +'startup'. + +If the device does not support ':startup', ifAlias MUST +be mapped to the 'description' leaf in the 'running' +datastore. + """ + return self.__description + + def _set_description(self, v, load=False): + """ + Setter method for description, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/description (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_description is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_description() directly. + + YANG Description: A textual description of the interface. + +A server implementation MAY map this leaf to the ifAlias +MIB object. Such an implementation needs to use some +mechanism to handle the differences in size and characters +allowed between this leaf and ifAlias. The definition of +such a mechanism is outside the scope of this document. + +Since ifAlias is defined to be stored in non-volatile +storage, the MIB implementation MUST map ifAlias to the +value of 'description' in the persistently stored +datastore. + +Specifically, if the device supports ':startup', when +ifAlias is read the device MUST return the value of +'description' in the 'startup' datastore, and when it is +written, it MUST be written to the 'running' and 'startup' +datastores. Note that it is up to the implementation to + +decide whether to modify this single leaf in 'startup' or +perform an implicit copy-config from 'running' to +'startup'. + +If the device does not support ':startup', ifAlias MUST +be mapped to the 'description' leaf in the 'running' +datastore. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """description must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False)""", + }) + + self.__description = t + if hasattr(self, '_set'): + self._set() + + def _unset_description(self): + self.__description = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="description", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + + + def _get_enabled(self): + """ + Getter method for enabled, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/enabled (boolean) + + YANG Description: This leaf contains the configured, desired state of the +interface. + +Systems that implement the IF-MIB use the value of this +leaf in the 'running' datastore to set +IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry +has been initialized, as described in RFC 2863. + +Changes in this leaf in the 'running' datastore are +reflected in ifAdminStatus, but if ifAdminStatus is +changed over SNMP, this leaf is not affected. + """ + return self.__enabled + + def _set_enabled(self, v, load=False): + """ + Setter method for enabled, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/enabled (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_enabled is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_enabled() directly. + + YANG Description: This leaf contains the configured, desired state of the +interface. + +Systems that implement the IF-MIB use the value of this +leaf in the 'running' datastore to set +IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry +has been initialized, as described in RFC 2863. + +Changes in this leaf in the 'running' datastore are +reflected in ifAdminStatus, but if ifAdminStatus is +changed over SNMP, this leaf is not affected. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """enabled must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False)""", + }) + + self.__enabled = t + if hasattr(self, '_set'): + self._set() + + def _unset_enabled(self): + self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("true"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + + + def _get_name(self): + """ + Getter method for name, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/name (string) + + YANG Description: The system-assigned name for the sub-interface. This MAY +be a combination of the base interface name and the +subinterface index, or some other convention used by the +system. + """ + return self.__name + + def _set_name(self, v, load=False): + """ + Setter method for name, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/name (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_name() directly. + + YANG Description: The system-assigned name for the sub-interface. This MAY +be a combination of the base interface name and the +subinterface index, or some other convention used by the +system. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """name must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False)""", + }) + + self.__name = t + if hasattr(self, '_set'): + self._set() + + def _unset_name(self): + self.__name = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='string', is_config=False) + + + def _get_ifindex(self): + """ + Getter method for ifindex, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/ifindex (uint32) + + YANG Description: System assigned number for each interface. Corresponds to +ifIndex object in SNMP Interface MIB + """ + return self.__ifindex + + def _set_ifindex(self, v, load=False): + """ + Setter method for ifindex, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/ifindex (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_ifindex is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_ifindex() directly. + + YANG Description: System assigned number for each interface. Corresponds to +ifIndex object in SNMP Interface MIB + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ifindex", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """ifindex must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ifindex", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False)""", + }) + + self.__ifindex = t + if hasattr(self, '_set'): + self._set() + + def _unset_ifindex(self): + self.__ifindex = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="ifindex", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='uint32', is_config=False) + + + def _get_admin_status(self): + """ + Getter method for admin_status, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/admin_status (enumeration) + + YANG Description: The desired state of the interface. In RFC 7223 this leaf +has the same read semantics as ifAdminStatus. Here, it +reflects the administrative state as set by enabling or +disabling the interface. + """ + return self.__admin_status + + def _set_admin_status(self, v, load=False): + """ + Setter method for admin_status, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/admin_status (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_admin_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_admin_status() directly. + + YANG Description: The desired state of the interface. In RFC 7223 this leaf +has the same read semantics as ifAdminStatus. Here, it +reflects the administrative state as set by enabling or +disabling the interface. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {}, 'DOWN': {}, 'TESTING': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """admin_status must be of a type compatible with enumeration""", + 'defined-type': "openconfig-interfaces:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {}, 'DOWN': {}, 'TESTING': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False)""", + }) + + self.__admin_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_admin_status(self): + self.__admin_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {}, 'DOWN': {}, 'TESTING': {}},), is_leaf=True, yang_name="admin-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + + + def _get_oper_status(self): + """ + Getter method for oper_status, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/oper_status (enumeration) + + YANG Description: The current operational state of the interface. + +This leaf has the same semantics as ifOperStatus. + """ + return self.__oper_status + + def _set_oper_status(self, v, load=False): + """ + Setter method for oper_status, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/oper_status (enumeration) + If this variable is read-only (config: false) in the + source YANG file, then _set_oper_status is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_oper_status() directly. + + YANG Description: The current operational state of the interface. + +This leaf has the same semantics as ifOperStatus. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {'value': 1}, 'DOWN': {'value': 2}, 'TESTING': {'value': 3}, 'UNKNOWN': {'value': 4}, 'DORMANT': {'value': 5}, 'NOT_PRESENT': {'value': 6}, 'LOWER_LAYER_DOWN': {'value': 7}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """oper_status must be of a type compatible with enumeration""", + 'defined-type': "openconfig-interfaces:enumeration", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {'value': 1}, 'DOWN': {'value': 2}, 'TESTING': {'value': 3}, 'UNKNOWN': {'value': 4}, 'DORMANT': {'value': 5}, 'NOT_PRESENT': {'value': 6}, 'LOWER_LAYER_DOWN': {'value': 7}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False)""", + }) + + self.__oper_status = t + if hasattr(self, '_set'): + self._set() + + def _unset_oper_status(self): + self.__oper_status = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'UP': {'value': 1}, 'DOWN': {'value': 2}, 'TESTING': {'value': 3}, 'UNKNOWN': {'value': 4}, 'DORMANT': {'value': 5}, 'NOT_PRESENT': {'value': 6}, 'LOWER_LAYER_DOWN': {'value': 7}},), is_leaf=True, yang_name="oper-status", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='enumeration', is_config=False) + + + def _get_last_change(self): + """ + Getter method for last_change, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/last_change (oc-types:timeticks64) + + YANG Description: This timestamp indicates the absolute time of the last +state change of the interface (e.g., up-to-down transition). +This is different than the SNMP ifLastChange object in the +standard interface MIB in that it is not relative to the +system boot time (i.e,. sysUpTime). + +The value is the timestamp in nanoseconds relative to +the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + return self.__last_change + + def _set_last_change(self, v, load=False): + """ + Setter method for last_change, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/last_change (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_change is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_change() directly. + + YANG Description: This timestamp indicates the absolute time of the last +state change of the interface (e.g., up-to-down transition). +This is different than the SNMP ifLastChange object in the +standard interface MIB in that it is not relative to the +system boot time (i.e,. sysUpTime). + +The value is the timestamp in nanoseconds relative to +the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-change", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_change must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-change", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_change = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_change(self): + self.__last_change = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-change", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + + + def _get_logical(self): + """ + Getter method for logical, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/logical (boolean) + + YANG Description: When set to true, the interface is a logical interface +which does not have an associated physical port or +channel on the system. + """ + return self.__logical + + def _set_logical(self, v, load=False): + """ + Setter method for logical, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/logical (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_logical is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_logical() directly. + + YANG Description: When set to true, the interface is a logical interface +which does not have an associated physical port or +channel on the system. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="logical", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """logical must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="logical", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False)""", + }) + + self.__logical = t + if hasattr(self, '_set'): + self._set() + + def _unset_logical(self): + self.__logical = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="logical", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + + + def _get_management(self): + """ + Getter method for management, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/management (boolean) + + YANG Description: When set to true, the interface is a dedicated +management interface that is not connected to dataplane +interfaces. It may be used to connect the system to an +out-of-band management network, for example. + """ + return self.__management + + def _set_management(self, v, load=False): + """ + Setter method for management, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/management (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_management is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_management() directly. + + YANG Description: When set to true, the interface is a dedicated +management interface that is not connected to dataplane +interfaces. It may be used to connect the system to an +out-of-band management network, for example. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="management", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """management must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="management", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False)""", + }) + + self.__management = t + if hasattr(self, '_set'): + self._set() + + def _unset_management(self): + self.__management = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="management", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + + + def _get_cpu(self): + """ + Getter method for cpu, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/cpu (boolean) + + YANG Description: When set to true, the interface is for traffic +that is handled by the system CPU, sometimes also called the +control plane interface. On systems that represent the CPU +interface as an Ethernet interface, for example, this leaf +should be used to distinguish the CPU interface from dataplane +interfaces. + """ + return self.__cpu + + def _set_cpu(self, v, load=False): + """ + Setter method for cpu, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/cpu (boolean) + If this variable is read-only (config: false) in the + source YANG file, then _set_cpu is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_cpu() directly. + + YANG Description: When set to true, the interface is for traffic +that is handled by the system CPU, sometimes also called the +control plane interface. On systems that represent the CPU +interface as an Ethernet interface, for example, this leaf +should be used to distinguish the CPU interface from dataplane +interfaces. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """cpu must be of a type compatible with boolean""", + 'defined-type': "boolean", + 'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False)""", + }) + + self.__cpu = t + if hasattr(self, '_set'): + self._set() + + def _unset_cpu(self): + self.__cpu = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="cpu", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='boolean', is_config=False) + + + def _get_counters(self): + """ + Getter method for counters, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters (container) + + YANG Description: A collection of interface-related statistics objects. + """ + return self.__counters + + def _set_counters(self, v, load=False): + """ + Setter method for counters, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_counters is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_counters() directly. + + YANG Description: A collection of interface-related statistics objects. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """counters must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=False)""", + }) + + self.__counters = t + if hasattr(self, '_set'): + self._set() + + def _unset_counters(self): + self.__counters = YANGDynClass(base=counters.counters, is_container='container', yang_name="counters", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='container', is_config=False) + + index = __builtin__.property(_get_index) + description = __builtin__.property(_get_description) + enabled = __builtin__.property(_get_enabled) + name = __builtin__.property(_get_name) + ifindex = __builtin__.property(_get_ifindex) + admin_status = __builtin__.property(_get_admin_status) + oper_status = __builtin__.property(_get_oper_status) + last_change = __builtin__.property(_get_last_change) + logical = __builtin__.property(_get_logical) + management = __builtin__.property(_get_management) + cpu = __builtin__.property(_get_cpu) + counters = __builtin__.property(_get_counters) + + + _pyangbind_elements = OrderedDict([('index', index), ('description', description), ('enabled', enabled), ('name', name), ('ifindex', ifindex), ('admin_status', admin_status), ('oper_status', oper_status), ('last_change', last_change), ('logical', logical), ('management', management), ('cpu', cpu), ('counters', counters), ]) + + diff --git a/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/state/counters/__init__.py b/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/state/counters/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..62bf19a4b7d365bec2537362c71efa19dfb043dc --- /dev/null +++ b/hackfest/netconf-oc/openconfig/interfaces/interface/subinterfaces/subinterface/state/counters/__init__.py @@ -0,0 +1,1029 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class counters(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module openconfig-interfaces - based on the path /interfaces/interface/subinterfaces/subinterface/state/counters. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: A collection of interface-related statistics objects. + """ + __slots__ = ('_path_helper', '_extmethods', '__in_octets','__in_pkts','__in_unicast_pkts','__in_broadcast_pkts','__in_multicast_pkts','__in_discards','__in_errors','__in_unknown_protos','__in_fcs_errors','__out_octets','__out_pkts','__out_unicast_pkts','__out_broadcast_pkts','__out_multicast_pkts','__out_discards','__out_errors','__carrier_transitions','__last_clear',) + + _yang_name = 'counters' + _yang_namespace = 'http://openconfig.net/yang/interfaces' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__in_octets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_unicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_broadcast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_multicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_discards = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_unknown_protos = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unknown-protos", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__in_fcs_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fcs-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_octets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_unicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_broadcast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_multicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_discards = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__out_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__carrier_transitions = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="carrier-transitions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + self.__last_clear = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-clear", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['interfaces', 'interface', 'subinterfaces', 'subinterface', 'state', 'counters'] + + def _get_in_octets(self): + """ + Getter method for in_octets, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_octets (oc-yang:counter64) + + YANG Description: The total number of octets received on the interface, +including framing characters. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_octets + + def _set_in_octets(self, v, load=False): + """ + Setter method for in_octets, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_octets (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_octets is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_octets() directly. + + YANG Description: The total number of octets received on the interface, +including framing characters. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_octets must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_octets = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_octets(self): + self.__in_octets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_pkts(self): + """ + Getter method for in_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_pkts (oc-yang:counter64) + + YANG Description: The total number of packets received on the interface, +including all unicast, multicast, broadcast and bad packets +etc. + """ + return self.__in_pkts + + def _set_in_pkts(self, v, load=False): + """ + Setter method for in_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_pkts() directly. + + YANG Description: The total number of packets received on the interface, +including all unicast, multicast, broadcast and bad packets +etc. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_pkts(self): + self.__in_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_unicast_pkts(self): + """ + Getter method for in_unicast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_unicast_pkts (oc-yang:counter64) + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were not addressed to a +multicast or broadcast address at this sub-layer. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_unicast_pkts + + def _set_in_unicast_pkts(self, v, load=False): + """ + Setter method for in_unicast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_unicast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_unicast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_unicast_pkts() directly. + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were not addressed to a +multicast or broadcast address at this sub-layer. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_unicast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_unicast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_unicast_pkts(self): + self.__in_unicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_broadcast_pkts(self): + """ + Getter method for in_broadcast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_broadcast_pkts (oc-yang:counter64) + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were addressed to a broadcast +address at this sub-layer. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_broadcast_pkts + + def _set_in_broadcast_pkts(self, v, load=False): + """ + Setter method for in_broadcast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_broadcast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_broadcast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_broadcast_pkts() directly. + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were addressed to a broadcast +address at this sub-layer. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_broadcast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_broadcast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_broadcast_pkts(self): + self.__in_broadcast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_multicast_pkts(self): + """ + Getter method for in_multicast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_multicast_pkts (oc-yang:counter64) + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were addressed to a multicast +address at this sub-layer. For a MAC-layer protocol, +this includes both Group and Functional addresses. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_multicast_pkts + + def _set_in_multicast_pkts(self, v, load=False): + """ + Setter method for in_multicast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_multicast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_multicast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_multicast_pkts() directly. + + YANG Description: The number of packets, delivered by this sub-layer to a +higher (sub-)layer, that were addressed to a multicast +address at this sub-layer. For a MAC-layer protocol, +this includes both Group and Functional addresses. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_multicast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_multicast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_multicast_pkts(self): + self.__in_multicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_discards(self): + """ + Getter method for in_discards, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_discards (oc-yang:counter64) + + YANG Description: The number of inbound packets that were chosen to be +discarded even though no errors had been detected to +prevent their being deliverable to a higher-layer +protocol. One possible reason for discarding such a +packet could be to free up buffer space. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_discards + + def _set_in_discards(self, v, load=False): + """ + Setter method for in_discards, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_discards (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_discards is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_discards() directly. + + YANG Description: The number of inbound packets that were chosen to be +discarded even though no errors had been detected to +prevent their being deliverable to a higher-layer +protocol. One possible reason for discarding such a +packet could be to free up buffer space. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_discards must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_discards = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_discards(self): + self.__in_discards = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_errors(self): + """ + Getter method for in_errors, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_errors (oc-yang:counter64) + + YANG Description: For packet-oriented interfaces, the number of inbound +packets that contained errors preventing them from being +deliverable to a higher-layer protocol. For character- +oriented or fixed-length interfaces, the number of +inbound transmission units that contained errors +preventing them from being deliverable to a higher-layer +protocol. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_errors + + def _set_in_errors(self, v, load=False): + """ + Setter method for in_errors, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_errors() directly. + + YANG Description: For packet-oriented interfaces, the number of inbound +packets that contained errors preventing them from being +deliverable to a higher-layer protocol. For character- +oriented or fixed-length interfaces, the number of +inbound transmission units that contained errors +preventing them from being deliverable to a higher-layer +protocol. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_errors(self): + self.__in_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_unknown_protos(self): + """ + Getter method for in_unknown_protos, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_unknown_protos (oc-yang:counter64) + + YANG Description: For packet-oriented interfaces, the number of packets +received via the interface that were discarded because +of an unknown or unsupported protocol. For +character-oriented or fixed-length interfaces that +support protocol multiplexing, the number of +transmission units received via the interface that were +discarded because of an unknown or unsupported protocol. +For any interface that does not support protocol +multiplexing, this counter is not present. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__in_unknown_protos + + def _set_in_unknown_protos(self, v, load=False): + """ + Setter method for in_unknown_protos, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_unknown_protos (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_unknown_protos is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_unknown_protos() directly. + + YANG Description: For packet-oriented interfaces, the number of packets +received via the interface that were discarded because +of an unknown or unsupported protocol. For +character-oriented or fixed-length interfaces that +support protocol multiplexing, the number of +transmission units received via the interface that were +discarded because of an unknown or unsupported protocol. +For any interface that does not support protocol +multiplexing, this counter is not present. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unknown-protos", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_unknown_protos must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unknown-protos", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_unknown_protos = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_unknown_protos(self): + self.__in_unknown_protos = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-unknown-protos", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_in_fcs_errors(self): + """ + Getter method for in_fcs_errors, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_fcs_errors (oc-yang:counter64) + + YANG Description: Number of received packets which had errors in the +frame check sequence (FCS), i.e., framing errors. + +Discontinuities in the value of this counter can occur +when the device is re-initialization as indicated by the +value of 'last-clear'. + """ + return self.__in_fcs_errors + + def _set_in_fcs_errors(self, v, load=False): + """ + Setter method for in_fcs_errors, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/in_fcs_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_in_fcs_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_in_fcs_errors() directly. + + YANG Description: Number of received packets which had errors in the +frame check sequence (FCS), i.e., framing errors. + +Discontinuities in the value of this counter can occur +when the device is re-initialization as indicated by the +value of 'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fcs-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """in_fcs_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fcs-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__in_fcs_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_in_fcs_errors(self): + self.__in_fcs_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="in-fcs-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_octets(self): + """ + Getter method for out_octets, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_octets (oc-yang:counter64) + + YANG Description: The total number of octets transmitted out of the +interface, including framing characters. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_octets + + def _set_out_octets(self, v, load=False): + """ + Setter method for out_octets, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_octets (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_octets is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_octets() directly. + + YANG Description: The total number of octets transmitted out of the +interface, including framing characters. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_octets must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_octets = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_octets(self): + self.__out_octets = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-octets", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_pkts(self): + """ + Getter method for out_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_pkts (oc-yang:counter64) + + YANG Description: The total number of packets transmitted out of the +interface, including all unicast, multicast, broadcast, +and bad packets etc. + """ + return self.__out_pkts + + def _set_out_pkts(self, v, load=False): + """ + Setter method for out_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_pkts() directly. + + YANG Description: The total number of packets transmitted out of the +interface, including all unicast, multicast, broadcast, +and bad packets etc. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_pkts(self): + self.__out_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_unicast_pkts(self): + """ + Getter method for out_unicast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_unicast_pkts (oc-yang:counter64) + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were not addressed +to a multicast or broadcast address at this sub-layer, +including those that were discarded or not sent. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_unicast_pkts + + def _set_out_unicast_pkts(self, v, load=False): + """ + Setter method for out_unicast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_unicast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_unicast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_unicast_pkts() directly. + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were not addressed +to a multicast or broadcast address at this sub-layer, +including those that were discarded or not sent. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_unicast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_unicast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_unicast_pkts(self): + self.__out_unicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-unicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_broadcast_pkts(self): + """ + Getter method for out_broadcast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_broadcast_pkts (oc-yang:counter64) + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were addressed to a +broadcast address at this sub-layer, including those +that were discarded or not sent. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_broadcast_pkts + + def _set_out_broadcast_pkts(self, v, load=False): + """ + Setter method for out_broadcast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_broadcast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_broadcast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_broadcast_pkts() directly. + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were addressed to a +broadcast address at this sub-layer, including those +that were discarded or not sent. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_broadcast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_broadcast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_broadcast_pkts(self): + self.__out_broadcast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-broadcast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_multicast_pkts(self): + """ + Getter method for out_multicast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_multicast_pkts (oc-yang:counter64) + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were addressed to a +multicast address at this sub-layer, including those +that were discarded or not sent. For a MAC-layer +protocol, this includes both Group and Functional +addresses. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_multicast_pkts + + def _set_out_multicast_pkts(self, v, load=False): + """ + Setter method for out_multicast_pkts, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_multicast_pkts (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_multicast_pkts is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_multicast_pkts() directly. + + YANG Description: The total number of packets that higher-level protocols +requested be transmitted, and that were addressed to a +multicast address at this sub-layer, including those +that were discarded or not sent. For a MAC-layer +protocol, this includes both Group and Functional +addresses. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_multicast_pkts must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_multicast_pkts = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_multicast_pkts(self): + self.__out_multicast_pkts = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-multicast-pkts", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_discards(self): + """ + Getter method for out_discards, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_discards (oc-yang:counter64) + + YANG Description: The number of outbound packets that were chosen to be +discarded even though no errors had been detected to +prevent their being transmitted. One possible reason +for discarding such a packet could be to free up buffer +space. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_discards + + def _set_out_discards(self, v, load=False): + """ + Setter method for out_discards, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_discards (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_discards is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_discards() directly. + + YANG Description: The number of outbound packets that were chosen to be +discarded even though no errors had been detected to +prevent their being transmitted. One possible reason +for discarding such a packet could be to free up buffer +space. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_discards must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_discards = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_discards(self): + self.__out_discards = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-discards", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_out_errors(self): + """ + Getter method for out_errors, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_errors (oc-yang:counter64) + + YANG Description: For packet-oriented interfaces, the number of outbound +packets that could not be transmitted because of errors. +For character-oriented or fixed-length interfaces, the +number of outbound transmission units that could not be +transmitted because of errors. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + return self.__out_errors + + def _set_out_errors(self, v, load=False): + """ + Setter method for out_errors, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/out_errors (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_out_errors is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_out_errors() directly. + + YANG Description: For packet-oriented interfaces, the number of outbound +packets that could not be transmitted because of errors. +For character-oriented or fixed-length interfaces, the +number of outbound transmission units that could not be +transmitted because of errors. + +Discontinuities in the value of this counter can occur +at re-initialization of the management system, and at +other times as indicated by the value of +'last-clear'. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """out_errors must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__out_errors = t + if hasattr(self, '_set'): + self._set() + + def _unset_out_errors(self): + self.__out_errors = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="out-errors", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_carrier_transitions(self): + """ + Getter method for carrier_transitions, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/carrier_transitions (oc-yang:counter64) + + YANG Description: Number of times the interface state has transitioned +between up and down since the time the device restarted +or the last-clear time, whichever is most recent. + """ + return self.__carrier_transitions + + def _set_carrier_transitions(self, v, load=False): + """ + Setter method for carrier_transitions, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/carrier_transitions (oc-yang:counter64) + If this variable is read-only (config: false) in the + source YANG file, then _set_carrier_transitions is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_carrier_transitions() directly. + + YANG Description: Number of times the interface state has transitioned +between up and down since the time the device restarted +or the last-clear time, whichever is most recent. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="carrier-transitions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """carrier_transitions must be of a type compatible with oc-yang:counter64""", + 'defined-type': "oc-yang:counter64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="carrier-transitions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False)""", + }) + + self.__carrier_transitions = t + if hasattr(self, '_set'): + self._set() + + def _unset_carrier_transitions(self): + self.__carrier_transitions = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="carrier-transitions", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-yang:counter64', is_config=False) + + + def _get_last_clear(self): + """ + Getter method for last_clear, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/last_clear (oc-types:timeticks64) + + YANG Description: Timestamp of the last time the interface counters were +cleared. + +The value is the timestamp in nanoseconds relative to +the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + return self.__last_clear + + def _set_last_clear(self, v, load=False): + """ + Setter method for last_clear, mapped from YANG variable /interfaces/interface/subinterfaces/subinterface/state/counters/last_clear (oc-types:timeticks64) + If this variable is read-only (config: false) in the + source YANG file, then _set_last_clear is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_last_clear() directly. + + YANG Description: Timestamp of the last time the interface counters were +cleared. + +The value is the timestamp in nanoseconds relative to +the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-clear", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """last_clear must be of a type compatible with oc-types:timeticks64""", + 'defined-type': "oc-types:timeticks64", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-clear", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False)""", + }) + + self.__last_clear = t + if hasattr(self, '_set'): + self._set() + + def _unset_last_clear(self): + self.__last_clear = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..18446744073709551615']}, int_size=64), is_leaf=True, yang_name="last-clear", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/interfaces', defining_module='openconfig-interfaces', yang_type='oc-types:timeticks64', is_config=False) + + in_octets = __builtin__.property(_get_in_octets) + in_pkts = __builtin__.property(_get_in_pkts) + in_unicast_pkts = __builtin__.property(_get_in_unicast_pkts) + in_broadcast_pkts = __builtin__.property(_get_in_broadcast_pkts) + in_multicast_pkts = __builtin__.property(_get_in_multicast_pkts) + in_discards = __builtin__.property(_get_in_discards) + in_errors = __builtin__.property(_get_in_errors) + in_unknown_protos = __builtin__.property(_get_in_unknown_protos) + in_fcs_errors = __builtin__.property(_get_in_fcs_errors) + out_octets = __builtin__.property(_get_out_octets) + out_pkts = __builtin__.property(_get_out_pkts) + out_unicast_pkts = __builtin__.property(_get_out_unicast_pkts) + out_broadcast_pkts = __builtin__.property(_get_out_broadcast_pkts) + out_multicast_pkts = __builtin__.property(_get_out_multicast_pkts) + out_discards = __builtin__.property(_get_out_discards) + out_errors = __builtin__.property(_get_out_errors) + carrier_transitions = __builtin__.property(_get_carrier_transitions) + last_clear = __builtin__.property(_get_last_clear) + + + _pyangbind_elements = OrderedDict([('in_octets', in_octets), ('in_pkts', in_pkts), ('in_unicast_pkts', in_unicast_pkts), ('in_broadcast_pkts', in_broadcast_pkts), ('in_multicast_pkts', in_multicast_pkts), ('in_discards', in_discards), ('in_errors', in_errors), ('in_unknown_protos', in_unknown_protos), ('in_fcs_errors', in_fcs_errors), ('out_octets', out_octets), ('out_pkts', out_pkts), ('out_unicast_pkts', out_unicast_pkts), ('out_broadcast_pkts', out_broadcast_pkts), ('out_multicast_pkts', out_multicast_pkts), ('out_discards', out_discards), ('out_errors', out_errors), ('carrier_transitions', carrier_transitions), ('last_clear', last_clear), ]) + + diff --git a/hackfest/netconf-oc/platform.xml b/hackfest/netconf-oc/platform.xml new file mode 100644 index 0000000000000000000000000000000000000000..434dc4c9bad3ecea4da9c8ad776c946eb5045f3a --- /dev/null +++ b/hackfest/netconf-oc/platform.xml @@ -0,0 +1,448 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
diff --git a/hackfest/netconf-oc/server-key b/hackfest/netconf-oc/server-key new file mode 100644 index 0000000000000000000000000000000000000000..b1da1bf244778f6d884a5e571de1cc77d144c363 --- /dev/null +++ b/hackfest/netconf-oc/server-key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4gIBAAKCAYEAueh9Dsz3havrm3NltIudzPiDAWE1wxkl1iD7x2iAJNRmJaeL +WfMLgAVtC7DujsOpVjLbsPdvrKCvZf3PeJE9jzPYJNhAXhMErAaWm3bRfxK0L6et +/kHnFxTGkNHASMrAySRrJloP6zys8n2e8IQ3vq37SrmkcqnizhDpiSeBjYXtIQpD +4eutZ26pyQktAi/X413jQN0ociKane2JTbBvqdYP7nGVFraEhAL34H5u461lTltw +pAog1N5QW7b9Yc1zhFJFCcXeq9luD/y6Z5KzkbBYwxADJojdffrTTHbgz4r+uJkw +9m1K8sqBzIeBY95nmWbMR1iNzIQ97LW+ePebGPPfCO2+YLOkgZGtRs/zErO+8vl7 +cRsEh1MhQ/2qqUckZZEPKxCT32Pcogx8RPAlfUDhm0e7yBnKZktlzddT01cpo0yi +tDzCqTljklRL36tYFDwZBHgB1Yao28V/q0nCKokxhnPDQSjLAIVd8+f6pOctIitq +mO9g03JAVYrvAC4zAgMBAAECggGAbSxANG7ddJwvMgykT1AmDPZrSGYjwjyEYajg +8otFpVst2TL4vIvj1vxYuyLeFOyGBt668MN9yyxZlFVmfvEb63qQlaKAuj4E4ljE +HOu7vxnmwo1/ue5NnNpQeT8T4ite50ABxHXjH0t0bLqkma2rZsiY55r5HXTygfyg +iDCw/cEGLf7vOj7CiBkOj8ZZrg0WhKjgCXlWhSAZGGEj3oGcMWpJ1MbSvJHWZAey +NR1KVV3APjGohkyEVz1uh02AouyYxu0Oyu27i3NO3NSa0BLz6ct3U2wJFVt7zNIz +XcOr+YDcC0gz6yEz1O1e7+p1dOTL9+azA04Dq0IiSu6k94Rrmnvr42sMmDLi/JBN +ZP82nCOoPO31pdVoHqqG/s7+mjHGqTSC+l4wImZD5YGHRnGbOBarH75MG/PIDl6S +VSzVCZKPEnLkZ3lKC1R3WO5K16WCgqTGLisu4VjXALhHIMmJDNk3Kkv+EvLdXp5Q +hBbDlJCtgs7w8V88ci17ss9bmqWRAoHBAOl6T+gvTO2zbJ2LGXVJKGYFDR637GKJ +tPRyTPK8IJR6PN/VgQdJ70P2a3XEUIMSwH+6rBg+zNZnu7TkwDyyxImyjwtnhGjf +xAGfkj5inmsToBq5INxKBamito3QUyzZhYGfDO61r+e0agDpGYCll9EuhBeQ+00x +2x/vA0Btr4WzFnh3xdlozAcPvws3dXhybRPdgPbn90M2UW2ImdIV2GDJNN+vASbl +M9jhI1tm3KjCCfDzgKmvs48IpoRAwZJihQKBwQDL13Qxgk4L5uemi0fBR1Jwd0IE +gZ6E2rZWbzT5Fe9iSsN+1LHJqvs31We8FhN+sYujG1ZUUSt5bpFggXOw+LwDVOf2 +Bzer681YqkRKtu2wkEzRX0R1esMowba0s1Naonu1lohKKAcZJ4YHDBKjxYHH4+NR +mnFjjxtcnQ/mMVb+ZPjOaXvzCt7NfShlfztkClrDca3WgOh/Zed7+M+0S1rrOEpt +Wyph/Y76AzH/uzdEIPkToNqRIACXWOR2NOpn11cCgcAUb0gfIkSxaUrQXyRTR5vp +kfecAK0H0tWrr3VcqWqQlEJPtPgeEzKF2EN/gzcowbNneocleBmlil67bmoE5gCd +rKsobF8CbtNQ8Q5zt132MTmKHTnrDe+A8WTY9KrS+hbdSXZwTiafOQMuITjCMbwf +6tpU1bOpBfwPx3OZaAA8y3fkA1elt65jz9UAvlHhwOIbIv/unE7f6xklZRdRc+gE +UJf4G/EV3mmzScE2dsJJYvJLzIQuVdp5YmBwotpOXaECgcAKJI1ejUpO401xhwqp +/l+Gwxhg2wZFPBDImj37ivDfZjL2E6VJEJ3xeEfyHvMXYcQ9+HVCOsu7/hlzwN09 +2BKa49Wq80782f3cxJQjV5jaKUP5QxFH+zTMyV7K/QVPxDf9oCDl97nqsYHExgAD +cCd2B8ve2p17w7or0JDi9l+KxwFuW+dT/514ghrJehw9bRp5ESYCP2XSOQLcs1O6 +d+ltPN7PNDMWryQ3IoORYwJr/GwIYv+dKwd8gGrVyupDAn8CgcBJ7YIeLbV5nQ+g +Y2Ht748J3157Emckyxv5vE6QQqBzAN+WOWRjSqExbLnnTL9UsrMbYn0STxYRleti +eZmCSXu5msE1ZkwoGNRnyEAtoN0NPI92pB+rKZw2ERSjgtV9rPnmE4tvuz/dosxb +AjGCxal0bnwrnltq1xFqSWrjbvOfbf7bK68I6+T76ktqsGUhz3mdjzFp6cUducm/ +Ty6M1Y33OKW1ymOGnfaaTOuXWC6yLFjdB+aQg5wjNOIwuoHe750= +-----END RSA PRIVATE KEY----- diff --git a/hackfest/netconf-oc/server-key.pub b/hackfest/netconf-oc/server-key.pub new file mode 100644 index 0000000000000000000000000000000000000000..56d420638839114e7c8f1261fde55bef641357c4 --- /dev/null +++ b/hackfest/netconf-oc/server-key.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC56H0OzPeFq+ubc2W0i53M+IMBYTXDGSXWIPvHaIAk1GYlp4tZ8wuABW0LsO6Ow6lWMtuw92+soK9l/c94kT2PM9gk2EBeEwSsBpabdtF/ErQvp63+QecXFMaQ0cBIysDJJGsmWg/rPKzyfZ7whDe+rftKuaRyqeLOEOmJJ4GNhe0hCkPh661nbqnJCS0CL9fjXeNA3ShyIpqd7YlNsG+p1g/ucZUWtoSEAvfgfm7jrWVOW3CkCiDU3lBbtv1hzXOEUkUJxd6r2W4P/LpnkrORsFjDEAMmiN19+tNMduDPiv64mTD2bUryyoHMh4Fj3meZZsxHWI3MhD3stb5495sY898I7b5gs6SBka1Gz/MSs77y+XtxGwSHUyFD/aqpRyRlkQ8rEJPfY9yiDHxE8CV9QOGbR7vIGcpmS2XN11PTVymjTKK0PMKpOWOSVEvfq1gUPBkEeAHVhqjbxX+rScIqiTGGc8NBKMsAhV3z5/qk5y0iK2qY72DTckBViu8ALjM= chopps@tops diff --git a/hackfest/netconf-oc/server_openconfig.py b/hackfest/netconf-oc/server_openconfig.py new file mode 100644 index 0000000000000000000000000000000000000000..08a68d42f8aab89349793bfd182f2360ef389bd9 --- /dev/null +++ b/hackfest/netconf-oc/server_openconfig.py @@ -0,0 +1,78 @@ +import logging, os, sys, time +from pyangbind.lib.serialise import pybindIETFXMLEncoder, pybindIETFXMLDecoder +from lxml import etree +from netconf import nsmap_add, NSMAP, server, util +from device_definition import get_device_definition + +logging.basicConfig(level=logging.DEBUG) + +#nsmap_add("topology", "urn:topology") +#nsmap_add("connection", "urn:connection") + +class MyServer(server.NetconfMethods): + + def __init__(self, username, password, port): + host_key_value = os.path.join(os.path.abspath(os.path.dirname(__file__)), "server-key") + auth = server.SSHUserPassController(username=username, password=password) + auth.check_auth_none(username) + self.server = server.NetconfSSHServer(server_ctl=auth, server_methods=self, host_key=host_key_value, port=port, debug=True) + + self.data = get_device_definition() + + def nc_append_capabilities(self, capabilities): + logging.debug("--GET capabilities--") + util.subelm(capabilities, "capability").text = "urn:ietf:params:netconf:capability:xpath:1.0" + #util.subelm(capabilities, "capability").text = NSMAP["topology"] + #util.subelm(capabilities, "capability").text = NSMAP["connection"] + + def rpc_get(self, session, rpc, filter_or_none): + #logging.debug("--GET--") + #logging.debug(session) + #logging.debug(etree.tostring(rpc)) + return util.filter_results(rpc, self.data, None) + + def rpc_get_config(self, session, rpc, source_elm, filter_or_none): + #logging.debug("--GET CONFIG--") + #logging.debug(session) + #logging.debug(etree.tostring(rpc)) + return util.filter_results(rpc, self.data, None) + + def rpc_edit_config(self, session, rpc, target, default_operation, new_config): + logging.debug("--EDIT CONFIG--") + logging.debug(session) + logging.debug(etree.tostring(rpc)) + logging.debug(etree.tostring(target)) + logging.debug(etree.tostring(default_operation)) + logging.debug(etree.tostring(new_config)) + + #data_list = new_config.findall(".//xmlns:connection", namespaces={'xmlns': 'urn:connection'}) + #for connect in data_list: + # logging.debug("connect: " ) + # logging.debug(etree.tostring(connect) ) + # logging.debug("CURRENT CONNECTION") + # logging.debug(etree.tostring(self.data[1]) ) + # self.data[1].append(connect) + # break + return util.filter_results(rpc, self.data, None) + + def close(self): + self.server.close() + +def main(*margs): + port = sys.argv[1] + s = MyServer("admin", "admin", int(port)) + + if sys.stdout.isatty(): + logging.debug("^C to quit server") + + try: + while True: + time.sleep(1) + + except Exception: + logging.debug("quitting server") + + s.close() + +if __name__ == "__main__": + main() diff --git a/hackfest/netconf-oc/yang_models.txt b/hackfest/netconf-oc/yang_models.txt new file mode 100644 index 0000000000000000000000000000000000000000..6fbde735fe439f6d42b4d368e1973aac5b8a540c --- /dev/null +++ b/hackfest/netconf-oc/yang_models.txt @@ -0,0 +1,171 @@ +git_openconfig/release/models/devices-manifest/openconfig-terminal-device-property-types.yang +git_openconfig/release/models/devices-manifest/openconfig-terminal-device-properties.yang +git_openconfig/release/models/vlan/openconfig-vlan.yang +git_openconfig/release/models/vlan/openconfig-vlan-types.yang +git_openconfig/release/models/p4rt/openconfig-p4rt.yang +git_openconfig/release/models/stp/openconfig-spanning-tree-types.yang +git_openconfig/release/models/stp/openconfig-spanning-tree.yang +git_openconfig/release/models/rib/openconfig-rib-bgp-shared-attributes.yang +git_openconfig/release/models/rib/openconfig-rib-bgp-table-attributes.yang +git_openconfig/release/models/rib/openconfig-rib-bgp-attributes.yang +git_openconfig/release/models/rib/openconfig-rib-bgp.yang +git_openconfig/release/models/rib/openconfig-rib-bgp-ext.yang +git_openconfig/release/models/rib/openconfig-rib-bgp-tables.yang +git_openconfig/release/models/rib/openconfig-rib-bgp-types.yang +git_openconfig/release/models/segment-routing/openconfig-segment-routing-types.yang +git_openconfig/release/models/segment-routing/openconfig-srte-policy.yang +git_openconfig/release/models/segment-routing/openconfig-segment-routing.yang +git_openconfig/release/models/segment-routing/openconfig-rsvp-sr-ext.yang +git_openconfig/release/models/isis/openconfig-isis-lsp.yang +git_openconfig/release/models/isis/openconfig-isis-policy.yang +git_openconfig/release/models/isis/openconfig-isis-types.yang +git_openconfig/release/models/isis/openconfig-isis-lsdb-types.yang +git_openconfig/release/models/isis/openconfig-isis.yang +git_openconfig/release/models/isis/openconfig-isis-routing.yang +git_openconfig/release/models/pcep/openconfig-pcep.yang +git_openconfig/release/models/lacp/openconfig-lacp.yang +git_openconfig/release/models/keychain/openconfig-keychain.yang +git_openconfig/release/models/keychain/openconfig-keychain-types.yang +git_openconfig/release/models/openconfig-extensions.yang +git_openconfig/release/models/telemetry/openconfig-telemetry.yang +git_openconfig/release/models/telemetry/openconfig-telemetry-types.yang +git_openconfig/release/models/policy/openconfig-policy-types.yang +git_openconfig/release/models/policy/openconfig-routing-policy.yang +git_openconfig/release/models/bfd/openconfig-bfd.yang +git_openconfig/release/models/types/openconfig-types.yang +git_openconfig/release/models/types/openconfig-yang-types.yang +git_openconfig/release/models/types/openconfig-inet-types.yang +git_openconfig/release/models/ospf/openconfig-ospfv2-common.yang +git_openconfig/release/models/ospf/openconfig-ospfv2-area.yang +git_openconfig/release/models/ospf/openconfig-ospfv2-area-interface.yang +git_openconfig/release/models/ospf/openconfig-ospfv2.yang +git_openconfig/release/models/ospf/openconfig-ospf-types.yang +git_openconfig/release/models/ospf/openconfig-ospfv2-global.yang +git_openconfig/release/models/ospf/openconfig-ospf-policy.yang +git_openconfig/release/models/ospf/openconfig-ospfv2-lsdb.yang +git_openconfig/release/models/gribi/openconfig-gribi.yang +git_openconfig/release/models/platform/openconfig-platform-software.yang +git_openconfig/release/models/platform/openconfig-platform-integrated-circuit.yang +git_openconfig/release/models/platform/openconfig-platform-linecard.yang +git_openconfig/release/models/platform/openconfig-platform-controller-card.yang +git_openconfig/release/models/platform/openconfig-platform-port.yang +git_openconfig/release/models/platform/openconfig-platform-psu.yang +git_openconfig/release/models/platform/openconfig-platform-transceiver.yang +git_openconfig/release/models/platform/openconfig-platform-fabric.yang +git_openconfig/release/models/platform/openconfig-platform.yang +git_openconfig/release/models/platform/openconfig-platform-pipeline-counters.yang +git_openconfig/release/models/platform/openconfig-platform-ext.yang +git_openconfig/release/models/platform/openconfig-platform-types.yang +git_openconfig/release/models/platform/openconfig-platform-common.yang +git_openconfig/release/models/platform/openconfig-platform-fan.yang +git_openconfig/release/models/platform/openconfig-platform-cpu.yang +git_openconfig/release/models/policy-forwarding/openconfig-pf-path-groups.yang +git_openconfig/release/models/policy-forwarding/openconfig-policy-forwarding.yang +git_openconfig/release/models/policy-forwarding/openconfig-pf-srte.yang +git_openconfig/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang +git_openconfig/release/models/policy-forwarding/openconfig-pf-interfaces.yang +git_openconfig/release/models/relay-agent/openconfig-relay-agent.yang +git_openconfig/release/models/optical-transport/openconfig-transport-line-protection.yang +git_openconfig/release/models/optical-transport/openconfig-optical-attenuator.yang +git_openconfig/release/models/optical-transport/openconfig-transport-types.yang +git_openconfig/release/models/optical-transport/openconfig-wavelength-router.yang +git_openconfig/release/models/optical-transport/openconfig-terminal-device.yang +git_openconfig/release/models/optical-transport/openconfig-channel-monitor.yang +git_openconfig/release/models/optical-transport/openconfig-optical-amplifier.yang +git_openconfig/release/models/optical-transport/openconfig-transport-line-connectivity.yang +git_openconfig/release/models/optical-transport/openconfig-transport-line-common.yang +git_openconfig/release/models/multicast/openconfig-pim.yang +git_openconfig/release/models/multicast/openconfig-pim-types.yang +git_openconfig/release/models/multicast/openconfig-igmp.yang +git_openconfig/release/models/multicast/openconfig-igmp-types.yang +git_openconfig/release/models/extensions/openconfig-metadata.yang +git_openconfig/release/models/extensions/openconfig-codegen-extensions.yang +git_openconfig/release/models/wifi/openconfig-wifi-mac.yang +git_openconfig/release/models/wifi/openconfig-wifi-phy.yang +git_openconfig/release/models/wifi/openconfig-ap-interfaces.yang +git_openconfig/release/models/wifi/openconfig-ap-manager.yang +git_openconfig/release/models/wifi/openconfig-wifi-types.yang +git_openconfig/release/models/wifi/openconfig-access-points.yang +git_openconfig/release/models/network-instance/openconfig-network-instance-types.yang +git_openconfig/release/models/network-instance/openconfig-network-instance-l3.yang +git_openconfig/release/models/network-instance/openconfig-evpn.yang +git_openconfig/release/models/network-instance/openconfig-network-instance-l2.yang +git_openconfig/release/models/network-instance/openconfig-network-instance-policy.yang +git_openconfig/release/models/network-instance/openconfig-network-instance.yang +git_openconfig/release/models/network-instance/openconfig-evpn-types.yang +git_openconfig/release/models/system/openconfig-aaa-types.yang +git_openconfig/release/models/system/openconfig-system-logging.yang +git_openconfig/release/models/system/openconfig-aaa-tacacs.yang +git_openconfig/release/models/system/openconfig-procmon.yang +git_openconfig/release/models/system/openconfig-aaa.yang +git_openconfig/release/models/system/openconfig-aaa-radius.yang +git_openconfig/release/models/system/openconfig-system.yang +git_openconfig/release/models/system/openconfig-license.yang +git_openconfig/release/models/system/openconfig-system-grpc.yang +git_openconfig/release/models/system/openconfig-alarms.yang +git_openconfig/release/models/system/openconfig-messages.yang +git_openconfig/release/models/system/openconfig-alarm-types.yang +git_openconfig/release/models/system/openconfig-system-terminal.yang +git_openconfig/release/models/acl/openconfig-packet-match-types.yang +git_openconfig/release/models/acl/openconfig-acl.yang +git_openconfig/release/models/acl/openconfig-packet-match.yang +git_openconfig/release/models/local-routing/openconfig-local-routing.yang +git_openconfig/release/models/openflow/openconfig-openflow.yang +git_openconfig/release/models/openflow/openconfig-openflow-types.yang +git_openconfig/release/models/probes/openconfig-probes.yang +git_openconfig/release/models/probes/openconfig-probes-types.yang +git_openconfig/release/models/lldp/openconfig-lldp-types.yang +git_openconfig/release/models/lldp/openconfig-lldp.yang +git_openconfig/release/models/interfaces/openconfig-if-8021x.yang +git_openconfig/release/models/interfaces/openconfig-interfaces.yang +git_openconfig/release/models/interfaces/openconfig-if-ethernet-ext.yang +git_openconfig/release/models/interfaces/openconfig-if-ip-ext.yang +git_openconfig/release/models/interfaces/openconfig-if-tunnel.yang +git_openconfig/release/models/interfaces/openconfig-if-poe.yang +git_openconfig/release/models/interfaces/openconfig-if-aggregate.yang +git_openconfig/release/models/interfaces/openconfig-if-sdn-ext.yang +git_openconfig/release/models/interfaces/openconfig-if-ip.yang +git_openconfig/release/models/interfaces/openconfig-if-ethernet.yang +git_openconfig/release/models/bgp/openconfig-bgp-errors.yang +git_openconfig/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +git_openconfig/release/models/bgp/openconfig-bgp-common.yang +git_openconfig/release/models/bgp/openconfig-bgp-policy.yang +git_openconfig/release/models/bgp/openconfig-bgp-neighbor.yang +git_openconfig/release/models/bgp/openconfig-bgp-types.yang +git_openconfig/release/models/bgp/openconfig-bgp-common-structure.yang +git_openconfig/release/models/bgp/openconfig-bgp-peer-group.yang +git_openconfig/release/models/bgp/openconfig-bgp-global.yang +git_openconfig/release/models/bgp/openconfig-bgp.yang +git_openconfig/release/models/qos/openconfig-qos-types.yang +git_openconfig/release/models/qos/openconfig-qos-interfaces.yang +git_openconfig/release/models/qos/openconfig-qos.yang +git_openconfig/release/models/qos/openconfig-qos-mem-mgmt.yang +git_openconfig/release/models/qos/openconfig-qos-elements.yang +git_openconfig/release/models/aft/openconfig-aft-mpls.yang +git_openconfig/release/models/aft/openconfig-aft-state-synced.yang +git_openconfig/release/models/aft/openconfig-aft-pf.yang +git_openconfig/release/models/aft/openconfig-aft-ipv6.yang +git_openconfig/release/models/aft/openconfig-aft.yang +git_openconfig/release/models/aft/openconfig-aft-network-instance.yang +git_openconfig/release/models/aft/openconfig-aft-ipv4.yang +git_openconfig/release/models/aft/openconfig-aft-common.yang +git_openconfig/release/models/aft/openconfig-aft-types.yang +git_openconfig/release/models/aft/openconfig-aft-ethernet.yang +git_openconfig/release/models/sampling/openconfig-sampling-sflow.yang +git_openconfig/release/models/sampling/openconfig-sampling.yang +git_openconfig/release/models/firewall/openconfig-fw-link-monitoring.yang +git_openconfig/release/models/firewall/openconfig-fw-high-availability.yang +git_openconfig/release/models/catalog/openconfig-module-catalog.yang +git_openconfig/release/models/catalog/openconfig-catalog-types.yang +git_openconfig/release/models/macsec/openconfig-macsec-types.yang +git_openconfig/release/models/macsec/openconfig-macsec.yang +git_openconfig/release/models/ate/openconfig-ate-intf.yang +git_openconfig/release/models/ate/openconfig-ate-flow.yang +git_openconfig/release/models/mpls/openconfig-mpls-static.yang +git_openconfig/release/models/mpls/openconfig-mpls-rsvp.yang +git_openconfig/release/models/mpls/openconfig-mpls-sr.yang +git_openconfig/release/models/mpls/openconfig-mpls-types.yang +git_openconfig/release/models/mpls/openconfig-mpls.yang +git_openconfig/release/models/mpls/openconfig-mpls-te.yang +git_openconfig/release/models/mpls/openconfig-mpls-ldp.yang +git_openconfig/release/models/mpls/openconfig-mpls-igp.yang diff --git a/hackfest/netconf/binding_connection.py b/hackfest/netconf/binding_connection.py new file mode 100644 index 0000000000000000000000000000000000000000..6da8d21d942afce3e3502783def6179bef406cae --- /dev/null +++ b/hackfest/netconf/binding_connection.py @@ -0,0 +1,411 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class yc_connection_connection__connection(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module connection - based on the path /connection. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__connection_id','__source_node','__target_node','__source_port','__target_port','__bandwidth','__layer_protocol_name',) + + _yang_name = 'connection' + _yang_namespace = 'urn:connection' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True) + self.__connection_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True) + self.__bandwidth = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True) + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'connection'] + + def _get_connection_id(self): + """ + Getter method for connection_id, mapped from YANG variable /connection/connection_id (string) + """ + return self.__connection_id + + def _set_connection_id(self, v, load=False): + """ + Setter method for connection_id, mapped from YANG variable /connection/connection_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_connection_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connection_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connection_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True)""", + }) + + self.__connection_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_connection_id(self): + self.__connection_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True) + + + def _get_source_node(self): + """ + Getter method for source_node, mapped from YANG variable /connection/source_node (leafref) + """ + return self.__source_node + + def _set_source_node(self, v, load=False): + """ + Setter method for source_node, mapped from YANG variable /connection/source_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__source_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_node(self): + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_target_node(self): + """ + Getter method for target_node, mapped from YANG variable /connection/target_node (leafref) + """ + return self.__target_node + + def _set_target_node(self, v, load=False): + """ + Setter method for target_node, mapped from YANG variable /connection/target_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__target_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_node(self): + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_source_port(self): + """ + Getter method for source_port, mapped from YANG variable /connection/source_port (leafref) + """ + return self.__source_port + + def _set_source_port(self, v, load=False): + """ + Setter method for source_port, mapped from YANG variable /connection/source_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__source_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_port(self): + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_target_port(self): + """ + Getter method for target_port, mapped from YANG variable /connection/target_port (leafref) + """ + return self.__target_port + + def _set_target_port(self, v, load=False): + """ + Setter method for target_port, mapped from YANG variable /connection/target_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__target_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_port(self): + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_bandwidth(self): + """ + Getter method for bandwidth, mapped from YANG variable /connection/bandwidth (uint32) + """ + return self.__bandwidth + + def _set_bandwidth(self, v, load=False): + """ + Setter method for bandwidth, mapped from YANG variable /connection/bandwidth (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bandwidth() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bandwidth must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True)""", + }) + + self.__bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_bandwidth(self): + self.__bandwidth = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True) + + + def _get_layer_protocol_name(self): + """ + Getter method for layer_protocol_name, mapped from YANG variable /connection/layer_protocol_name (topology:layer-protocol-name) + """ + return self.__layer_protocol_name + + def _set_layer_protocol_name(self, v, load=False): + """ + Setter method for layer_protocol_name, mapped from YANG variable /connection/layer_protocol_name (topology:layer-protocol-name) + If this variable is read-only (config: false) in the + source YANG file, then _set_layer_protocol_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_layer_protocol_name() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """layer_protocol_name must be of a type compatible with topology:layer-protocol-name""", + 'defined-type': "topology:layer-protocol-name", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True)""", + }) + + self.__layer_protocol_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_layer_protocol_name(self): + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True) + + connection_id = __builtin__.property(_get_connection_id, _set_connection_id) + source_node = __builtin__.property(_get_source_node, _set_source_node) + target_node = __builtin__.property(_get_target_node, _set_target_node) + source_port = __builtin__.property(_get_source_port, _set_source_port) + target_port = __builtin__.property(_get_target_port, _set_target_port) + bandwidth = __builtin__.property(_get_bandwidth, _set_bandwidth) + layer_protocol_name = __builtin__.property(_get_layer_protocol_name, _set_layer_protocol_name) + + + _pyangbind_elements = OrderedDict([('connection_id', connection_id), ('source_node', source_node), ('target_node', target_node), ('source_port', source_port), ('target_port', target_port), ('bandwidth', bandwidth), ('layer_protocol_name', layer_protocol_name), ]) + + +class connection(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module connection - based on the path /connection. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Basic example of network topology + """ + __slots__ = ('_path_helper', '_extmethods', '__connection',) + + _yang_name = 'connection' + _yang_namespace = 'urn:connection' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__connection = YANGDynClass(base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [] + + def _get_connection(self): + """ + Getter method for connection, mapped from YANG variable /connection (list) + """ + return self.__connection + + def _set_connection(self, v, load=False): + """ + Setter method for connection, mapped from YANG variable /connection (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_connection is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connection() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connection must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True)""", + }) + + self.__connection = t + if hasattr(self, '_set'): + self._set() + + def _unset_connection(self): + self.__connection = YANGDynClass(base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True) + + connection = __builtin__.property(_get_connection, _set_connection) + + + _pyangbind_elements = OrderedDict([('connection', connection), ]) + + diff --git a/hackfest/netconf/binding_topology.py b/hackfest/netconf/binding_topology.py new file mode 100644 index 0000000000000000000000000000000000000000..ffc30a76ad4fc43f584a7307884ecbd88f5f8528 --- /dev/null +++ b/hackfest/netconf/binding_topology.py @@ -0,0 +1,714 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class yc_port_topology__topology_node_port(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology/node/port. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__port_id','__layer_protocol_name',) + + _yang_name = 'port' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True) + self.__port_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'topology', u'node', u'port'] + + def _get_port_id(self): + """ + Getter method for port_id, mapped from YANG variable /topology/node/port/port_id (string) + """ + return self.__port_id + + def _set_port_id(self, v, load=False): + """ + Setter method for port_id, mapped from YANG variable /topology/node/port/port_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_port_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True)""", + }) + + self.__port_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_port_id(self): + self.__port_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + + def _get_layer_protocol_name(self): + """ + Getter method for layer_protocol_name, mapped from YANG variable /topology/node/port/layer_protocol_name (layer-protocol-name) + """ + return self.__layer_protocol_name + + def _set_layer_protocol_name(self, v, load=False): + """ + Setter method for layer_protocol_name, mapped from YANG variable /topology/node/port/layer_protocol_name (layer-protocol-name) + If this variable is read-only (config: false) in the + source YANG file, then _set_layer_protocol_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_layer_protocol_name() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """layer_protocol_name must be of a type compatible with layer-protocol-name""", + 'defined-type': "topology:layer-protocol-name", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True)""", + }) + + self.__layer_protocol_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_layer_protocol_name(self): + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True) + + port_id = __builtin__.property(_get_port_id, _set_port_id) + layer_protocol_name = __builtin__.property(_get_layer_protocol_name, _set_layer_protocol_name) + + + _pyangbind_elements = OrderedDict([('port_id', port_id), ('layer_protocol_name', layer_protocol_name), ]) + + +class yc_node_topology__topology_node(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology/node. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__port',) + + _yang_name = 'node' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + self.__port = YANGDynClass(base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'topology', u'node'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /topology/node/node_id (string) + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /topology/node/node_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + + def _get_port(self): + """ + Getter method for port, mapped from YANG variable /topology/node/port (list) + """ + return self.__port + + def _set_port(self, v, load=False): + """ + Setter method for port, mapped from YANG variable /topology/node/port (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True)""", + }) + + self.__port = t + if hasattr(self, '_set'): + self._set() + + def _unset_port(self): + self.__port = YANGDynClass(base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + port = __builtin__.property(_get_port, _set_port) + + + _pyangbind_elements = OrderedDict([('node_id', node_id), ('port', port), ]) + + +class yc_link_topology__topology_link(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology/link. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_id','__source_node','__target_node','__source_port','__target_port',) + + _yang_name = 'link' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__link_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'topology', u'link'] + + def _get_link_id(self): + """ + Getter method for link_id, mapped from YANG variable /topology/link/link_id (string) + """ + return self.__link_id + + def _set_link_id(self, v, load=False): + """ + Setter method for link_id, mapped from YANG variable /topology/link/link_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True)""", + }) + + self.__link_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_id(self): + self.__link_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + + def _get_source_node(self): + """ + Getter method for source_node, mapped from YANG variable /topology/link/source_node (leafref) + """ + return self.__source_node + + def _set_source_node(self, v, load=False): + """ + Setter method for source_node, mapped from YANG variable /topology/link/source_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__source_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_node(self): + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + + def _get_target_node(self): + """ + Getter method for target_node, mapped from YANG variable /topology/link/target_node (leafref) + """ + return self.__target_node + + def _set_target_node(self, v, load=False): + """ + Setter method for target_node, mapped from YANG variable /topology/link/target_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__target_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_node(self): + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + + def _get_source_port(self): + """ + Getter method for source_port, mapped from YANG variable /topology/link/source_port (leafref) + """ + return self.__source_port + + def _set_source_port(self, v, load=False): + """ + Setter method for source_port, mapped from YANG variable /topology/link/source_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__source_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_port(self): + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + + def _get_target_port(self): + """ + Getter method for target_port, mapped from YANG variable /topology/link/target_port (leafref) + """ + return self.__target_port + + def _set_target_port(self, v, load=False): + """ + Setter method for target_port, mapped from YANG variable /topology/link/target_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__target_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_port(self): + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + link_id = __builtin__.property(_get_link_id, _set_link_id) + source_node = __builtin__.property(_get_source_node, _set_source_node) + target_node = __builtin__.property(_get_target_node, _set_target_node) + source_port = __builtin__.property(_get_source_port, _set_source_port) + target_port = __builtin__.property(_get_target_port, _set_target_port) + + + _pyangbind_elements = OrderedDict([('link_id', link_id), ('source_node', source_node), ('target_node', target_node), ('source_port', source_port), ('target_port', target_port), ]) + + +class yc_topology_topology__topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__node','__link',) + + _yang_name = 'topology' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node = YANGDynClass(base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + self.__link = YANGDynClass(base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'topology'] + + def _get_node(self): + """ + Getter method for node, mapped from YANG variable /topology/node (list) + """ + return self.__node + + def _set_node(self, v, load=False): + """ + Setter method for node, mapped from YANG variable /topology/node (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True)""", + }) + + self.__node = t + if hasattr(self, '_set'): + self._set() + + def _unset_node(self): + self.__node = YANGDynClass(base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + + def _get_link(self): + """ + Getter method for link, mapped from YANG variable /topology/link (list) + """ + return self.__link + + def _set_link(self, v, load=False): + """ + Setter method for link, mapped from YANG variable /topology/link (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_link is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True)""", + }) + + self.__link = t + if hasattr(self, '_set'): + self._set() + + def _unset_link(self): + self.__link = YANGDynClass(base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + node = __builtin__.property(_get_node, _set_node) + link = __builtin__.property(_get_link, _set_link) + + + _pyangbind_elements = OrderedDict([('node', node), ('link', link), ]) + + +class topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Basic example of network topology + """ + __slots__ = ('_path_helper', '_extmethods', '__topology',) + + _yang_name = 'topology' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__topology = YANGDynClass(base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [] + + def _get_topology(self): + """ + Getter method for topology, mapped from YANG variable /topology (container) + """ + return self.__topology + + def _set_topology(self, v, load=False): + """ + Setter method for topology, mapped from YANG variable /topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_topology() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True)""", + }) + + self.__topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_topology(self): + self.__topology = YANGDynClass(base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True) + + topology = __builtin__.property(_get_topology, _set_topology) + + + _pyangbind_elements = OrderedDict([('topology', topology), ]) + + diff --git a/hackfest/netconf/client_topology.py b/hackfest/netconf/client_topology.py new file mode 100644 index 0000000000000000000000000000000000000000..5b1dd9a3e444034a5f6251e3be333847030a42d5 --- /dev/null +++ b/hackfest/netconf/client_topology.py @@ -0,0 +1,24 @@ +from lxml import etree +from netconf.client import NetconfSSHSession + +# connexion parameters +host = 'localhost' +port = 8300 +username = "admin" +password = "admin" + +# connexion to server +session = NetconfSSHSession(host, port, username, password) + +# server capabilities +c = session.capabilities +print(c) + +# get config +print("---GET CONFIG---") +config = session.get_config() +xmlstr = etree.tostring(config, encoding='utf8', xml_declaration=True) +print(xmlstr) + +# close connexion +session.close() diff --git a/hackfest/netconf/confd-basic-6.4.linux.x86_64.zip b/hackfest/netconf/confd-basic-6.4.linux.x86_64.zip new file mode 100644 index 0000000000000000000000000000000000000000..eb5b89e7fbed57e1519ae1990426152651686288 Binary files /dev/null and b/hackfest/netconf/confd-basic-6.4.linux.x86_64.zip differ diff --git a/hackfest/netconf/connection/binding_connection.py b/hackfest/netconf/connection/binding_connection.py new file mode 100644 index 0000000000000000000000000000000000000000..6da8d21d942afce3e3502783def6179bef406cae --- /dev/null +++ b/hackfest/netconf/connection/binding_connection.py @@ -0,0 +1,411 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class yc_connection_connection__connection(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module connection - based on the path /connection. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__connection_id','__source_node','__target_node','__source_port','__target_port','__bandwidth','__layer_protocol_name',) + + _yang_name = 'connection' + _yang_namespace = 'urn:connection' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True) + self.__connection_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True) + self.__bandwidth = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True) + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'connection'] + + def _get_connection_id(self): + """ + Getter method for connection_id, mapped from YANG variable /connection/connection_id (string) + """ + return self.__connection_id + + def _set_connection_id(self, v, load=False): + """ + Setter method for connection_id, mapped from YANG variable /connection/connection_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_connection_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connection_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connection_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True)""", + }) + + self.__connection_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_connection_id(self): + self.__connection_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True) + + + def _get_source_node(self): + """ + Getter method for source_node, mapped from YANG variable /connection/source_node (leafref) + """ + return self.__source_node + + def _set_source_node(self, v, load=False): + """ + Setter method for source_node, mapped from YANG variable /connection/source_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__source_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_node(self): + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_target_node(self): + """ + Getter method for target_node, mapped from YANG variable /connection/target_node (leafref) + """ + return self.__target_node + + def _set_target_node(self, v, load=False): + """ + Setter method for target_node, mapped from YANG variable /connection/target_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__target_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_node(self): + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_source_port(self): + """ + Getter method for source_port, mapped from YANG variable /connection/source_port (leafref) + """ + return self.__source_port + + def _set_source_port(self, v, load=False): + """ + Setter method for source_port, mapped from YANG variable /connection/source_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__source_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_port(self): + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_target_port(self): + """ + Getter method for target_port, mapped from YANG variable /connection/target_port (leafref) + """ + return self.__target_port + + def _set_target_port(self, v, load=False): + """ + Setter method for target_port, mapped from YANG variable /connection/target_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__target_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_port(self): + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_bandwidth(self): + """ + Getter method for bandwidth, mapped from YANG variable /connection/bandwidth (uint32) + """ + return self.__bandwidth + + def _set_bandwidth(self, v, load=False): + """ + Setter method for bandwidth, mapped from YANG variable /connection/bandwidth (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bandwidth() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bandwidth must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True)""", + }) + + self.__bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_bandwidth(self): + self.__bandwidth = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True) + + + def _get_layer_protocol_name(self): + """ + Getter method for layer_protocol_name, mapped from YANG variable /connection/layer_protocol_name (topology:layer-protocol-name) + """ + return self.__layer_protocol_name + + def _set_layer_protocol_name(self, v, load=False): + """ + Setter method for layer_protocol_name, mapped from YANG variable /connection/layer_protocol_name (topology:layer-protocol-name) + If this variable is read-only (config: false) in the + source YANG file, then _set_layer_protocol_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_layer_protocol_name() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """layer_protocol_name must be of a type compatible with topology:layer-protocol-name""", + 'defined-type': "topology:layer-protocol-name", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True)""", + }) + + self.__layer_protocol_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_layer_protocol_name(self): + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True) + + connection_id = __builtin__.property(_get_connection_id, _set_connection_id) + source_node = __builtin__.property(_get_source_node, _set_source_node) + target_node = __builtin__.property(_get_target_node, _set_target_node) + source_port = __builtin__.property(_get_source_port, _set_source_port) + target_port = __builtin__.property(_get_target_port, _set_target_port) + bandwidth = __builtin__.property(_get_bandwidth, _set_bandwidth) + layer_protocol_name = __builtin__.property(_get_layer_protocol_name, _set_layer_protocol_name) + + + _pyangbind_elements = OrderedDict([('connection_id', connection_id), ('source_node', source_node), ('target_node', target_node), ('source_port', source_port), ('target_port', target_port), ('bandwidth', bandwidth), ('layer_protocol_name', layer_protocol_name), ]) + + +class connection(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module connection - based on the path /connection. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Basic example of network topology + """ + __slots__ = ('_path_helper', '_extmethods', '__connection',) + + _yang_name = 'connection' + _yang_namespace = 'urn:connection' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__connection = YANGDynClass(base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [] + + def _get_connection(self): + """ + Getter method for connection, mapped from YANG variable /connection (list) + """ + return self.__connection + + def _set_connection(self, v, load=False): + """ + Setter method for connection, mapped from YANG variable /connection (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_connection is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connection() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connection must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True)""", + }) + + self.__connection = t + if hasattr(self, '_set'): + self._set() + + def _unset_connection(self): + self.__connection = YANGDynClass(base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True) + + connection = __builtin__.property(_get_connection, _set_connection) + + + _pyangbind_elements = OrderedDict([('connection', connection), ]) + + diff --git a/hackfest/netconf/connection/binding_topology.py b/hackfest/netconf/connection/binding_topology.py new file mode 100644 index 0000000000000000000000000000000000000000..ffc30a76ad4fc43f584a7307884ecbd88f5f8528 --- /dev/null +++ b/hackfest/netconf/connection/binding_topology.py @@ -0,0 +1,714 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class yc_port_topology__topology_node_port(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology/node/port. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__port_id','__layer_protocol_name',) + + _yang_name = 'port' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True) + self.__port_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'topology', u'node', u'port'] + + def _get_port_id(self): + """ + Getter method for port_id, mapped from YANG variable /topology/node/port/port_id (string) + """ + return self.__port_id + + def _set_port_id(self, v, load=False): + """ + Setter method for port_id, mapped from YANG variable /topology/node/port/port_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_port_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True)""", + }) + + self.__port_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_port_id(self): + self.__port_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + + def _get_layer_protocol_name(self): + """ + Getter method for layer_protocol_name, mapped from YANG variable /topology/node/port/layer_protocol_name (layer-protocol-name) + """ + return self.__layer_protocol_name + + def _set_layer_protocol_name(self, v, load=False): + """ + Setter method for layer_protocol_name, mapped from YANG variable /topology/node/port/layer_protocol_name (layer-protocol-name) + If this variable is read-only (config: false) in the + source YANG file, then _set_layer_protocol_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_layer_protocol_name() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """layer_protocol_name must be of a type compatible with layer-protocol-name""", + 'defined-type': "topology:layer-protocol-name", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True)""", + }) + + self.__layer_protocol_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_layer_protocol_name(self): + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True) + + port_id = __builtin__.property(_get_port_id, _set_port_id) + layer_protocol_name = __builtin__.property(_get_layer_protocol_name, _set_layer_protocol_name) + + + _pyangbind_elements = OrderedDict([('port_id', port_id), ('layer_protocol_name', layer_protocol_name), ]) + + +class yc_node_topology__topology_node(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology/node. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__port',) + + _yang_name = 'node' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + self.__port = YANGDynClass(base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'topology', u'node'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /topology/node/node_id (string) + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /topology/node/node_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + + def _get_port(self): + """ + Getter method for port, mapped from YANG variable /topology/node/port (list) + """ + return self.__port + + def _set_port(self, v, load=False): + """ + Setter method for port, mapped from YANG variable /topology/node/port (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True)""", + }) + + self.__port = t + if hasattr(self, '_set'): + self._set() + + def _unset_port(self): + self.__port = YANGDynClass(base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + port = __builtin__.property(_get_port, _set_port) + + + _pyangbind_elements = OrderedDict([('node_id', node_id), ('port', port), ]) + + +class yc_link_topology__topology_link(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology/link. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_id','__source_node','__target_node','__source_port','__target_port',) + + _yang_name = 'link' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__link_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'topology', u'link'] + + def _get_link_id(self): + """ + Getter method for link_id, mapped from YANG variable /topology/link/link_id (string) + """ + return self.__link_id + + def _set_link_id(self, v, load=False): + """ + Setter method for link_id, mapped from YANG variable /topology/link/link_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True)""", + }) + + self.__link_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_id(self): + self.__link_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + + def _get_source_node(self): + """ + Getter method for source_node, mapped from YANG variable /topology/link/source_node (leafref) + """ + return self.__source_node + + def _set_source_node(self, v, load=False): + """ + Setter method for source_node, mapped from YANG variable /topology/link/source_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__source_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_node(self): + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + + def _get_target_node(self): + """ + Getter method for target_node, mapped from YANG variable /topology/link/target_node (leafref) + """ + return self.__target_node + + def _set_target_node(self, v, load=False): + """ + Setter method for target_node, mapped from YANG variable /topology/link/target_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__target_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_node(self): + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + + def _get_source_port(self): + """ + Getter method for source_port, mapped from YANG variable /topology/link/source_port (leafref) + """ + return self.__source_port + + def _set_source_port(self, v, load=False): + """ + Setter method for source_port, mapped from YANG variable /topology/link/source_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__source_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_port(self): + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + + def _get_target_port(self): + """ + Getter method for target_port, mapped from YANG variable /topology/link/target_port (leafref) + """ + return self.__target_port + + def _set_target_port(self, v, load=False): + """ + Setter method for target_port, mapped from YANG variable /topology/link/target_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__target_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_port(self): + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + link_id = __builtin__.property(_get_link_id, _set_link_id) + source_node = __builtin__.property(_get_source_node, _set_source_node) + target_node = __builtin__.property(_get_target_node, _set_target_node) + source_port = __builtin__.property(_get_source_port, _set_source_port) + target_port = __builtin__.property(_get_target_port, _set_target_port) + + + _pyangbind_elements = OrderedDict([('link_id', link_id), ('source_node', source_node), ('target_node', target_node), ('source_port', source_port), ('target_port', target_port), ]) + + +class yc_topology_topology__topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__node','__link',) + + _yang_name = 'topology' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node = YANGDynClass(base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + self.__link = YANGDynClass(base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'topology'] + + def _get_node(self): + """ + Getter method for node, mapped from YANG variable /topology/node (list) + """ + return self.__node + + def _set_node(self, v, load=False): + """ + Setter method for node, mapped from YANG variable /topology/node (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True)""", + }) + + self.__node = t + if hasattr(self, '_set'): + self._set() + + def _unset_node(self): + self.__node = YANGDynClass(base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + + def _get_link(self): + """ + Getter method for link, mapped from YANG variable /topology/link (list) + """ + return self.__link + + def _set_link(self, v, load=False): + """ + Setter method for link, mapped from YANG variable /topology/link (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_link is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True)""", + }) + + self.__link = t + if hasattr(self, '_set'): + self._set() + + def _unset_link(self): + self.__link = YANGDynClass(base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + node = __builtin__.property(_get_node, _set_node) + link = __builtin__.property(_get_link, _set_link) + + + _pyangbind_elements = OrderedDict([('node', node), ('link', link), ]) + + +class topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Basic example of network topology + """ + __slots__ = ('_path_helper', '_extmethods', '__topology',) + + _yang_name = 'topology' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__topology = YANGDynClass(base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [] + + def _get_topology(self): + """ + Getter method for topology, mapped from YANG variable /topology (container) + """ + return self.__topology + + def _set_topology(self, v, load=False): + """ + Setter method for topology, mapped from YANG variable /topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_topology() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True)""", + }) + + self.__topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_topology(self): + self.__topology = YANGDynClass(base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True) + + topology = __builtin__.property(_get_topology, _set_topology) + + + _pyangbind_elements = OrderedDict([('topology', topology), ]) + + diff --git a/hackfest/netconf/connection/client_connection.py b/hackfest/netconf/connection/client_connection.py new file mode 100644 index 0000000000000000000000000000000000000000..08c0eaae03fdad0f6dc6f56ceef5b8f9af38acf7 --- /dev/null +++ b/hackfest/netconf/connection/client_connection.py @@ -0,0 +1,44 @@ +from lxml import etree +from netconf.client import NetconfSSHSession + +# connexion parameters +host = 'localhost' +port = 8300 +username = "admin" +password = "admin" + +# connexion to server +session = NetconfSSHSession(host, port, username, password) + +# server capabilities +print("---GET C---") +c = session.capabilities +print(c) + +# get config +print("---GET CONFIG---") +config = session.get_config() +xmlstr = etree.tostring(config, encoding='utf8', xml_declaration=True) +print(xmlstr) + +# edit config +new_config = ''' + + + connection1 + node1 + node1portA + node2 + node2portA + 10 + ETH + + +''' +print("---EDIT CONFIG---") +config = session.edit_config(newconf=new_config) +xmlstr = etree.tostring(config, encoding='utf8', xml_declaration=True) +print(xmlstr) + +# close connexion +session.close() diff --git a/hackfest/netconf/connection/server-key b/hackfest/netconf/connection/server-key new file mode 100644 index 0000000000000000000000000000000000000000..7fc5e5f87d49b1b603cc2eb89a062f9c19ab42b4 --- /dev/null +++ b/hackfest/netconf/connection/server-key @@ -0,0 +1,40 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4gIBAAKCAYEAueh9Dsz3havrm3NltIudzPiDAWE1wxkl1iD7x2iAJNRmJaeL +WfMLgAVtC7DujsOpVjLbsPdvrKCvZf3PeJE9jzPYJNhAXhMErAaWm3bRfxK0L6et +/kHnFxTGkNHASMrAySRrJloP6zys8n2e8IQ3vq37SrmkcqnizhDpiSeBjYXtIQpD +4eutZ26pyQktAi/X413jQN0ociKane2JTbBvqdYP7nGVFraEhAL34H5u461lTltw +pAog1N5QW7b9Yc1zhFJFCcXeq9luD/y6Z5KzkbBYwxADJojdffrTTHbgz4r+uJkw +9m1K8sqBzIeBY95nmWbMR1iNzIQ97LW+ePebGPPfCO2+YLOkgZGtRs/zErO+8vl7 +cRsEh1MhQ/2qqUckZZEPKxCT32Pcogx8RPAlfUDhm0e7yBnKZktlzddT01cpo0yi +tDzCqTljklRL36tYFDwZBHgB1Yao28V/q0nCKokxhnPDQSjLAIVd8+f6pOctIitq +mO9g03JAVYrvAC4zAgMBAAECggGAbSxANG7ddJwvMgykT1AmDPZrSGYjwjyEYajg +8otFpVst2TL4vIvj1vxYuyLeFOyGBt668MN9yyxZlFVmfvEb63qQlaKAuj4E4ljE +HOu7vxnmwo1/ue5NnNpQeT8T4ite50ABxHXjH0t0bLqkma2rZsiY55r5HXTygfyg +iDCw/cEGLf7vOj7CiBkOj8ZZrg0WhKjgCXlWhSAZGGEj3oGcMWpJ1MbSvJHWZAey +NR1KVV3APjGohkyEVz1uh02AouyYxu0Oyu27i3NO3NSa0BLz6ct3U2wJFVt7zNIz +XcOr+YDcC0gz6yEz1O1e7+p1dOTL9+azA04Dq0IiSu6k94Rrmnvr42sMmDLi/JBN +ZP82nCOoPO31pdVoHqqG/s7+mjHGqTSC+l4wImZD5YGHRnGbOBarH75MG/PIDl6S +VSzVCZKPEnLkZ3lKC1R3WO5K16WCgqTGLisu4VjXALhHIMmJDNk3Kkv+EvLdXp5Q +hBbDlJCtgs7w8V88ci17ss9bmqWRAoHBAOl6T+gvTO2zbJ2LGXVJKGYFDR637GKJ +tPRyTPK8IJR6PN/VgQdJ70P2a3XEUIMSwH+6rBg+zNZnu7TkwDyyxImyjwtnhGjf +xAGfkj5inmsToBq5INxKBamito3QUyzZhYGfDO61r+e0agDpGYCll9EuhBeQ+00x +2x/vA0Btr4WzFnh3xdlozAcPvws3dXhybRPdgPbn90M2UW2ImdIV2GDJNN+vASbl +M9jhI1tm3KjCCfDzgKmvs48IpoRAwZJihQKBwQDL13Qxgk4L5uemi0fBR1Jwd0IE +gZ6E2rZWbzT5Fe9iSsN+1LHJqvs31We8FhN+sYujG1ZUUSt5bpFggXOw+LwDVOf2 +Bzer681YqkRKtu2wkEzRX0R1esMowba0s1Naonu1lohKKAcZJ4YHDBKjxYHH4+NR +mnFjjxtcnQ/mMVb+ZPjOaXvzCt7NfShlfztkClrDca3WgOh/Zed7+M+0S1rrOEpt +Wyph/Y76AzH/uzdEIPkToNqRIACXWOR2NOpn11cCgcAUb0gfIkSxaUrQXyRTR5vp +kfecAK0H0tWrr3VcqWqQlEJPtPgeEzKF2EN/gzcowbNneocleBmlil67bmoE5gCd +rKsobF8CbtNQ8Q5zt132MTmKHTnrDe+A8WTY9KrS+hbdSXZwTiafOQMuITjCMbwf +6tpU1bOpBfwPx3OZaAA8y3fkA1elt65jz9UAvlHhwOIbIv/unE7f6xklZRdRc+gE +UJf4G/EV3mmzScE2dsJJYvJLzIQuVdp5YmBwotpOXaECgcAKJI1ejUpO401xhwqp +/l+Gwxhg2wZFPBDImj37ivDfZjL2E6VJEJ3xeEfyHvMXYcQ9+HVCOsu7/hlzwN09 +2BKa49Wq80782f3cxJQjV5jaKUP5QxFH+zTMyV7K/QVPxDf9oCDl97nqsYHExgAD +cCd2B8ve2p17w7or0JDi9l+KxwFuW+dT/514ghrJehw9bRp5ESYCP2XSOQLcs1O6 +d+ltPN7PNDMWryQ3IoORYwJr/GwIYv+dKwd8gGrVyupDAn8CgcBJ7YIeLbV5nQ+g +Y2Ht748J3157Emckyxv5vE6QQqBzAN+WOWRjSqExbLnnTL9UsrMbYn0STxYRleti +eZmCSXu5msE1ZkwoGNRnyEAtoN0NPI92pB+rKZw2ERSjgtV9rPnmE4tvuz/dosxb +AjGCxal0bnwrnltq1xFqSWrjbvOfbf7bK68I6+T76ktqsGUhz3mdjzFp6cUducm/ +Ty6M1Y33OKW1ymOGnfaaTOuXWC6yLFjdB+aQg5wjNOIwuoHe750= +-----END RSA PRIVATE KEY----- + diff --git a/hackfest/netconf/connection/server-key.pub b/hackfest/netconf/connection/server-key.pub new file mode 100644 index 0000000000000000000000000000000000000000..faf095c812fe6ea34983f78cb03f23a0c0a41635 --- /dev/null +++ b/hackfest/netconf/connection/server-key.pub @@ -0,0 +1,2 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC56H0OzPeFq+ubc2W0i53M+IMBYTXDGSXWIPvHaIAk1GYlp4tZ8wuABW0LsO6Ow6lWMtuw92+soK9l/c94kT2PM9gk2EBeEwSsBpabdtF/ErQvp63+QecXFMaQ0cBIysDJJGsmWg/rPKzyfZ7whDe+rftKuaRyqeLOEOmJJ4GNhe0hCkPh661nbqnJCS0CL9fjXeNA3ShyIpqd7YlNsG+p1g/ucZUWtoSEAvfgfm7jrWVOW3CkCiDU3lBbtv1hzXOEUkUJxd6r2W4P/LpnkrORsFjDEAMmiN19+tNMduDPiv64mTD2bUryyoHMh4Fj3meZZsxHWI3MhD3stb5495sY898I7b5gs6SBka1Gz/MSs77y+XtxGwSHUyFD/aqpRyRlkQ8rEJPfY9yiDHxE8CV9QOGbR7vIGcpmS2XN11PTVymjTKK0PMKpOWOSVEvfq1gUPBkEeAHVhqjbxX+rScIqiTGGc8NBKMsAhV3z5/qk5y0iK2qY72DTckBViu8ALjM= chopps@tops + diff --git a/hackfest/netconf/connection/server_topology_connection.py b/hackfest/netconf/connection/server_topology_connection.py new file mode 100644 index 0000000000000000000000000000000000000000..928edfb87c2ab52e9d762eee42e3d7e2cdd78529 --- /dev/null +++ b/hackfest/netconf/connection/server_topology_connection.py @@ -0,0 +1,95 @@ +import sys +import time +import logging +import os + +import binding_topology +import binding_connection + +from pyangbind.lib.serialise import pybindIETFXMLEncoder, pybindIETFXMLDecoder + +from netconf import nsmap_add, NSMAP +from netconf import server, util +from lxml import etree + +logging.basicConfig(level=logging.DEBUG) + + +nsmap_add("topology", "urn:topology") +nsmap_add("connection", "urn:connection") + +class MyServer(object): + + def __init__(self, username, password, port): + host_key_value = os.path.join(os.path.abspath(os.path.dirname(__file__)), "server-key") + auth = server.SSHUserPassController(username=username, password=password) + auth.check_auth_none(username) + self.server = server.NetconfSSHServer(server_ctl=auth, server_methods=self, host_key=host_key_value, port=port, debug=True) + self.data = None + self.load_file() + + def load_file(self): + # create configuration + xml_root = open('topology.xml', 'r').read() + print(xml_root) + topo = pybindIETFXMLDecoder.decode(xml_root, binding_topology, "topology") + xml = pybindIETFXMLEncoder.serialise(topo) + tree = etree.XML(xml) + data = util.elm("nc:data") + data.append(tree) + connection = etree.XML( pybindIETFXMLEncoder.serialise( binding_connection.connection() ) ) + data.append(connection) + + self.data = data + + def nc_append_capabilities(self, capabilities): + logging.debug("--GET capabilities--") + util.subelm(capabilities, "capability").text = "urn:ietf:params:netconf:capability:xpath:1.0" + util.subelm(capabilities, "capability").text = NSMAP["topology"] + util.subelm(capabilities, "capability").text = NSMAP["connection"] + + def rpc_get_config(self, session, rpc, source_elm, filter_or_none): + logging.debug("--GET CONFIG--") + logging.debug(session) + logging.debug(etree.tostring(rpc)) + + return util.filter_results(rpc, self.data, None) + + + def rpc_edit_config(self, session, rpc, target, new_config): + logging.debug("--EDIT CONFIG--") + logging.debug(session) + + data_list = new_config.findall(".//xmlns:connection", namespaces={'xmlns': 'urn:connection'}) + for connect in data_list: + logging.debug("connect: " ) + logging.debug(etree.tostring(connect) ) + logging.debug("CURRENT CONNECTION") + logging.debug(etree.tostring(self.data[1]) ) + self.data[1].append(connect) + break + return util.filter_results(rpc, self.data, None) + + def close(self): + self.server.close() + + + + +def main(*margs): + s = MyServer("admin","admin", 8300) + + if sys.stdout.isatty(): + logging.debug("^C to quit server") + + try: + while True: + time.sleep(1) + + except Exception: + logging.debug("quitting server") + + s.close() + +if __name__ == "__main__": + main() diff --git a/hackfest/netconf/connection/topology.xml b/hackfest/netconf/connection/topology.xml new file mode 100644 index 0000000000000000000000000000000000000000..93af480850b540669f133a76b12519f5554b8850 --- /dev/null +++ b/hackfest/netconf/connection/topology.xml @@ -0,0 +1,23 @@ + + + + node1 + + node1portA + + + + node2 + + node2portA + + + + link1 + node1 + node1portA + node2 + node2portA + + + diff --git a/hackfest/netconf/server-key b/hackfest/netconf/server-key new file mode 100644 index 0000000000000000000000000000000000000000..7fc5e5f87d49b1b603cc2eb89a062f9c19ab42b4 --- /dev/null +++ b/hackfest/netconf/server-key @@ -0,0 +1,40 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4gIBAAKCAYEAueh9Dsz3havrm3NltIudzPiDAWE1wxkl1iD7x2iAJNRmJaeL +WfMLgAVtC7DujsOpVjLbsPdvrKCvZf3PeJE9jzPYJNhAXhMErAaWm3bRfxK0L6et +/kHnFxTGkNHASMrAySRrJloP6zys8n2e8IQ3vq37SrmkcqnizhDpiSeBjYXtIQpD +4eutZ26pyQktAi/X413jQN0ociKane2JTbBvqdYP7nGVFraEhAL34H5u461lTltw +pAog1N5QW7b9Yc1zhFJFCcXeq9luD/y6Z5KzkbBYwxADJojdffrTTHbgz4r+uJkw +9m1K8sqBzIeBY95nmWbMR1iNzIQ97LW+ePebGPPfCO2+YLOkgZGtRs/zErO+8vl7 +cRsEh1MhQ/2qqUckZZEPKxCT32Pcogx8RPAlfUDhm0e7yBnKZktlzddT01cpo0yi +tDzCqTljklRL36tYFDwZBHgB1Yao28V/q0nCKokxhnPDQSjLAIVd8+f6pOctIitq +mO9g03JAVYrvAC4zAgMBAAECggGAbSxANG7ddJwvMgykT1AmDPZrSGYjwjyEYajg +8otFpVst2TL4vIvj1vxYuyLeFOyGBt668MN9yyxZlFVmfvEb63qQlaKAuj4E4ljE +HOu7vxnmwo1/ue5NnNpQeT8T4ite50ABxHXjH0t0bLqkma2rZsiY55r5HXTygfyg +iDCw/cEGLf7vOj7CiBkOj8ZZrg0WhKjgCXlWhSAZGGEj3oGcMWpJ1MbSvJHWZAey +NR1KVV3APjGohkyEVz1uh02AouyYxu0Oyu27i3NO3NSa0BLz6ct3U2wJFVt7zNIz +XcOr+YDcC0gz6yEz1O1e7+p1dOTL9+azA04Dq0IiSu6k94Rrmnvr42sMmDLi/JBN +ZP82nCOoPO31pdVoHqqG/s7+mjHGqTSC+l4wImZD5YGHRnGbOBarH75MG/PIDl6S +VSzVCZKPEnLkZ3lKC1R3WO5K16WCgqTGLisu4VjXALhHIMmJDNk3Kkv+EvLdXp5Q +hBbDlJCtgs7w8V88ci17ss9bmqWRAoHBAOl6T+gvTO2zbJ2LGXVJKGYFDR637GKJ +tPRyTPK8IJR6PN/VgQdJ70P2a3XEUIMSwH+6rBg+zNZnu7TkwDyyxImyjwtnhGjf +xAGfkj5inmsToBq5INxKBamito3QUyzZhYGfDO61r+e0agDpGYCll9EuhBeQ+00x +2x/vA0Btr4WzFnh3xdlozAcPvws3dXhybRPdgPbn90M2UW2ImdIV2GDJNN+vASbl +M9jhI1tm3KjCCfDzgKmvs48IpoRAwZJihQKBwQDL13Qxgk4L5uemi0fBR1Jwd0IE +gZ6E2rZWbzT5Fe9iSsN+1LHJqvs31We8FhN+sYujG1ZUUSt5bpFggXOw+LwDVOf2 +Bzer681YqkRKtu2wkEzRX0R1esMowba0s1Naonu1lohKKAcZJ4YHDBKjxYHH4+NR +mnFjjxtcnQ/mMVb+ZPjOaXvzCt7NfShlfztkClrDca3WgOh/Zed7+M+0S1rrOEpt +Wyph/Y76AzH/uzdEIPkToNqRIACXWOR2NOpn11cCgcAUb0gfIkSxaUrQXyRTR5vp +kfecAK0H0tWrr3VcqWqQlEJPtPgeEzKF2EN/gzcowbNneocleBmlil67bmoE5gCd +rKsobF8CbtNQ8Q5zt132MTmKHTnrDe+A8WTY9KrS+hbdSXZwTiafOQMuITjCMbwf +6tpU1bOpBfwPx3OZaAA8y3fkA1elt65jz9UAvlHhwOIbIv/unE7f6xklZRdRc+gE +UJf4G/EV3mmzScE2dsJJYvJLzIQuVdp5YmBwotpOXaECgcAKJI1ejUpO401xhwqp +/l+Gwxhg2wZFPBDImj37ivDfZjL2E6VJEJ3xeEfyHvMXYcQ9+HVCOsu7/hlzwN09 +2BKa49Wq80782f3cxJQjV5jaKUP5QxFH+zTMyV7K/QVPxDf9oCDl97nqsYHExgAD +cCd2B8ve2p17w7or0JDi9l+KxwFuW+dT/514ghrJehw9bRp5ESYCP2XSOQLcs1O6 +d+ltPN7PNDMWryQ3IoORYwJr/GwIYv+dKwd8gGrVyupDAn8CgcBJ7YIeLbV5nQ+g +Y2Ht748J3157Emckyxv5vE6QQqBzAN+WOWRjSqExbLnnTL9UsrMbYn0STxYRleti +eZmCSXu5msE1ZkwoGNRnyEAtoN0NPI92pB+rKZw2ERSjgtV9rPnmE4tvuz/dosxb +AjGCxal0bnwrnltq1xFqSWrjbvOfbf7bK68I6+T76ktqsGUhz3mdjzFp6cUducm/ +Ty6M1Y33OKW1ymOGnfaaTOuXWC6yLFjdB+aQg5wjNOIwuoHe750= +-----END RSA PRIVATE KEY----- + diff --git a/hackfest/netconf/server-key.pub b/hackfest/netconf/server-key.pub new file mode 100644 index 0000000000000000000000000000000000000000..faf095c812fe6ea34983f78cb03f23a0c0a41635 --- /dev/null +++ b/hackfest/netconf/server-key.pub @@ -0,0 +1,2 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC56H0OzPeFq+ubc2W0i53M+IMBYTXDGSXWIPvHaIAk1GYlp4tZ8wuABW0LsO6Ow6lWMtuw92+soK9l/c94kT2PM9gk2EBeEwSsBpabdtF/ErQvp63+QecXFMaQ0cBIysDJJGsmWg/rPKzyfZ7whDe+rftKuaRyqeLOEOmJJ4GNhe0hCkPh661nbqnJCS0CL9fjXeNA3ShyIpqd7YlNsG+p1g/ucZUWtoSEAvfgfm7jrWVOW3CkCiDU3lBbtv1hzXOEUkUJxd6r2W4P/LpnkrORsFjDEAMmiN19+tNMduDPiv64mTD2bUryyoHMh4Fj3meZZsxHWI3MhD3stb5495sY898I7b5gs6SBka1Gz/MSs77y+XtxGwSHUyFD/aqpRyRlkQ8rEJPfY9yiDHxE8CV9QOGbR7vIGcpmS2XN11PTVymjTKK0PMKpOWOSVEvfq1gUPBkEeAHVhqjbxX+rScIqiTGGc8NBKMsAhV3z5/qk5y0iK2qY72DTckBViu8ALjM= chopps@tops + diff --git a/hackfest/netconf/server_topology.py b/hackfest/netconf/server_topology.py new file mode 100644 index 0000000000000000000000000000000000000000..84460c84b6d10ba580e1a93fd7f30a5b9ea87cb6 --- /dev/null +++ b/hackfest/netconf/server_topology.py @@ -0,0 +1,71 @@ +import sys +import time +import logging +import os + +import binding_topology +from pyangbind.lib.serialise import pybindIETFXMLEncoder, pybindIETFXMLDecoder + +from netconf import nsmap_add, NSMAP +from netconf import server, util +from lxml import etree + +logging.basicConfig(level=logging.DEBUG) + + +nsmap_add("topology", "urn:topology") + +class MyServer(object): + + def __init__(self, username, password, port): + host_key_value = os.path.join(os.path.abspath(os.path.dirname(__file__)), "server-key") + auth = server.SSHUserPassController(username=username, password=password) + self.server = server.NetconfSSHServer(server_ctl=auth, server_methods=self, port=port, host_key=host_key_value, debug=False) + self.load_file() + + def load_file(self): + # create configuration + xml_root = open('topology.xml', 'r').read() + print(xml_root) + topo = pybindIETFXMLDecoder.decode(xml_root, binding_topology, "topology") + xml = pybindIETFXMLEncoder.serialise(topo) + tree = etree.XML(xml) + data = util.elm("nc:data") + data.append(tree) + self.node_topology = data + + def nc_append_capabilities(self, capabilities): + util.subelm(capabilities, "capability").text = "urn:ietf:params:netconf:capability:xpath:1.0" + util.subelm(capabilities, "capability").text = NSMAP["topology"] + + def rpc_get_config(self, session, rpc, source_elm, filter_or_none): + logging.debug("--GET CONFIG--") + logging.debug(session) + logging.debug(etree.tostring(rpc)) + + return util.filter_results(rpc, self.node_topology, None) + + + def close(self): + self.server.close() + + + + +def main(*margs): + s = MyServer("admin","admin", 8300) + + if sys.stdout.isatty(): + logging.debug("^C to quit server") + + try: + while True: + time.sleep(1) + + except Exception: + logging.debug("quitting server") + + s.close() + +if __name__ == "__main__": + main() diff --git a/hackfest/netconf/topology.xml b/hackfest/netconf/topology.xml new file mode 100644 index 0000000000000000000000000000000000000000..93af480850b540669f133a76b12519f5554b8850 --- /dev/null +++ b/hackfest/netconf/topology.xml @@ -0,0 +1,23 @@ + + + + node1 + + node1portA + + + + node2 + + node2portA + + + + link1 + node1 + node1portA + node2 + node2portA + + + diff --git a/hackfest/onos_api/commands.txt b/hackfest/onos_api/commands.txt new file mode 100644 index 0000000000000000000000000000000000000000..cac0169e63fac4b16bee718ab0720e2589ffb103 --- /dev/null +++ b/hackfest/onos_api/commands.txt @@ -0,0 +1,45 @@ +== APPENDIX: CONFD +$ cd ~/tfs-ctrl/hackfest/netconf +$ unzip confd-basic-6.4.linux.x86_64.zip +$ cd confd-basic-6.4.linux.x86_64/ +$ ./confd-basic-6.4.linux.x86_64.installer.bin /root/confd/ + +Data model compilation +$ cd /root/confd/bin/ +$ ./confdc -c ~/tfs-ctrl/hackfest/yang/topology.yang + +Start ConfD +$ ./confd --foreground -v --addloadpath . + +In another terminal, use ConfD-client to populate model +$ cd /root/confd/bin/ +$ ./confd_cli +> conf +> topology node node1 +> exit +> commit +> exit +> exit + +Use ConfD-client to show db +$ ./confd_cli +> conf +> show full-configuration +> exit +> exit + +== RUN ONOS +$ cd /root/onos-2.1.0/apache-karaf-4.2.3/bin/ +$ ./karaf clean +> app activate org.onosproject.openflow +> app activate org.onosproject.gui + +In another terminal, run mininet: +$ mn --topo linear,3 --mac --controller=remote,ip=127.0.0.1,port=6653 --switch ovs,protocols=OpenFlow13 + +In another terminal, we use ONOS REST API: +$ curl -X GET -u onos:rocks --header 'Accept: application/json' http://localhost:8181/onos/v1/links | python -m json.tool +$ cd ~/tfs-ctrl/hackfest/onos_api/ +$ python3 onos_topology.py + + diff --git a/hackfest/onos_api/onos_flows.py b/hackfest/onos_api/onos_flows.py new file mode 100644 index 0000000000000000000000000000000000000000..b2df4b5a22a7b419b4331792adf9078b0bd363a3 --- /dev/null +++ b/hackfest/onos_api/onos_flows.py @@ -0,0 +1,53 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import requests +from requests.auth import HTTPBasicAuth +import json + +IP='localhost' +PORT='8181' +USER='onos' +PASSWORD='rocks' + +URL = 'http://' + IP + ':' + PORT + '/onos/v1/flows/' + +def insertFlow( nodeId, priority, inport, outport ): + + flow='{ "priority": '+priority+', "timeout": 0, "isPermanent": true, "deviceId": "'+nodeId+'", "treatment": { "instructions": [ { "type": "OUTPUT", "port": "'+outport+'" } ] }, "selector": { "criteria": [ { "type": "IN_PORT", "port": "'+inport+'" } ] } }' + + + print ("Flow: " + flow) + url = URL + nodeId + '?appId=tuto' + headers = {'content-type': 'application/json'} + print (url) + response = requests.post(url, data=flow, + headers=headers, auth=HTTPBasicAuth(USER, + PASSWORD)) + print (response) + return response.status_code + +def deleteFlows(): + + url = URL + '' + 'application/'+'tuto' + response = requests.delete(url, auth=HTTPBasicAuth(USER, PASSWORD)) + print (response) + return response.status_code + + + +if __name__ == "__main__": + + print ("Setting flow") + + res = insertFlow(nodeId="of:0000000000000001", priority="40001", inport="1", outport="2") + print (res) + + #deleteFlows() + + + + + + + diff --git a/hackfest/onos_api/onos_topology.py b/hackfest/onos_api/onos_topology.py new file mode 100644 index 0000000000000000000000000000000000000000..c008263d2a4af9bde226e564884ff5a3c800b52b --- /dev/null +++ b/hackfest/onos_api/onos_topology.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import requests +from requests.auth import HTTPBasicAuth +import json + +IP='127.0.0.1' +PORT='8181' +USER='onos' +PASSWORD='rocks' + +def retrieveTopology(ip, port, user, password): + http_json = 'http://' + ip + ':' + port + '/onos/v1/links' + response = requests.get(http_json, auth=HTTPBasicAuth(user, password)) + topology = response.json() + return topology + +if __name__ == "__main__": + + print ("Reading network-topology") + topo = retrieveTopology(IP, PORT, USER, PASSWORD) + print ( json.dumps(topo, indent=4, sort_keys=True) ) + + + diff --git a/hackfest/openconfig/generated.go b/hackfest/openconfig/generated.go new file mode 100644 index 0000000000000000000000000000000000000000..f4ab51ad2c76ba9c41601335881afce4da316868 --- /dev/null +++ b/hackfest/openconfig/generated.go @@ -0,0 +1,8540 @@ +/* +Package gostruct is a generated package which contains definitions +of structs which represent a YANG schema. The generated schema can be +compressed by a series of transformations (compression was false +in this case). + +This package was generated by /usr/share/gocode/src/github.com/openconfig/ygot/ygen/commongen.go +using the following YANG input files: + - /root/public/release/models/optical-transport/openconfig-terminal-device.yang + - /root/public/release/models/types/openconfig-types.yang + - /root/public/release/models/openconfig-extensions.yang + - /root/public/release/models/platform/openconfig-platform-types.yang + - /root/public/release/models/system/openconfig-alarm-types.yang + - /root/public/release/models/lldp/openconfig-lldp.yang + - /root/public/release/models/interfaces/openconfig-interfaces.yang +Imported modules were sourced from: +*/ +package gostruct + +import ( + "encoding/json" + "fmt" + "reflect" + + "github.com/openconfig/ygot/ygot" + "github.com/openconfig/goyang/pkg/yang" + "github.com/openconfig/ygot/ytypes" +) + +// Binary is a type that is used for fields that have a YANG type of +// binary. It is used such that binary fields can be distinguished from +// leaf-lists of uint8s (which are mapped to []uint8, equivalent to +// []byte in reflection). +type Binary []byte + +// YANGEmpty is a type that is used for fields that have a YANG type of +// empty. It is used such that empty fields can be distinguished from boolean fields +// in the generated code. +type YANGEmpty bool + +var ( + SchemaTree map[string]*yang.Entry +) + +func init() { + var err error + if SchemaTree, err = UnzipSchema(); err != nil { + panic("schema error: " + err.Error()) + } +} + +// Schema returns the details of the generated schema. +func Schema() (*ytypes.Schema, error) { + uzp, err := UnzipSchema() + if err != nil { + return nil, fmt.Errorf("cannot unzip schema, %v", err) + } + + return &ytypes.Schema{ + Root: &Device{}, + SchemaTree: uzp, + Unmarshal: Unmarshal, + }, nil +} + +// UnzipSchema unzips the zipped schema and returns a map of yang.Entry nodes, +// keyed by the name of the struct that the yang.Entry describes the schema for. +func UnzipSchema() (map[string]*yang.Entry, error) { + var schemaTree map[string]*yang.Entry + var err error + if schemaTree, err = ygot.GzipToSchema(ySchema); err != nil { + return nil, fmt.Errorf("could not unzip the schema; %v", err) + } + return schemaTree, nil +} + +// Unmarshal unmarshals data, which must be RFC7951 JSON format, into +// destStruct, which must be non-nil and the correct GoStruct type. It returns +// an error if the destStruct is not found in the schema or the data cannot be +// unmarshaled. The supplied options (opts) are used to control the behaviour +// of the unmarshal function - for example, determining whether errors are +// thrown for unknown fields in the input JSON. +func Unmarshal(data []byte, destStruct ygot.GoStruct, opts ...ytypes.UnmarshalOpt) error { + tn := reflect.TypeOf(destStruct).Elem().Name() + schema, ok := SchemaTree[tn] + if !ok { + return fmt.Errorf("could not find schema for type %s", tn ) + } + var jsonTree interface{} + if err := json.Unmarshal([]byte(data), &jsonTree); err != nil { + return err + } + return ytypes.Unmarshal(schema, destStruct, jsonTree, opts...) +} + +// Device represents the /device YANG schema element. +type Device struct { + Components *OpenconfigPlatform_Components `path:"components" module:"openconfig-platform"` + Interfaces *OpenconfigInterfaces_Interfaces `path:"interfaces" module:"openconfig-interfaces"` + InterfacesState *IETFInterfaces_InterfacesState `path:"interfaces-state" module:"ietf-interfaces"` + Lldp *OpenconfigLldp_Lldp `path:"lldp" module:"openconfig-lldp"` + TerminalDevice *OpenconfigTerminalDevice_TerminalDevice `path:"terminal-device" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that Device implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Device) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Device) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Device"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Device) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// IETFInterfaces_InterfacesState represents the /ietf-interfaces/interfaces-state YANG schema element. +type IETFInterfaces_InterfacesState struct { + Interface map[string]*IETFInterfaces_InterfacesState_Interface `path:"interface" module:"ietf-interfaces"` +} + +// IsYANGGoStruct ensures that IETFInterfaces_InterfacesState implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*IETFInterfaces_InterfacesState) IsYANGGoStruct() {} + +// NewInterface creates a new entry in the Interface list of the +// IETFInterfaces_InterfacesState struct. The keys of the list are populated from the input +// arguments. +func (t *IETFInterfaces_InterfacesState) NewInterface(Name string) (*IETFInterfaces_InterfacesState_Interface, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Interface == nil { + t.Interface = make(map[string]*IETFInterfaces_InterfacesState_Interface) + } + + key := Name + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Interface[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Interface", key) + } + + t.Interface[key] = &IETFInterfaces_InterfacesState_Interface{ + Name: &Name, + } + + return t.Interface[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *IETFInterfaces_InterfacesState) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["IETFInterfaces_InterfacesState"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *IETFInterfaces_InterfacesState) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// IETFInterfaces_InterfacesState_Interface represents the /ietf-interfaces/interfaces-state/interface YANG schema element. +type IETFInterfaces_InterfacesState_Interface struct { + AdminStatus E_IETFInterfaces_InterfacesState_Interface_AdminStatus `path:"admin-status" module:"ietf-interfaces"` + HigherLayerIf []string `path:"higher-layer-if" module:"ietf-interfaces"` + IfIndex *int32 `path:"if-index" module:"ietf-interfaces"` + LastChange *string `path:"last-change" module:"ietf-interfaces"` + LowerLayerIf []string `path:"lower-layer-if" module:"ietf-interfaces"` + Name *string `path:"name" module:"ietf-interfaces"` + OperStatus E_IETFInterfaces_InterfacesState_Interface_OperStatus `path:"oper-status" module:"ietf-interfaces"` + PhysAddress *string `path:"phys-address" module:"ietf-interfaces"` + Speed *uint64 `path:"speed" module:"ietf-interfaces"` + Statistics *IETFInterfaces_InterfacesState_Interface_Statistics `path:"statistics" module:"ietf-interfaces"` + Type E_IETFInterfaces_InterfaceType `path:"type" module:"ietf-interfaces"` +} + +// IsYANGGoStruct ensures that IETFInterfaces_InterfacesState_Interface implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*IETFInterfaces_InterfacesState_Interface) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the IETFInterfaces_InterfacesState_Interface struct, which is a YANG list entry. +func (t *IETFInterfaces_InterfacesState_Interface) ΛListKeyMap() (map[string]interface{}, error) { + if t.Name == nil { + return nil, fmt.Errorf("nil value for key Name") + } + + return map[string]interface{}{ + "name": *t.Name, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *IETFInterfaces_InterfacesState_Interface) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["IETFInterfaces_InterfacesState_Interface"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *IETFInterfaces_InterfacesState_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// IETFInterfaces_InterfacesState_Interface_Statistics represents the /ietf-interfaces/interfaces-state/interface/statistics YANG schema element. +type IETFInterfaces_InterfacesState_Interface_Statistics struct { + DiscontinuityTime *string `path:"discontinuity-time" module:"ietf-interfaces"` + InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"ietf-interfaces"` + InDiscards *uint32 `path:"in-discards" module:"ietf-interfaces"` + InErrors *uint32 `path:"in-errors" module:"ietf-interfaces"` + InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"ietf-interfaces"` + InOctets *uint64 `path:"in-octets" module:"ietf-interfaces"` + InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"ietf-interfaces"` + InUnknownProtos *uint32 `path:"in-unknown-protos" module:"ietf-interfaces"` + OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"ietf-interfaces"` + OutDiscards *uint32 `path:"out-discards" module:"ietf-interfaces"` + OutErrors *uint32 `path:"out-errors" module:"ietf-interfaces"` + OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"ietf-interfaces"` + OutOctets *uint64 `path:"out-octets" module:"ietf-interfaces"` + OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"ietf-interfaces"` +} + +// IsYANGGoStruct ensures that IETFInterfaces_InterfacesState_Interface_Statistics implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*IETFInterfaces_InterfacesState_Interface_Statistics) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *IETFInterfaces_InterfacesState_Interface_Statistics) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["IETFInterfaces_InterfacesState_Interface_Statistics"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *IETFInterfaces_InterfacesState_Interface_Statistics) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces represents the /openconfig-interfaces/interfaces YANG schema element. +type OpenconfigInterfaces_Interfaces struct { + Interface map[string]*OpenconfigInterfaces_Interfaces_Interface `path:"interface" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces) IsYANGGoStruct() {} + +// NewInterface creates a new entry in the Interface list of the +// OpenconfigInterfaces_Interfaces struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigInterfaces_Interfaces) NewInterface(Name string) (*OpenconfigInterfaces_Interfaces_Interface, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Interface == nil { + t.Interface = make(map[string]*OpenconfigInterfaces_Interfaces_Interface) + } + + key := Name + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Interface[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Interface", key) + } + + t.Interface[key] = &OpenconfigInterfaces_Interfaces_Interface{ + Name: &Name, + } + + return t.Interface[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface represents the /openconfig-interfaces/interfaces/interface YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface struct { + Config *OpenconfigInterfaces_Interfaces_Interface_Config `path:"config" module:"openconfig-interfaces"` + Ethernet *OpenconfigInterfaces_Interfaces_Interface_Ethernet `path:"ethernet" module:"openconfig-if-ethernet"` + HoldTime *OpenconfigInterfaces_Interfaces_Interface_HoldTime `path:"hold-time" module:"openconfig-interfaces"` + Name *string `path:"name" module:"openconfig-interfaces"` + State *OpenconfigInterfaces_Interfaces_Interface_State `path:"state" module:"openconfig-interfaces"` + Subinterfaces *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces `path:"subinterfaces" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigInterfaces_Interfaces_Interface struct, which is a YANG list entry. +func (t *OpenconfigInterfaces_Interfaces_Interface) ΛListKeyMap() (map[string]interface{}, error) { + if t.Name == nil { + return nil, fmt.Errorf("nil value for key Name") + } + + return map[string]interface{}{ + "name": *t.Name, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_Config represents the /openconfig-interfaces/interfaces/interface/config YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_Config struct { + Description *string `path:"description" module:"openconfig-interfaces"` + Enabled *bool `path:"enabled" module:"openconfig-interfaces"` + LoopbackMode *bool `path:"loopback-mode" module:"openconfig-interfaces"` + Mtu *uint16 `path:"mtu" module:"openconfig-interfaces"` + Name *string `path:"name" module:"openconfig-interfaces"` + Type E_IETFInterfaces_InterfaceType `path:"type" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_Ethernet represents the /openconfig-interfaces/interfaces/interface/ethernet YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_Ethernet struct { + Config *OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config `path:"config" module:"openconfig-if-ethernet"` + State *OpenconfigInterfaces_Interfaces_Interface_Ethernet_State `path:"state" module:"openconfig-if-ethernet"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Ethernet implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_Ethernet) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_Ethernet) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Ethernet"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_Ethernet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config represents the /openconfig-interfaces/interfaces/interface/ethernet/config YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config struct { + AutoNegotiate *bool `path:"auto-negotiate" module:"openconfig-if-ethernet"` + DuplexMode E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode `path:"duplex-mode" module:"openconfig-if-ethernet"` + EnableFlowControl *bool `path:"enable-flow-control" module:"openconfig-if-ethernet"` + MacAddress *string `path:"mac-address" module:"openconfig-if-ethernet"` + PortSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"port-speed" module:"openconfig-if-ethernet"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_Ethernet_State represents the /openconfig-interfaces/interfaces/interface/ethernet/state YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_Ethernet_State struct { + AutoNegotiate *bool `path:"auto-negotiate" module:"openconfig-if-ethernet"` + Counters *OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_Counters `path:"counters" module:"openconfig-if-ethernet"` + DuplexMode E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode `path:"duplex-mode" module:"openconfig-if-ethernet"` + EnableFlowControl *bool `path:"enable-flow-control" module:"openconfig-if-ethernet"` + HwMacAddress *string `path:"hw-mac-address" module:"openconfig-if-ethernet"` + MacAddress *string `path:"mac-address" module:"openconfig-if-ethernet"` + NegotiatedDuplexMode E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode `path:"negotiated-duplex-mode" module:"openconfig-if-ethernet"` + NegotiatedPortSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"negotiated-port-speed" module:"openconfig-if-ethernet"` + PortSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"port-speed" module:"openconfig-if-ethernet"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Ethernet_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_Ethernet_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_Ethernet_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Ethernet_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_Ethernet_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_Counters represents the /openconfig-interfaces/interfaces/interface/ethernet/state/counters YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_Counters struct { + In_8021QFrames *uint64 `path:"in-8021q-frames" module:"openconfig-if-ethernet"` + InBlockErrors *uint64 `path:"in-block-errors" module:"openconfig-if-ethernet"` + InCrcErrors *uint64 `path:"in-crc-errors" module:"openconfig-if-ethernet"` + InFragmentFrames *uint64 `path:"in-fragment-frames" module:"openconfig-if-ethernet"` + InJabberFrames *uint64 `path:"in-jabber-frames" module:"openconfig-if-ethernet"` + InMacControlFrames *uint64 `path:"in-mac-control-frames" module:"openconfig-if-ethernet"` + InMacPauseFrames *uint64 `path:"in-mac-pause-frames" module:"openconfig-if-ethernet"` + InOversizeFrames *uint64 `path:"in-oversize-frames" module:"openconfig-if-ethernet"` + InUndersizeFrames *uint64 `path:"in-undersize-frames" module:"openconfig-if-ethernet"` + Out_8021QFrames *uint64 `path:"out-8021q-frames" module:"openconfig-if-ethernet"` + OutMacControlFrames *uint64 `path:"out-mac-control-frames" module:"openconfig-if-ethernet"` + OutMacPauseFrames *uint64 `path:"out-mac-pause-frames" module:"openconfig-if-ethernet"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_Counters implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_Counters) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_Counters) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_Counters"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_HoldTime represents the /openconfig-interfaces/interfaces/interface/hold-time YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_HoldTime struct { + Config *OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config `path:"config" module:"openconfig-interfaces"` + State *OpenconfigInterfaces_Interfaces_Interface_HoldTime_State `path:"state" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_HoldTime implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_HoldTime) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_HoldTime"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config represents the /openconfig-interfaces/interfaces/interface/hold-time/config YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config struct { + Down *uint32 `path:"down" module:"openconfig-interfaces"` + Up *uint32 `path:"up" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_HoldTime_State represents the /openconfig-interfaces/interfaces/interface/hold-time/state YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_HoldTime_State struct { + Down *uint32 `path:"down" module:"openconfig-interfaces"` + Up *uint32 `path:"up" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_HoldTime_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_HoldTime_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_HoldTime_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_State represents the /openconfig-interfaces/interfaces/interface/state YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_State struct { + AdminStatus E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus `path:"admin-status" module:"openconfig-interfaces"` + Counters *OpenconfigInterfaces_Interfaces_Interface_State_Counters `path:"counters" module:"openconfig-interfaces"` + Description *string `path:"description" module:"openconfig-interfaces"` + Enabled *bool `path:"enabled" module:"openconfig-interfaces"` + HardwarePort *string `path:"hardware-port" module:"openconfig-platform-port"` + Ifindex *uint32 `path:"ifindex" module:"openconfig-interfaces"` + LastChange *uint64 `path:"last-change" module:"openconfig-interfaces"` + Logical *bool `path:"logical" module:"openconfig-interfaces"` + LoopbackMode *bool `path:"loopback-mode" module:"openconfig-interfaces"` + Mtu *uint16 `path:"mtu" module:"openconfig-interfaces"` + Name *string `path:"name" module:"openconfig-interfaces"` + OperStatus E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus `path:"oper-status" module:"openconfig-interfaces"` + PhysicalChannel []uint16 `path:"physical-channel" module:"openconfig-platform-transceiver"` + Transceiver *string `path:"transceiver" module:"openconfig-platform-transceiver"` + Type E_IETFInterfaces_InterfaceType `path:"type" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_State_Counters represents the /openconfig-interfaces/interfaces/interface/state/counters YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_State_Counters struct { + CarrierTransitions *uint64 `path:"carrier-transitions" module:"openconfig-interfaces"` + InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"openconfig-interfaces"` + InDiscards *uint64 `path:"in-discards" module:"openconfig-interfaces"` + InErrors *uint64 `path:"in-errors" module:"openconfig-interfaces"` + InFcsErrors *uint64 `path:"in-fcs-errors" module:"openconfig-interfaces"` + InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"openconfig-interfaces"` + InOctets *uint64 `path:"in-octets" module:"openconfig-interfaces"` + InPkts *uint64 `path:"in-pkts" module:"openconfig-interfaces"` + InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"openconfig-interfaces"` + InUnknownProtos *uint64 `path:"in-unknown-protos" module:"openconfig-interfaces"` + LastClear *uint64 `path:"last-clear" module:"openconfig-interfaces"` + OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"openconfig-interfaces"` + OutDiscards *uint64 `path:"out-discards" module:"openconfig-interfaces"` + OutErrors *uint64 `path:"out-errors" module:"openconfig-interfaces"` + OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"openconfig-interfaces"` + OutOctets *uint64 `path:"out-octets" module:"openconfig-interfaces"` + OutPkts *uint64 `path:"out-pkts" module:"openconfig-interfaces"` + OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_State_Counters implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_State_Counters) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_State_Counters) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_State_Counters"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_State_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces represents the /openconfig-interfaces/interfaces/interface/subinterfaces YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_Subinterfaces struct { + Subinterface map[uint32]*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface `path:"subinterface" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Subinterfaces implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces) IsYANGGoStruct() {} + +// NewSubinterface creates a new entry in the Subinterface list of the +// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces) NewSubinterface(Index uint32) (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Subinterface == nil { + t.Subinterface = make(map[uint32]*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface) + } + + key := Index + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Subinterface[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Subinterface", key) + } + + t.Subinterface[key] = &OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface{ + Index: &Index, + } + + return t.Subinterface[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Subinterfaces"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface struct { + Config *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config `path:"config" module:"openconfig-interfaces"` + Index *uint32 `path:"index" module:"openconfig-interfaces"` + State *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State `path:"state" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface struct, which is a YANG list entry. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface) ΛListKeyMap() (map[string]interface{}, error) { + if t.Index == nil { + return nil, fmt.Errorf("nil value for key Index") + } + + return map[string]interface{}{ + "index": *t.Index, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/config YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config struct { + Description *string `path:"description" module:"openconfig-interfaces"` + Enabled *bool `path:"enabled" module:"openconfig-interfaces"` + Index *uint32 `path:"index" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/state YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State struct { + AdminStatus E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus `path:"admin-status" module:"openconfig-interfaces"` + Counters *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters `path:"counters" module:"openconfig-interfaces"` + Description *string `path:"description" module:"openconfig-interfaces"` + Enabled *bool `path:"enabled" module:"openconfig-interfaces"` + Ifindex *uint32 `path:"ifindex" module:"openconfig-interfaces"` + Index *uint32 `path:"index" module:"openconfig-interfaces"` + LastChange *uint64 `path:"last-change" module:"openconfig-interfaces"` + Logical *bool `path:"logical" module:"openconfig-interfaces"` + Name *string `path:"name" module:"openconfig-interfaces"` + OperStatus E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus `path:"oper-status" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/state/counters YANG schema element. +type OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters struct { + CarrierTransitions *uint64 `path:"carrier-transitions" module:"openconfig-interfaces"` + InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"openconfig-interfaces"` + InDiscards *uint64 `path:"in-discards" module:"openconfig-interfaces"` + InErrors *uint64 `path:"in-errors" module:"openconfig-interfaces"` + InFcsErrors *uint64 `path:"in-fcs-errors" module:"openconfig-interfaces"` + InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"openconfig-interfaces"` + InOctets *uint64 `path:"in-octets" module:"openconfig-interfaces"` + InPkts *uint64 `path:"in-pkts" module:"openconfig-interfaces"` + InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"openconfig-interfaces"` + InUnknownProtos *uint64 `path:"in-unknown-protos" module:"openconfig-interfaces"` + LastClear *uint64 `path:"last-clear" module:"openconfig-interfaces"` + OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"openconfig-interfaces"` + OutDiscards *uint64 `path:"out-discards" module:"openconfig-interfaces"` + OutErrors *uint64 `path:"out-errors" module:"openconfig-interfaces"` + OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"openconfig-interfaces"` + OutOctets *uint64 `path:"out-octets" module:"openconfig-interfaces"` + OutPkts *uint64 `path:"out-pkts" module:"openconfig-interfaces"` + OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp represents the /openconfig-lldp/lldp YANG schema element. +type OpenconfigLldp_Lldp struct { + Config *OpenconfigLldp_Lldp_Config `path:"config" module:"openconfig-lldp"` + Interfaces *OpenconfigLldp_Lldp_Interfaces `path:"interfaces" module:"openconfig-lldp"` + State *OpenconfigLldp_Lldp_State `path:"state" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Config represents the /openconfig-lldp/lldp/config YANG schema element. +type OpenconfigLldp_Lldp_Config struct { + ChassisId *string `path:"chassis-id" module:"openconfig-lldp"` + ChassisIdType E_OpenconfigLldp_ChassisIdType `path:"chassis-id-type" module:"openconfig-lldp"` + Enabled *bool `path:"enabled" module:"openconfig-lldp"` + HelloTimer *uint64 `path:"hello-timer" module:"openconfig-lldp"` + SuppressTlvAdvertisement []E_OpenconfigLldpTypes_LLDP_TLV `path:"suppress-tlv-advertisement" module:"openconfig-lldp"` + SystemDescription *string `path:"system-description" module:"openconfig-lldp"` + SystemName *string `path:"system-name" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces represents the /openconfig-lldp/lldp/interfaces YANG schema element. +type OpenconfigLldp_Lldp_Interfaces struct { + Interface map[string]*OpenconfigLldp_Lldp_Interfaces_Interface `path:"interface" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces) IsYANGGoStruct() {} + +// NewInterface creates a new entry in the Interface list of the +// OpenconfigLldp_Lldp_Interfaces struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigLldp_Lldp_Interfaces) NewInterface(Name string) (*OpenconfigLldp_Lldp_Interfaces_Interface, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Interface == nil { + t.Interface = make(map[string]*OpenconfigLldp_Lldp_Interfaces_Interface) + } + + key := Name + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Interface[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Interface", key) + } + + t.Interface[key] = &OpenconfigLldp_Lldp_Interfaces_Interface{ + Name: &Name, + } + + return t.Interface[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface represents the /openconfig-lldp/lldp/interfaces/interface YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface struct { + Config *OpenconfigLldp_Lldp_Interfaces_Interface_Config `path:"config" module:"openconfig-lldp"` + Name *string `path:"name" module:"openconfig-lldp"` + Neighbors *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors `path:"neighbors" module:"openconfig-lldp"` + State *OpenconfigLldp_Lldp_Interfaces_Interface_State `path:"state" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigLldp_Lldp_Interfaces_Interface struct, which is a YANG list entry. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface) ΛListKeyMap() (map[string]interface{}, error) { + if t.Name == nil { + return nil, fmt.Errorf("nil value for key Name") + } + + return map[string]interface{}{ + "name": *t.Name, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Config represents the /openconfig-lldp/lldp/interfaces/interface/config YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Config struct { + Enabled *bool `path:"enabled" module:"openconfig-lldp"` + Name *string `path:"name" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors represents the /openconfig-lldp/lldp/interfaces/interface/neighbors YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors struct { + Neighbor map[string]*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor `path:"neighbor" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors) IsYANGGoStruct() {} + +// NewNeighbor creates a new entry in the Neighbor list of the +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors) NewNeighbor(Id string) (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Neighbor == nil { + t.Neighbor = make(map[string]*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor) + } + + key := Id + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Neighbor[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) + } + + t.Neighbor[key] = &OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor{ + Id: &Id, + } + + return t.Neighbor[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor struct { + Capabilities *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities `path:"capabilities" module:"openconfig-lldp"` + Config *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Config `path:"config" module:"openconfig-lldp"` + CustomTlvs *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs `path:"custom-tlvs" module:"openconfig-lldp"` + Id *string `path:"id" module:"openconfig-lldp"` + State *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_State `path:"state" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor struct, which is a YANG list entry. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { + if t.Id == nil { + return nil, fmt.Errorf("nil value for key Id") + } + + return map[string]interface{}{ + "id": *t.Id, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/capabilities YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities struct { + Capability map[E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY]*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability `path:"capability" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities) IsYANGGoStruct() {} + +// NewCapability creates a new entry in the Capability list of the +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities) NewCapability(Name E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY) (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Capability == nil { + t.Capability = make(map[E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY]*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability) + } + + key := Name + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Capability[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Capability", key) + } + + t.Capability[key] = &OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability{ + Name: Name, + } + + return t.Capability[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/capabilities/capability YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability struct { + Config *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_Config `path:"config" module:"openconfig-lldp"` + Name E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY `path:"name" module:"openconfig-lldp"` + State *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_State `path:"state" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability struct, which is a YANG list entry. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability) ΛListKeyMap() (map[string]interface{}, error) { + + return map[string]interface{}{ + "name": t.Name, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_Config represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/capabilities/capability/config YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_State represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/capabilities/capability/state YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_State struct { + Enabled *bool `path:"enabled" module:"openconfig-lldp"` + Name E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY `path:"name" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Capabilities_Capability_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Config represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/config YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/custom-tlvs YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs struct { + Tlv map[OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Key]*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv `path:"tlv" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs) IsYANGGoStruct() {} + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Key represents the key for list Tlv of element /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/custom-tlvs. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Key struct { + Type int32 `path:"type"` + Oui string `path:"oui"` + OuiSubtype string `path:"oui-subtype"` +} + +// NewTlv creates a new entry in the Tlv list of the +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs) NewTlv(Type int32, Oui string, OuiSubtype string) (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Tlv == nil { + t.Tlv = make(map[OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Key]*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv) + } + + key := OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Key{ + Type: Type, + Oui: Oui, + OuiSubtype: OuiSubtype, + } + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Tlv[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Tlv", key) + } + + t.Tlv[key] = &OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv{ + Type: &Type, + Oui: &Oui, + OuiSubtype: &OuiSubtype, + } + + return t.Tlv[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/custom-tlvs/tlv YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv struct { + Config *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Config `path:"config" module:"openconfig-lldp"` + Oui *string `path:"oui" module:"openconfig-lldp"` + OuiSubtype *string `path:"oui-subtype" module:"openconfig-lldp"` + State *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_State `path:"state" module:"openconfig-lldp"` + Type *int32 `path:"type" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv struct, which is a YANG list entry. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv) ΛListKeyMap() (map[string]interface{}, error) { + if t.Oui == nil { + return nil, fmt.Errorf("nil value for key Oui") + } + + if t.OuiSubtype == nil { + return nil, fmt.Errorf("nil value for key OuiSubtype") + } + + if t.Type == nil { + return nil, fmt.Errorf("nil value for key Type") + } + + return map[string]interface{}{ + "oui": *t.Oui, + "oui-subtype": *t.OuiSubtype, + "type": *t.Type, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Config represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/custom-tlvs/tlv/config YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_State represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/custom-tlvs/tlv/state YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_State struct { + Oui *string `path:"oui" module:"openconfig-lldp"` + OuiSubtype *string `path:"oui-subtype" module:"openconfig-lldp"` + Type *int32 `path:"type" module:"openconfig-lldp"` + Value Binary `path:"value" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_CustomTlvs_Tlv_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_State represents the /openconfig-lldp/lldp/interfaces/interface/neighbors/neighbor/state YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_State struct { + Age *uint64 `path:"age" module:"openconfig-lldp"` + ChassisId *string `path:"chassis-id" module:"openconfig-lldp"` + ChassisIdType E_OpenconfigLldp_ChassisIdType `path:"chassis-id-type" module:"openconfig-lldp"` + Id *string `path:"id" module:"openconfig-lldp"` + LastUpdate *int64 `path:"last-update" module:"openconfig-lldp"` + ManagementAddress *string `path:"management-address" module:"openconfig-lldp"` + ManagementAddressType *string `path:"management-address-type" module:"openconfig-lldp"` + PortDescription *string `path:"port-description" module:"openconfig-lldp"` + PortId *string `path:"port-id" module:"openconfig-lldp"` + PortIdType E_OpenconfigLldp_PortIdType `path:"port-id-type" module:"openconfig-lldp"` + SystemDescription *string `path:"system-description" module:"openconfig-lldp"` + SystemName *string `path:"system-name" module:"openconfig-lldp"` + Ttl *uint16 `path:"ttl" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_Neighbors_Neighbor_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_State represents the /openconfig-lldp/lldp/interfaces/interface/state YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_State struct { + Counters *OpenconfigLldp_Lldp_Interfaces_Interface_State_Counters `path:"counters" module:"openconfig-lldp"` + Enabled *bool `path:"enabled" module:"openconfig-lldp"` + Name *string `path:"name" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_Interfaces_Interface_State_Counters represents the /openconfig-lldp/lldp/interfaces/interface/state/counters YANG schema element. +type OpenconfigLldp_Lldp_Interfaces_Interface_State_Counters struct { + FrameDiscard *uint64 `path:"frame-discard" module:"openconfig-lldp"` + FrameErrorIn *uint64 `path:"frame-error-in" module:"openconfig-lldp"` + FrameErrorOut *uint64 `path:"frame-error-out" module:"openconfig-lldp"` + FrameIn *uint64 `path:"frame-in" module:"openconfig-lldp"` + FrameOut *uint64 `path:"frame-out" module:"openconfig-lldp"` + LastClear *string `path:"last-clear" module:"openconfig-lldp"` + TlvDiscard *uint64 `path:"tlv-discard" module:"openconfig-lldp"` + TlvUnknown *uint64 `path:"tlv-unknown" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_Interfaces_Interface_State_Counters implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_Interfaces_Interface_State_Counters) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_State_Counters) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_Interfaces_Interface_State_Counters"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_Interfaces_Interface_State_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_State represents the /openconfig-lldp/lldp/state YANG schema element. +type OpenconfigLldp_Lldp_State struct { + ChassisId *string `path:"chassis-id" module:"openconfig-lldp"` + ChassisIdType E_OpenconfigLldp_ChassisIdType `path:"chassis-id-type" module:"openconfig-lldp"` + Counters *OpenconfigLldp_Lldp_State_Counters `path:"counters" module:"openconfig-lldp"` + Enabled *bool `path:"enabled" module:"openconfig-lldp"` + HelloTimer *uint64 `path:"hello-timer" module:"openconfig-lldp"` + SuppressTlvAdvertisement []E_OpenconfigLldpTypes_LLDP_TLV `path:"suppress-tlv-advertisement" module:"openconfig-lldp"` + SystemDescription *string `path:"system-description" module:"openconfig-lldp"` + SystemName *string `path:"system-name" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigLldp_Lldp_State_Counters represents the /openconfig-lldp/lldp/state/counters YANG schema element. +type OpenconfigLldp_Lldp_State_Counters struct { + EntriesAgedOut *uint64 `path:"entries-aged-out" module:"openconfig-lldp"` + FrameDiscard *uint64 `path:"frame-discard" module:"openconfig-lldp"` + FrameErrorIn *uint64 `path:"frame-error-in" module:"openconfig-lldp"` + FrameIn *uint64 `path:"frame-in" module:"openconfig-lldp"` + FrameOut *uint64 `path:"frame-out" module:"openconfig-lldp"` + LastClear *string `path:"last-clear" module:"openconfig-lldp"` + TlvAccepted *uint64 `path:"tlv-accepted" module:"openconfig-lldp"` + TlvDiscard *uint64 `path:"tlv-discard" module:"openconfig-lldp"` + TlvUnknown *uint64 `path:"tlv-unknown" module:"openconfig-lldp"` +} + +// IsYANGGoStruct ensures that OpenconfigLldp_Lldp_State_Counters implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigLldp_Lldp_State_Counters) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigLldp_Lldp_State_Counters) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigLldp_Lldp_State_Counters"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigLldp_Lldp_State_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components represents the /openconfig-platform/components YANG schema element. +type OpenconfigPlatform_Components struct { + Component map[string]*OpenconfigPlatform_Components_Component `path:"component" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components) IsYANGGoStruct() {} + +// NewComponent creates a new entry in the Component list of the +// OpenconfigPlatform_Components struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigPlatform_Components) NewComponent(Name string) (*OpenconfigPlatform_Components_Component, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Component == nil { + t.Component = make(map[string]*OpenconfigPlatform_Components_Component) + } + + key := Name + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Component[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Component", key) + } + + t.Component[key] = &OpenconfigPlatform_Components_Component{ + Name: &Name, + } + + return t.Component[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component represents the /openconfig-platform/components/component YANG schema element. +type OpenconfigPlatform_Components_Component struct { + Backplane *OpenconfigPlatform_Components_Component_Backplane `path:"backplane" module:"openconfig-platform"` + Chassis *OpenconfigPlatform_Components_Component_Chassis `path:"chassis" module:"openconfig-platform"` + Config *OpenconfigPlatform_Components_Component_Config `path:"config" module:"openconfig-platform"` + Cpu *OpenconfigPlatform_Components_Component_Cpu `path:"cpu" module:"openconfig-platform"` + Fabric *OpenconfigPlatform_Components_Component_Fabric `path:"fabric" module:"openconfig-platform"` + Fan *OpenconfigPlatform_Components_Component_Fan `path:"fan" module:"openconfig-platform"` + IntegratedCircuit *OpenconfigPlatform_Components_Component_IntegratedCircuit `path:"integrated-circuit" module:"openconfig-platform"` + Name *string `path:"name" module:"openconfig-platform"` + OpticalChannel *OpenconfigPlatform_Components_Component_OpticalChannel `path:"optical-channel" module:"openconfig-terminal-device"` + Port *OpenconfigPlatform_Components_Component_Port `path:"port" module:"openconfig-platform"` + PowerSupply *OpenconfigPlatform_Components_Component_PowerSupply `path:"power-supply" module:"openconfig-platform"` + Properties *OpenconfigPlatform_Components_Component_Properties `path:"properties" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_State `path:"state" module:"openconfig-platform"` + Storage *OpenconfigPlatform_Components_Component_Storage `path:"storage" module:"openconfig-platform"` + Subcomponents *OpenconfigPlatform_Components_Component_Subcomponents `path:"subcomponents" module:"openconfig-platform"` + Transceiver *OpenconfigPlatform_Components_Component_Transceiver `path:"transceiver" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigPlatform_Components_Component struct, which is a YANG list entry. +func (t *OpenconfigPlatform_Components_Component) ΛListKeyMap() (map[string]interface{}, error) { + if t.Name == nil { + return nil, fmt.Errorf("nil value for key Name") + } + + return map[string]interface{}{ + "name": *t.Name, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Backplane represents the /openconfig-platform/components/component/backplane YANG schema element. +type OpenconfigPlatform_Components_Component_Backplane struct { + Config *OpenconfigPlatform_Components_Component_Backplane_Config `path:"config" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_Backplane_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Backplane implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Backplane) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Backplane) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Backplane"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Backplane) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Backplane_Config represents the /openconfig-platform/components/component/backplane/config YANG schema element. +type OpenconfigPlatform_Components_Component_Backplane_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Backplane_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Backplane_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Backplane_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Backplane_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Backplane_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Backplane_State represents the /openconfig-platform/components/component/backplane/state YANG schema element. +type OpenconfigPlatform_Components_Component_Backplane_State struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Backplane_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Backplane_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Backplane_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Backplane_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Backplane_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Chassis represents the /openconfig-platform/components/component/chassis YANG schema element. +type OpenconfigPlatform_Components_Component_Chassis struct { + Config *OpenconfigPlatform_Components_Component_Chassis_Config `path:"config" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_Chassis_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Chassis implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Chassis) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Chassis) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Chassis"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Chassis) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Chassis_Config represents the /openconfig-platform/components/component/chassis/config YANG schema element. +type OpenconfigPlatform_Components_Component_Chassis_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Chassis_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Chassis_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Chassis_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Chassis_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Chassis_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Chassis_State represents the /openconfig-platform/components/component/chassis/state YANG schema element. +type OpenconfigPlatform_Components_Component_Chassis_State struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Chassis_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Chassis_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Chassis_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Chassis_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Chassis_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Config represents the /openconfig-platform/components/component/config YANG schema element. +type OpenconfigPlatform_Components_Component_Config struct { + Name *string `path:"name" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Cpu represents the /openconfig-platform/components/component/cpu YANG schema element. +type OpenconfigPlatform_Components_Component_Cpu struct { + Config *OpenconfigPlatform_Components_Component_Cpu_Config `path:"config" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_Cpu_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Cpu implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Cpu) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Cpu) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Cpu"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Cpu) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Cpu_Config represents the /openconfig-platform/components/component/cpu/config YANG schema element. +type OpenconfigPlatform_Components_Component_Cpu_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Cpu_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Cpu_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Cpu_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Cpu_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Cpu_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Cpu_State represents the /openconfig-platform/components/component/cpu/state YANG schema element. +type OpenconfigPlatform_Components_Component_Cpu_State struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Cpu_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Cpu_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Cpu_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Cpu_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Cpu_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Fabric represents the /openconfig-platform/components/component/fabric YANG schema element. +type OpenconfigPlatform_Components_Component_Fabric struct { + Config *OpenconfigPlatform_Components_Component_Fabric_Config `path:"config" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_Fabric_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fabric implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Fabric) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Fabric) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fabric"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Fabric) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Fabric_Config represents the /openconfig-platform/components/component/fabric/config YANG schema element. +type OpenconfigPlatform_Components_Component_Fabric_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fabric_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Fabric_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Fabric_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fabric_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Fabric_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Fabric_State represents the /openconfig-platform/components/component/fabric/state YANG schema element. +type OpenconfigPlatform_Components_Component_Fabric_State struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fabric_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Fabric_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Fabric_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fabric_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Fabric_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Fan represents the /openconfig-platform/components/component/fan YANG schema element. +type OpenconfigPlatform_Components_Component_Fan struct { + Config *OpenconfigPlatform_Components_Component_Fan_Config `path:"config" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_Fan_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fan implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Fan) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Fan) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fan"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Fan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Fan_Config represents the /openconfig-platform/components/component/fan/config YANG schema element. +type OpenconfigPlatform_Components_Component_Fan_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fan_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Fan_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Fan_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fan_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Fan_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Fan_State represents the /openconfig-platform/components/component/fan/state YANG schema element. +type OpenconfigPlatform_Components_Component_Fan_State struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fan_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Fan_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Fan_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fan_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Fan_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_IntegratedCircuit represents the /openconfig-platform/components/component/integrated-circuit YANG schema element. +type OpenconfigPlatform_Components_Component_IntegratedCircuit struct { + Config *OpenconfigPlatform_Components_Component_IntegratedCircuit_Config `path:"config" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_IntegratedCircuit_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_IntegratedCircuit implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_IntegratedCircuit) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_IntegratedCircuit"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_IntegratedCircuit_Config represents the /openconfig-platform/components/component/integrated-circuit/config YANG schema element. +type OpenconfigPlatform_Components_Component_IntegratedCircuit_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_IntegratedCircuit_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_IntegratedCircuit_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_IntegratedCircuit_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_IntegratedCircuit_State represents the /openconfig-platform/components/component/integrated-circuit/state YANG schema element. +type OpenconfigPlatform_Components_Component_IntegratedCircuit_State struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_IntegratedCircuit_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_IntegratedCircuit_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_IntegratedCircuit_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_OpticalChannel represents the /openconfig-platform/components/component/optical-channel YANG schema element. +type OpenconfigPlatform_Components_Component_OpticalChannel struct { + Config *OpenconfigPlatform_Components_Component_OpticalChannel_Config `path:"config" module:"openconfig-terminal-device"` + State *OpenconfigPlatform_Components_Component_OpticalChannel_State `path:"state" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_OpticalChannel implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_OpticalChannel) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_OpticalChannel"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_OpticalChannel_Config represents the /openconfig-platform/components/component/optical-channel/config YANG schema element. +type OpenconfigPlatform_Components_Component_OpticalChannel_Config struct { + Frequency *uint64 `path:"frequency" module:"openconfig-terminal-device"` + LinePort *string `path:"line-port" module:"openconfig-terminal-device"` + OperationalMode *uint16 `path:"operational-mode" module:"openconfig-terminal-device"` + TargetOutputPower *float64 `path:"target-output-power" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_OpticalChannel_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_OpticalChannel_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_OpticalChannel_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_OpticalChannel_State represents the /openconfig-platform/components/component/optical-channel/state YANG schema element. +type OpenconfigPlatform_Components_Component_OpticalChannel_State struct { + ChromaticDispersion *OpenconfigPlatform_Components_Component_OpticalChannel_State_ChromaticDispersion `path:"chromatic-dispersion" module:"openconfig-terminal-device"` + Frequency *uint64 `path:"frequency" module:"openconfig-terminal-device"` + GroupId *uint32 `path:"group-id" module:"openconfig-terminal-device"` + InputPower *OpenconfigPlatform_Components_Component_OpticalChannel_State_InputPower `path:"input-power" module:"openconfig-terminal-device"` + LaserBiasCurrent *OpenconfigPlatform_Components_Component_OpticalChannel_State_LaserBiasCurrent `path:"laser-bias-current" module:"openconfig-terminal-device"` + LinePort *string `path:"line-port" module:"openconfig-terminal-device"` + OperationalMode *uint16 `path:"operational-mode" module:"openconfig-terminal-device"` + OutputPower *OpenconfigPlatform_Components_Component_OpticalChannel_State_OutputPower `path:"output-power" module:"openconfig-terminal-device"` + PolarizationDependentLoss *OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationDependentLoss `path:"polarization-dependent-loss" module:"openconfig-terminal-device"` + PolarizationModeDispersion *OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationModeDispersion `path:"polarization-mode-dispersion" module:"openconfig-terminal-device"` + SecondOrderPolarizationModeDispersion *OpenconfigPlatform_Components_Component_OpticalChannel_State_SecondOrderPolarizationModeDispersion `path:"second-order-polarization-mode-dispersion" module:"openconfig-terminal-device"` + TargetOutputPower *float64 `path:"target-output-power" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_OpticalChannel_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_OpticalChannel_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_OpticalChannel_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_OpticalChannel_State_ChromaticDispersion represents the /openconfig-platform/components/component/optical-channel/state/chromatic-dispersion YANG schema element. +type OpenconfigPlatform_Components_Component_OpticalChannel_State_ChromaticDispersion struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_OpticalChannel_State_ChromaticDispersion implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_OpticalChannel_State_ChromaticDispersion) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_ChromaticDispersion) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_OpticalChannel_State_ChromaticDispersion"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_ChromaticDispersion) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_OpticalChannel_State_InputPower represents the /openconfig-platform/components/component/optical-channel/state/input-power YANG schema element. +type OpenconfigPlatform_Components_Component_OpticalChannel_State_InputPower struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_OpticalChannel_State_InputPower implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_OpticalChannel_State_InputPower) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_InputPower) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_OpticalChannel_State_InputPower"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_InputPower) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_OpticalChannel_State_LaserBiasCurrent represents the /openconfig-platform/components/component/optical-channel/state/laser-bias-current YANG schema element. +type OpenconfigPlatform_Components_Component_OpticalChannel_State_LaserBiasCurrent struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_OpticalChannel_State_LaserBiasCurrent implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_OpticalChannel_State_LaserBiasCurrent) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_LaserBiasCurrent) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_OpticalChannel_State_LaserBiasCurrent"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_LaserBiasCurrent) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_OpticalChannel_State_OutputPower represents the /openconfig-platform/components/component/optical-channel/state/output-power YANG schema element. +type OpenconfigPlatform_Components_Component_OpticalChannel_State_OutputPower struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_OpticalChannel_State_OutputPower implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_OpticalChannel_State_OutputPower) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_OutputPower) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_OpticalChannel_State_OutputPower"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_OutputPower) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationDependentLoss represents the /openconfig-platform/components/component/optical-channel/state/polarization-dependent-loss YANG schema element. +type OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationDependentLoss struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationDependentLoss implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationDependentLoss) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationDependentLoss) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationDependentLoss"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationDependentLoss) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationModeDispersion represents the /openconfig-platform/components/component/optical-channel/state/polarization-mode-dispersion YANG schema element. +type OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationModeDispersion struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationModeDispersion implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationModeDispersion) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationModeDispersion) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationModeDispersion"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_PolarizationModeDispersion) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_OpticalChannel_State_SecondOrderPolarizationModeDispersion represents the /openconfig-platform/components/component/optical-channel/state/second-order-polarization-mode-dispersion YANG schema element. +type OpenconfigPlatform_Components_Component_OpticalChannel_State_SecondOrderPolarizationModeDispersion struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_OpticalChannel_State_SecondOrderPolarizationModeDispersion implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_OpticalChannel_State_SecondOrderPolarizationModeDispersion) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_SecondOrderPolarizationModeDispersion) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_OpticalChannel_State_SecondOrderPolarizationModeDispersion"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_OpticalChannel_State_SecondOrderPolarizationModeDispersion) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Port represents the /openconfig-platform/components/component/port YANG schema element. +type OpenconfigPlatform_Components_Component_Port struct { + BreakoutMode *OpenconfigPlatform_Components_Component_Port_BreakoutMode `path:"breakout-mode" module:"openconfig-platform-port"` + Config *OpenconfigPlatform_Components_Component_Port_Config `path:"config" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_Port_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Port implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Port) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Port) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Port"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Port) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Port_BreakoutMode represents the /openconfig-platform/components/component/port/breakout-mode YANG schema element. +type OpenconfigPlatform_Components_Component_Port_BreakoutMode struct { + Config *OpenconfigPlatform_Components_Component_Port_BreakoutMode_Config `path:"config" module:"openconfig-platform-port"` + State *OpenconfigPlatform_Components_Component_Port_BreakoutMode_State `path:"state" module:"openconfig-platform-port"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Port_BreakoutMode implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Port_BreakoutMode) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Port_BreakoutMode) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Port_BreakoutMode"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Port_BreakoutMode) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Port_BreakoutMode_Config represents the /openconfig-platform/components/component/port/breakout-mode/config YANG schema element. +type OpenconfigPlatform_Components_Component_Port_BreakoutMode_Config struct { + ChannelSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"channel-speed" module:"openconfig-platform-port"` + NumChannels *uint8 `path:"num-channels" module:"openconfig-platform-port"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Port_BreakoutMode_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Port_BreakoutMode_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Port_BreakoutMode_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Port_BreakoutMode_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Port_BreakoutMode_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Port_BreakoutMode_State represents the /openconfig-platform/components/component/port/breakout-mode/state YANG schema element. +type OpenconfigPlatform_Components_Component_Port_BreakoutMode_State struct { + ChannelSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"channel-speed" module:"openconfig-platform-port"` + NumChannels *uint8 `path:"num-channels" module:"openconfig-platform-port"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Port_BreakoutMode_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Port_BreakoutMode_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Port_BreakoutMode_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Port_BreakoutMode_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Port_BreakoutMode_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Port_Config represents the /openconfig-platform/components/component/port/config YANG schema element. +type OpenconfigPlatform_Components_Component_Port_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Port_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Port_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Port_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Port_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Port_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Port_State represents the /openconfig-platform/components/component/port/state YANG schema element. +type OpenconfigPlatform_Components_Component_Port_State struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Port_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Port_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Port_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Port_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Port_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_PowerSupply represents the /openconfig-platform/components/component/power-supply YANG schema element. +type OpenconfigPlatform_Components_Component_PowerSupply struct { + Config *OpenconfigPlatform_Components_Component_PowerSupply_Config `path:"config" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_PowerSupply_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_PowerSupply implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_PowerSupply) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_PowerSupply) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_PowerSupply"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_PowerSupply) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_PowerSupply_Config represents the /openconfig-platform/components/component/power-supply/config YANG schema element. +type OpenconfigPlatform_Components_Component_PowerSupply_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_PowerSupply_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_PowerSupply_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_PowerSupply_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_PowerSupply_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_PowerSupply_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_PowerSupply_State represents the /openconfig-platform/components/component/power-supply/state YANG schema element. +type OpenconfigPlatform_Components_Component_PowerSupply_State struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_PowerSupply_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_PowerSupply_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_PowerSupply_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_PowerSupply_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_PowerSupply_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Properties represents the /openconfig-platform/components/component/properties YANG schema element. +type OpenconfigPlatform_Components_Component_Properties struct { + Property map[string]*OpenconfigPlatform_Components_Component_Properties_Property `path:"property" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Properties implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Properties) IsYANGGoStruct() {} + +// NewProperty creates a new entry in the Property list of the +// OpenconfigPlatform_Components_Component_Properties struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigPlatform_Components_Component_Properties) NewProperty(Name string) (*OpenconfigPlatform_Components_Component_Properties_Property, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Property == nil { + t.Property = make(map[string]*OpenconfigPlatform_Components_Component_Properties_Property) + } + + key := Name + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Property[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Property", key) + } + + t.Property[key] = &OpenconfigPlatform_Components_Component_Properties_Property{ + Name: &Name, + } + + return t.Property[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Properties) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Properties"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Properties) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Properties_Property represents the /openconfig-platform/components/component/properties/property YANG schema element. +type OpenconfigPlatform_Components_Component_Properties_Property struct { + Config *OpenconfigPlatform_Components_Component_Properties_Property_Config `path:"config" module:"openconfig-platform"` + Name *string `path:"name" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_Properties_Property_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Properties_Property implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Properties_Property) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigPlatform_Components_Component_Properties_Property struct, which is a YANG list entry. +func (t *OpenconfigPlatform_Components_Component_Properties_Property) ΛListKeyMap() (map[string]interface{}, error) { + if t.Name == nil { + return nil, fmt.Errorf("nil value for key Name") + } + + return map[string]interface{}{ + "name": *t.Name, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Properties_Property) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Properties_Property"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Properties_Property) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Properties_Property_Config represents the /openconfig-platform/components/component/properties/property/config YANG schema element. +type OpenconfigPlatform_Components_Component_Properties_Property_Config struct { + Name *string `path:"name" module:"openconfig-platform"` + Value OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union `path:"value" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Properties_Property_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Properties_Property_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Properties_Property_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Properties_Property_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + +// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-platform/components/component/properties/property/config/value within the YANG schema. +type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface { + Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() +} + +// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Bool is used when /openconfig-platform/components/component/properties/property/config/value +// is to be set to a bool value. +type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Bool struct { + Bool bool +} + +// Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Bool +// implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface. +func (*OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Bool) Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() {} + +// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Float64 is used when /openconfig-platform/components/component/properties/property/config/value +// is to be set to a float64 value. +type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Float64 struct { + Float64 float64 +} + +// Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Float64 +// implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface. +func (*OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Float64) Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() {} + +// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Int64 is used when /openconfig-platform/components/component/properties/property/config/value +// is to be set to a int64 value. +type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Int64 struct { + Int64 int64 +} + +// Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Int64 +// implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface. +func (*OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Int64) Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() {} + +// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_String is used when /openconfig-platform/components/component/properties/property/config/value +// is to be set to a string value. +type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_String struct { + String string +} + +// Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_String +// implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface. +func (*OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_String) Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() {} + +// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Uint64 is used when /openconfig-platform/components/component/properties/property/config/value +// is to be set to a uint64 value. +type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Uint64 struct { + Uint64 uint64 +} + +// Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Uint64 +// implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface. +func (*OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Uint64) Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() {} + +// To_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union takes an input interface{} and attempts to convert it to a struct +// which implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *OpenconfigPlatform_Components_Component_Properties_Property_Config) To_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union(i interface{}) (OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union, error) { + switch v := i.(type) { + case bool: + return &OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Bool{v}, nil + case float64: + return &OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Float64{v}, nil + case int64: + return &OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Int64{v}, nil + case string: + return &OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_String{v}, nil + case uint64: + return &OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Uint64{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union, unknown union type, got: %T, want any of [bool, float64, int64, string, uint64]", i, i) + } +} + + +// OpenconfigPlatform_Components_Component_Properties_Property_State represents the /openconfig-platform/components/component/properties/property/state YANG schema element. +type OpenconfigPlatform_Components_Component_Properties_Property_State struct { + Configurable *bool `path:"configurable" module:"openconfig-platform"` + Name *string `path:"name" module:"openconfig-platform"` + Value OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union `path:"value" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Properties_Property_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Properties_Property_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Properties_Property_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Properties_Property_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Properties_Property_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + +// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-platform/components/component/properties/property/state/value within the YANG schema. +type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface { + Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() +} + +// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Bool is used when /openconfig-platform/components/component/properties/property/state/value +// is to be set to a bool value. +type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Bool struct { + Bool bool +} + +// Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Bool +// implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface. +func (*OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Bool) Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() {} + +// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Float64 is used when /openconfig-platform/components/component/properties/property/state/value +// is to be set to a float64 value. +type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Float64 struct { + Float64 float64 +} + +// Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Float64 +// implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface. +func (*OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Float64) Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() {} + +// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Int64 is used when /openconfig-platform/components/component/properties/property/state/value +// is to be set to a int64 value. +type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Int64 struct { + Int64 int64 +} + +// Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Int64 +// implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface. +func (*OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Int64) Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() {} + +// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_String is used when /openconfig-platform/components/component/properties/property/state/value +// is to be set to a string value. +type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_String struct { + String string +} + +// Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_String +// implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface. +func (*OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_String) Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() {} + +// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Uint64 is used when /openconfig-platform/components/component/properties/property/state/value +// is to be set to a uint64 value. +type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Uint64 struct { + Uint64 uint64 +} + +// Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Uint64 +// implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface. +func (*OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Uint64) Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() {} + +// To_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union takes an input interface{} and attempts to convert it to a struct +// which implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *OpenconfigPlatform_Components_Component_Properties_Property_State) To_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union(i interface{}) (OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union, error) { + switch v := i.(type) { + case bool: + return &OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Bool{v}, nil + case float64: + return &OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Float64{v}, nil + case int64: + return &OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Int64{v}, nil + case string: + return &OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_String{v}, nil + case uint64: + return &OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Uint64{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union, unknown union type, got: %T, want any of [bool, float64, int64, string, uint64]", i, i) + } +} + + +// OpenconfigPlatform_Components_Component_State represents the /openconfig-platform/components/component/state YANG schema element. +type OpenconfigPlatform_Components_Component_State struct { + AllocatedPower *uint32 `path:"allocated-power" module:"openconfig-platform"` + Description *string `path:"description" module:"openconfig-platform"` + Empty *bool `path:"empty" module:"openconfig-platform"` + FirmwareVersion *string `path:"firmware-version" module:"openconfig-platform"` + HardwareVersion *string `path:"hardware-version" module:"openconfig-platform"` + Id *string `path:"id" module:"openconfig-platform"` + Location *string `path:"location" module:"openconfig-platform"` + Memory *OpenconfigPlatform_Components_Component_State_Memory `path:"memory" module:"openconfig-platform"` + MfgDate *string `path:"mfg-date" module:"openconfig-platform"` + MfgName *string `path:"mfg-name" module:"openconfig-platform"` + Name *string `path:"name" module:"openconfig-platform"` + OperStatus E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS `path:"oper-status" module:"openconfig-platform"` + Parent *string `path:"parent" module:"openconfig-platform"` + PartNo *string `path:"part-no" module:"openconfig-platform"` + Removable *bool `path:"removable" module:"openconfig-platform"` + SerialNo *string `path:"serial-no" module:"openconfig-platform"` + SoftwareVersion *string `path:"software-version" module:"openconfig-platform"` + Temperature *OpenconfigPlatform_Components_Component_State_Temperature `path:"temperature" module:"openconfig-platform"` + Type OpenconfigPlatform_Components_Component_State_Type_Union `path:"type" module:"openconfig-platform"` + UsedPower *uint32 `path:"used-power" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + +// OpenconfigPlatform_Components_Component_State_Type_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-platform/components/component/state/type within the YANG schema. +type OpenconfigPlatform_Components_Component_State_Type_Union interface { + Is_OpenconfigPlatform_Components_Component_State_Type_Union() +} + +// OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT is used when /openconfig-platform/components/component/state/type +// is to be set to a E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT value. +type OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT struct { + E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT +} + +// Is_OpenconfigPlatform_Components_Component_State_Type_Union ensures that OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT +// implements the OpenconfigPlatform_Components_Component_State_Type_Union interface. +func (*OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) Is_OpenconfigPlatform_Components_Component_State_Type_Union() {} + +// OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT is used when /openconfig-platform/components/component/state/type +// is to be set to a E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT value. +type OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT struct { + E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT +} + +// Is_OpenconfigPlatform_Components_Component_State_Type_Union ensures that OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT +// implements the OpenconfigPlatform_Components_Component_State_Type_Union interface. +func (*OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) Is_OpenconfigPlatform_Components_Component_State_Type_Union() {} + +// To_OpenconfigPlatform_Components_Component_State_Type_Union takes an input interface{} and attempts to convert it to a struct +// which implements the OpenconfigPlatform_Components_Component_State_Type_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *OpenconfigPlatform_Components_Component_State) To_OpenconfigPlatform_Components_Component_State_Type_Union(i interface{}) (OpenconfigPlatform_Components_Component_State_Type_Union, error) { + switch v := i.(type) { + case E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT: + return &OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT{v}, nil + case E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT: + return &OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to OpenconfigPlatform_Components_Component_State_Type_Union, unknown union type, got: %T, want any of [E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT, E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT]", i, i) + } +} + + +// OpenconfigPlatform_Components_Component_State_Memory represents the /openconfig-platform/components/component/state/memory YANG schema element. +type OpenconfigPlatform_Components_Component_State_Memory struct { + Available *uint64 `path:"available" module:"openconfig-platform"` + Utilized *uint64 `path:"utilized" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_State_Memory implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_State_Memory) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_State_Memory) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_State_Memory"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_State_Memory) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_State_Temperature represents the /openconfig-platform/components/component/state/temperature YANG schema element. +type OpenconfigPlatform_Components_Component_State_Temperature struct { + AlarmSeverity E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY `path:"alarm-severity" module:"openconfig-platform"` + AlarmStatus *bool `path:"alarm-status" module:"openconfig-platform"` + AlarmThreshold *uint32 `path:"alarm-threshold" module:"openconfig-platform"` + Avg *float64 `path:"avg" module:"openconfig-platform"` + Instant *float64 `path:"instant" module:"openconfig-platform"` + Interval *uint64 `path:"interval" module:"openconfig-platform"` + Max *float64 `path:"max" module:"openconfig-platform"` + MaxTime *uint64 `path:"max-time" module:"openconfig-platform"` + Min *float64 `path:"min" module:"openconfig-platform"` + MinTime *uint64 `path:"min-time" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_State_Temperature implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_State_Temperature) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_State_Temperature) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_State_Temperature"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_State_Temperature) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Storage represents the /openconfig-platform/components/component/storage YANG schema element. +type OpenconfigPlatform_Components_Component_Storage struct { + Config *OpenconfigPlatform_Components_Component_Storage_Config `path:"config" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_Storage_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Storage implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Storage) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Storage) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Storage"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Storage) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Storage_Config represents the /openconfig-platform/components/component/storage/config YANG schema element. +type OpenconfigPlatform_Components_Component_Storage_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Storage_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Storage_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Storage_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Storage_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Storage_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Storage_State represents the /openconfig-platform/components/component/storage/state YANG schema element. +type OpenconfigPlatform_Components_Component_Storage_State struct { +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Storage_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Storage_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Storage_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Storage_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Storage_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Subcomponents represents the /openconfig-platform/components/component/subcomponents YANG schema element. +type OpenconfigPlatform_Components_Component_Subcomponents struct { + Subcomponent map[string]*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent `path:"subcomponent" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Subcomponents implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Subcomponents) IsYANGGoStruct() {} + +// NewSubcomponent creates a new entry in the Subcomponent list of the +// OpenconfigPlatform_Components_Component_Subcomponents struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigPlatform_Components_Component_Subcomponents) NewSubcomponent(Name string) (*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Subcomponent == nil { + t.Subcomponent = make(map[string]*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent) + } + + key := Name + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Subcomponent[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Subcomponent", key) + } + + t.Subcomponent[key] = &OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent{ + Name: &Name, + } + + return t.Subcomponent[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Subcomponents) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Subcomponents"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Subcomponents) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent represents the /openconfig-platform/components/component/subcomponents/subcomponent YANG schema element. +type OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent struct { + Config *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config `path:"config" module:"openconfig-platform"` + Name *string `path:"name" module:"openconfig-platform"` + State *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State `path:"state" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent struct, which is a YANG list entry. +func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent) ΛListKeyMap() (map[string]interface{}, error) { + if t.Name == nil { + return nil, fmt.Errorf("nil value for key Name") + } + + return map[string]interface{}{ + "name": *t.Name, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config represents the /openconfig-platform/components/component/subcomponents/subcomponent/config YANG schema element. +type OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config struct { + Name *string `path:"name" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State represents the /openconfig-platform/components/component/subcomponents/subcomponent/state YANG schema element. +type OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State struct { + Name *string `path:"name" module:"openconfig-platform"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver represents the /openconfig-platform/components/component/transceiver YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver struct { + Config *OpenconfigPlatform_Components_Component_Transceiver_Config `path:"config" module:"openconfig-platform-transceiver"` + PhysicalChannels *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels `path:"physical-channels" module:"openconfig-platform-transceiver"` + State *OpenconfigPlatform_Components_Component_Transceiver_State `path:"state" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_Config represents the /openconfig-platform/components/component/transceiver/config YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_Config struct { + Enabled *bool `path:"enabled" module:"openconfig-platform-transceiver"` + EthernetPmdPreconf E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE `path:"ethernet-pmd-preconf" module:"openconfig-platform-transceiver"` + FecMode E_OpenconfigPlatformTypes_FEC_MODE_TYPE `path:"fec-mode" module:"openconfig-platform-transceiver"` + FormFactorPreconf E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE `path:"form-factor-preconf" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels represents the /openconfig-platform/components/component/transceiver/physical-channels YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels struct { + Channel map[uint16]*OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel `path:"channel" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels) IsYANGGoStruct() {} + +// NewChannel creates a new entry in the Channel list of the +// OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels) NewChannel(Index uint16) (*OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Channel == nil { + t.Channel = make(map[uint16]*OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel) + } + + key := Index + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Channel[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Channel", key) + } + + t.Channel[key] = &OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel{ + Index: &Index, + } + + return t.Channel[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel represents the /openconfig-platform/components/component/transceiver/physical-channels/channel YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel struct { + Config *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_Config `path:"config" module:"openconfig-platform-transceiver"` + Index *uint16 `path:"index" module:"openconfig-platform-transceiver"` + State *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State `path:"state" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel struct, which is a YANG list entry. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel) ΛListKeyMap() (map[string]interface{}, error) { + if t.Index == nil { + return nil, fmt.Errorf("nil value for key Index") + } + + return map[string]interface{}{ + "index": *t.Index, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_Config represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/config YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_Config struct { + Description *string `path:"description" module:"openconfig-platform-transceiver"` + Index *uint16 `path:"index" module:"openconfig-platform-transceiver"` + TargetOutputPower *float64 `path:"target-output-power" module:"openconfig-platform-transceiver"` + TxLaser *bool `path:"tx-laser" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/state YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State struct { + Description *string `path:"description" module:"openconfig-platform-transceiver"` + Index *uint16 `path:"index" module:"openconfig-platform-transceiver"` + InputPower *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_InputPower `path:"input-power" module:"openconfig-platform-transceiver"` + LaserBiasCurrent *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_LaserBiasCurrent `path:"laser-bias-current" module:"openconfig-platform-transceiver"` + OutputFrequency *uint64 `path:"output-frequency" module:"openconfig-platform-transceiver"` + OutputPower *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_OutputPower `path:"output-power" module:"openconfig-platform-transceiver"` + TargetOutputPower *float64 `path:"target-output-power" module:"openconfig-platform-transceiver"` + TxLaser *bool `path:"tx-laser" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_InputPower represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/state/input-power YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_InputPower struct { + Avg *float64 `path:"avg" module:"openconfig-platform-transceiver"` + Instant *float64 `path:"instant" module:"openconfig-platform-transceiver"` + Interval *uint64 `path:"interval" module:"openconfig-platform-transceiver"` + Max *float64 `path:"max" module:"openconfig-platform-transceiver"` + MaxTime *uint64 `path:"max-time" module:"openconfig-platform-transceiver"` + Min *float64 `path:"min" module:"openconfig-platform-transceiver"` + MinTime *uint64 `path:"min-time" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_InputPower implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_InputPower) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_InputPower) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_InputPower"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_InputPower) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_LaserBiasCurrent represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/state/laser-bias-current YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_LaserBiasCurrent struct { + Avg *float64 `path:"avg" module:"openconfig-platform-transceiver"` + Instant *float64 `path:"instant" module:"openconfig-platform-transceiver"` + Interval *uint64 `path:"interval" module:"openconfig-platform-transceiver"` + Max *float64 `path:"max" module:"openconfig-platform-transceiver"` + MaxTime *uint64 `path:"max-time" module:"openconfig-platform-transceiver"` + Min *float64 `path:"min" module:"openconfig-platform-transceiver"` + MinTime *uint64 `path:"min-time" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_LaserBiasCurrent implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_LaserBiasCurrent) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_LaserBiasCurrent) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_LaserBiasCurrent"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_LaserBiasCurrent) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_OutputPower represents the /openconfig-platform/components/component/transceiver/physical-channels/channel/state/output-power YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_OutputPower struct { + Avg *float64 `path:"avg" module:"openconfig-platform-transceiver"` + Instant *float64 `path:"instant" module:"openconfig-platform-transceiver"` + Interval *uint64 `path:"interval" module:"openconfig-platform-transceiver"` + Max *float64 `path:"max" module:"openconfig-platform-transceiver"` + MaxTime *uint64 `path:"max-time" module:"openconfig-platform-transceiver"` + Min *float64 `path:"min" module:"openconfig-platform-transceiver"` + MinTime *uint64 `path:"min-time" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_OutputPower implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_OutputPower) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_OutputPower) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_OutputPower"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_PhysicalChannels_Channel_State_OutputPower) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_State represents the /openconfig-platform/components/component/transceiver/state YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_State struct { + ConnectorType E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE `path:"connector-type" module:"openconfig-platform-transceiver"` + DateCode *string `path:"date-code" module:"openconfig-platform-transceiver"` + Enabled *bool `path:"enabled" module:"openconfig-platform-transceiver"` + EthernetPmd E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE `path:"ethernet-pmd" module:"openconfig-platform-transceiver"` + EthernetPmdPreconf E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE `path:"ethernet-pmd-preconf" module:"openconfig-platform-transceiver"` + FaultCondition *bool `path:"fault-condition" module:"openconfig-platform-transceiver"` + FecCorrectedBits *uint64 `path:"fec-corrected-bits" module:"openconfig-platform-transceiver"` + FecCorrectedBytes *uint64 `path:"fec-corrected-bytes" module:"openconfig-platform-transceiver"` + FecMode E_OpenconfigPlatformTypes_FEC_MODE_TYPE `path:"fec-mode" module:"openconfig-platform-transceiver"` + FecStatus E_OpenconfigPlatformTypes_FEC_STATUS_TYPE `path:"fec-status" module:"openconfig-platform-transceiver"` + FecUncorrectableBlocks *uint64 `path:"fec-uncorrectable-blocks" module:"openconfig-platform-transceiver"` + FecUncorrectableWords *uint64 `path:"fec-uncorrectable-words" module:"openconfig-platform-transceiver"` + FormFactor E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE `path:"form-factor" module:"openconfig-platform-transceiver"` + FormFactorPreconf E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE `path:"form-factor-preconf" module:"openconfig-platform-transceiver"` + InputPower *OpenconfigPlatform_Components_Component_Transceiver_State_InputPower `path:"input-power" module:"openconfig-platform-transceiver"` + LaserBiasCurrent *OpenconfigPlatform_Components_Component_Transceiver_State_LaserBiasCurrent `path:"laser-bias-current" module:"openconfig-platform-transceiver"` + OtnComplianceCode E_OpenconfigTransportTypes_OTN_APPLICATION_CODE `path:"otn-compliance-code" module:"openconfig-platform-transceiver"` + OutputPower *OpenconfigPlatform_Components_Component_Transceiver_State_OutputPower `path:"output-power" module:"openconfig-platform-transceiver"` + PostFecBer *OpenconfigPlatform_Components_Component_Transceiver_State_PostFecBer `path:"post-fec-ber" module:"openconfig-platform-transceiver"` + PreFecBer *OpenconfigPlatform_Components_Component_Transceiver_State_PreFecBer `path:"pre-fec-ber" module:"openconfig-platform-transceiver"` + Present E_OpenconfigPlatform_Components_Component_Transceiver_State_Present `path:"present" module:"openconfig-platform-transceiver"` + SerialNo *string `path:"serial-no" module:"openconfig-platform-transceiver"` + SonetSdhComplianceCode E_OpenconfigTransportTypes_SONET_APPLICATION_CODE `path:"sonet-sdh-compliance-code" module:"openconfig-platform-transceiver"` + Vendor *string `path:"vendor" module:"openconfig-platform-transceiver"` + VendorPart *string `path:"vendor-part" module:"openconfig-platform-transceiver"` + VendorRev *string `path:"vendor-rev" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_State_InputPower represents the /openconfig-platform/components/component/transceiver/state/input-power YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_State_InputPower struct { + Avg *float64 `path:"avg" module:"openconfig-platform-transceiver"` + Instant *float64 `path:"instant" module:"openconfig-platform-transceiver"` + Interval *uint64 `path:"interval" module:"openconfig-platform-transceiver"` + Max *float64 `path:"max" module:"openconfig-platform-transceiver"` + MaxTime *uint64 `path:"max-time" module:"openconfig-platform-transceiver"` + Min *float64 `path:"min" module:"openconfig-platform-transceiver"` + MinTime *uint64 `path:"min-time" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_State_InputPower implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_State_InputPower) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State_InputPower) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_State_InputPower"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State_InputPower) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_State_LaserBiasCurrent represents the /openconfig-platform/components/component/transceiver/state/laser-bias-current YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_State_LaserBiasCurrent struct { + Avg *float64 `path:"avg" module:"openconfig-platform-transceiver"` + Instant *float64 `path:"instant" module:"openconfig-platform-transceiver"` + Interval *uint64 `path:"interval" module:"openconfig-platform-transceiver"` + Max *float64 `path:"max" module:"openconfig-platform-transceiver"` + MaxTime *uint64 `path:"max-time" module:"openconfig-platform-transceiver"` + Min *float64 `path:"min" module:"openconfig-platform-transceiver"` + MinTime *uint64 `path:"min-time" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_State_LaserBiasCurrent implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_State_LaserBiasCurrent) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State_LaserBiasCurrent) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_State_LaserBiasCurrent"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State_LaserBiasCurrent) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_State_OutputPower represents the /openconfig-platform/components/component/transceiver/state/output-power YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_State_OutputPower struct { + Avg *float64 `path:"avg" module:"openconfig-platform-transceiver"` + Instant *float64 `path:"instant" module:"openconfig-platform-transceiver"` + Interval *uint64 `path:"interval" module:"openconfig-platform-transceiver"` + Max *float64 `path:"max" module:"openconfig-platform-transceiver"` + MaxTime *uint64 `path:"max-time" module:"openconfig-platform-transceiver"` + Min *float64 `path:"min" module:"openconfig-platform-transceiver"` + MinTime *uint64 `path:"min-time" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_State_OutputPower implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_State_OutputPower) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State_OutputPower) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_State_OutputPower"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State_OutputPower) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_State_PostFecBer represents the /openconfig-platform/components/component/transceiver/state/post-fec-ber YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_State_PostFecBer struct { + Avg *float64 `path:"avg" module:"openconfig-platform-transceiver"` + Instant *float64 `path:"instant" module:"openconfig-platform-transceiver"` + Interval *uint64 `path:"interval" module:"openconfig-platform-transceiver"` + Max *float64 `path:"max" module:"openconfig-platform-transceiver"` + MaxTime *uint64 `path:"max-time" module:"openconfig-platform-transceiver"` + Min *float64 `path:"min" module:"openconfig-platform-transceiver"` + MinTime *uint64 `path:"min-time" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_State_PostFecBer implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_State_PostFecBer) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State_PostFecBer) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_State_PostFecBer"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State_PostFecBer) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigPlatform_Components_Component_Transceiver_State_PreFecBer represents the /openconfig-platform/components/component/transceiver/state/pre-fec-ber YANG schema element. +type OpenconfigPlatform_Components_Component_Transceiver_State_PreFecBer struct { + Avg *float64 `path:"avg" module:"openconfig-platform-transceiver"` + Instant *float64 `path:"instant" module:"openconfig-platform-transceiver"` + Interval *uint64 `path:"interval" module:"openconfig-platform-transceiver"` + Max *float64 `path:"max" module:"openconfig-platform-transceiver"` + MaxTime *uint64 `path:"max-time" module:"openconfig-platform-transceiver"` + Min *float64 `path:"min" module:"openconfig-platform-transceiver"` + MinTime *uint64 `path:"min-time" module:"openconfig-platform-transceiver"` +} + +// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Transceiver_State_PreFecBer implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigPlatform_Components_Component_Transceiver_State_PreFecBer) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State_PreFecBer) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Transceiver_State_PreFecBer"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigPlatform_Components_Component_Transceiver_State_PreFecBer) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice represents the /openconfig-terminal-device/terminal-device YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice struct { + Config *OpenconfigTerminalDevice_TerminalDevice_Config `path:"config" module:"openconfig-terminal-device"` + LogicalChannels *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels `path:"logical-channels" module:"openconfig-terminal-device"` + OperationalModes *OpenconfigTerminalDevice_TerminalDevice_OperationalModes `path:"operational-modes" module:"openconfig-terminal-device"` + State *OpenconfigTerminalDevice_TerminalDevice_State `path:"state" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_Config represents the /openconfig-terminal-device/terminal-device/config YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels represents the /openconfig-terminal-device/terminal-device/logical-channels YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels struct { + Channel map[uint32]*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel `path:"channel" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels) IsYANGGoStruct() {} + +// NewChannel creates a new entry in the Channel list of the +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels) NewChannel(Index uint32) (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Channel == nil { + t.Channel = make(map[uint32]*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel) + } + + key := Index + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Channel[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Channel", key) + } + + t.Channel[key] = &OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel{ + Index: &Index, + } + + return t.Channel[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel represents the /openconfig-terminal-device/terminal-device/logical-channels/channel YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel struct { + Config *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Config `path:"config" module:"openconfig-terminal-device"` + Ethernet *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet `path:"ethernet" module:"openconfig-terminal-device"` + Index *uint32 `path:"index" module:"openconfig-terminal-device"` + Ingress *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress `path:"ingress" module:"openconfig-terminal-device"` + LogicalChannelAssignments *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments `path:"logical-channel-assignments" module:"openconfig-terminal-device"` + Otn *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn `path:"otn" module:"openconfig-terminal-device"` + State *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State `path:"state" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel struct, which is a YANG list entry. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel) ΛListKeyMap() (map[string]interface{}, error) { + if t.Index == nil { + return nil, fmt.Errorf("nil value for key Index") + } + + return map[string]interface{}{ + "index": *t.Index, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Config represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/config YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Config struct { + AdminState E_OpenconfigTerminalDevice_AdminStateType `path:"admin-state" module:"openconfig-terminal-device"` + Description *string `path:"description" module:"openconfig-terminal-device"` + Index *uint32 `path:"index" module:"openconfig-terminal-device"` + LogicalChannelType E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE `path:"logical-channel-type" module:"openconfig-terminal-device"` + LoopbackMode E_OpenconfigTerminalDevice_LoopbackModeType `path:"loopback-mode" module:"openconfig-terminal-device"` + RateClass E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE `path:"rate-class" module:"openconfig-terminal-device"` + TestSignal *bool `path:"test-signal" module:"openconfig-terminal-device"` + TribProtocol E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE `path:"trib-protocol" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet struct { + Config *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config `path:"config" module:"openconfig-terminal-device"` + Lldp *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp `path:"lldp" module:"openconfig-terminal-device"` + State *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_State `path:"state" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/config YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config struct { + AlsDelay *uint32 `path:"als-delay" module:"openconfig-terminal-device"` + ClientAls E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls `path:"client-als" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp struct { + Config *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Config `path:"config" module:"openconfig-terminal-device"` + Neighbors *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors `path:"neighbors" module:"openconfig-terminal-device"` + State *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State `path:"state" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Config represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/config YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Config struct { + Enabled *bool `path:"enabled" module:"openconfig-terminal-device"` + Snooping *bool `path:"snooping" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors struct { + Neighbor map[string]*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor `path:"neighbor" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors) IsYANGGoStruct() {} + +// NewNeighbor creates a new entry in the Neighbor list of the +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors) NewNeighbor(Id string) (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Neighbor == nil { + t.Neighbor = make(map[string]*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor) + } + + key := Id + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Neighbor[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) + } + + t.Neighbor[key] = &OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor{ + Id: &Id, + } + + return t.Neighbor[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor struct { + Config *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_Config `path:"config" module:"openconfig-terminal-device"` + CustomTlvs *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs `path:"custom-tlvs" module:"openconfig-terminal-device"` + Id *string `path:"id" module:"openconfig-terminal-device"` + State *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_State `path:"state" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor struct, which is a YANG list entry. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { + if t.Id == nil { + return nil, fmt.Errorf("nil value for key Id") + } + + return map[string]interface{}{ + "id": *t.Id, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_Config represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/config YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/custom-tlvs YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs struct { + Tlv map[OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Key]*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv `path:"tlv" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs) IsYANGGoStruct() {} + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Key represents the key for list Tlv of element /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/custom-tlvs. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Key struct { + Type int32 `path:"type"` + Oui string `path:"oui"` + OuiSubtype string `path:"oui-subtype"` +} + +// NewTlv creates a new entry in the Tlv list of the +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs) NewTlv(Type int32, Oui string, OuiSubtype string) (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Tlv == nil { + t.Tlv = make(map[OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Key]*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv) + } + + key := OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Key{ + Type: Type, + Oui: Oui, + OuiSubtype: OuiSubtype, + } + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Tlv[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Tlv", key) + } + + t.Tlv[key] = &OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv{ + Type: &Type, + Oui: &Oui, + OuiSubtype: &OuiSubtype, + } + + return t.Tlv[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/custom-tlvs/tlv YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv struct { + Config *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Config `path:"config" module:"openconfig-terminal-device"` + Oui *string `path:"oui" module:"openconfig-terminal-device"` + OuiSubtype *string `path:"oui-subtype" module:"openconfig-terminal-device"` + State *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_State `path:"state" module:"openconfig-terminal-device"` + Type *int32 `path:"type" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv struct, which is a YANG list entry. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv) ΛListKeyMap() (map[string]interface{}, error) { + if t.Oui == nil { + return nil, fmt.Errorf("nil value for key Oui") + } + + if t.OuiSubtype == nil { + return nil, fmt.Errorf("nil value for key OuiSubtype") + } + + if t.Type == nil { + return nil, fmt.Errorf("nil value for key Type") + } + + return map[string]interface{}{ + "oui": *t.Oui, + "oui-subtype": *t.OuiSubtype, + "type": *t.Type, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Config represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/custom-tlvs/tlv/config YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_State represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/custom-tlvs/tlv/state YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_State struct { + Oui *string `path:"oui" module:"openconfig-terminal-device"` + OuiSubtype *string `path:"oui-subtype" module:"openconfig-terminal-device"` + Type *int32 `path:"type" module:"openconfig-terminal-device"` + Value Binary `path:"value" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_CustomTlvs_Tlv_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_State represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/state YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_State struct { + Age *uint64 `path:"age" module:"openconfig-terminal-device"` + ChassisId *string `path:"chassis-id" module:"openconfig-terminal-device"` + ChassisIdType E_OpenconfigLldp_ChassisIdType `path:"chassis-id-type" module:"openconfig-terminal-device"` + Id *string `path:"id" module:"openconfig-terminal-device"` + LastUpdate *int64 `path:"last-update" module:"openconfig-terminal-device"` + ManagementAddress *string `path:"management-address" module:"openconfig-terminal-device"` + ManagementAddressType *string `path:"management-address-type" module:"openconfig-terminal-device"` + PortDescription *string `path:"port-description" module:"openconfig-terminal-device"` + PortId *string `path:"port-id" module:"openconfig-terminal-device"` + PortIdType E_OpenconfigLldp_PortIdType `path:"port-id-type" module:"openconfig-terminal-device"` + SystemDescription *string `path:"system-description" module:"openconfig-terminal-device"` + SystemName *string `path:"system-name" module:"openconfig-terminal-device"` + Ttl *uint16 `path:"ttl" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_Neighbors_Neighbor_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/state YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State struct { + Counters *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State_Counters `path:"counters" module:"openconfig-terminal-device"` + Enabled *bool `path:"enabled" module:"openconfig-terminal-device"` + Snooping *bool `path:"snooping" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State_Counters represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/lldp/state/counters YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State_Counters struct { + FrameDiscard *uint64 `path:"frame-discard" module:"openconfig-terminal-device"` + FrameErrorIn *uint64 `path:"frame-error-in" module:"openconfig-terminal-device"` + FrameErrorOut *uint64 `path:"frame-error-out" module:"openconfig-terminal-device"` + FrameIn *uint64 `path:"frame-in" module:"openconfig-terminal-device"` + FrameOut *uint64 `path:"frame-out" module:"openconfig-terminal-device"` + LastClear *string `path:"last-clear" module:"openconfig-terminal-device"` + TlvDiscard *uint64 `path:"tlv-discard" module:"openconfig-terminal-device"` + TlvUnknown *uint64 `path:"tlv-unknown" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State_Counters implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State_Counters) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State_Counters) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State_Counters"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Lldp_State_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_State represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ethernet/state YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_State struct { + AlsDelay *uint32 `path:"als-delay" module:"openconfig-terminal-device"` + ClientAls E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls `path:"client-als" module:"openconfig-terminal-device"` + In_8021QFrames *uint64 `path:"in-8021q-frames" module:"openconfig-terminal-device"` + InBlockErrors *uint64 `path:"in-block-errors" module:"openconfig-terminal-device"` + InCrcErrors *uint64 `path:"in-crc-errors" module:"openconfig-terminal-device"` + InFragmentFrames *uint64 `path:"in-fragment-frames" module:"openconfig-terminal-device"` + InJabberFrames *uint64 `path:"in-jabber-frames" module:"openconfig-terminal-device"` + InMacControlFrames *uint64 `path:"in-mac-control-frames" module:"openconfig-terminal-device"` + InMacPauseFrames *uint64 `path:"in-mac-pause-frames" module:"openconfig-terminal-device"` + InOversizeFrames *uint64 `path:"in-oversize-frames" module:"openconfig-terminal-device"` + InPcsBipErrors *uint64 `path:"in-pcs-bip-errors" module:"openconfig-terminal-device"` + InPcsErroredSeconds *uint64 `path:"in-pcs-errored-seconds" module:"openconfig-terminal-device"` + InPcsSeverelyErroredSeconds *uint64 `path:"in-pcs-severely-errored-seconds" module:"openconfig-terminal-device"` + InPcsUnavailableSeconds *uint64 `path:"in-pcs-unavailable-seconds" module:"openconfig-terminal-device"` + InUndersizeFrames *uint64 `path:"in-undersize-frames" module:"openconfig-terminal-device"` + Out_8021QFrames *uint64 `path:"out-8021q-frames" module:"openconfig-terminal-device"` + OutBlockErrors *uint64 `path:"out-block-errors" module:"openconfig-terminal-device"` + OutCrcErrors *uint64 `path:"out-crc-errors" module:"openconfig-terminal-device"` + OutMacControlFrames *uint64 `path:"out-mac-control-frames" module:"openconfig-terminal-device"` + OutMacPauseFrames *uint64 `path:"out-mac-pause-frames" module:"openconfig-terminal-device"` + OutPcsBipErrors *uint64 `path:"out-pcs-bip-errors" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ingress YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress struct { + Config *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_Config `path:"config" module:"openconfig-terminal-device"` + State *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_State `path:"state" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_Config represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ingress/config YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_Config struct { + PhysicalChannel []uint16 `path:"physical-channel" module:"openconfig-terminal-device"` + Transceiver *string `path:"transceiver" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_State represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/ingress/state YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_State struct { + PhysicalChannel []uint16 `path:"physical-channel" module:"openconfig-terminal-device"` + Transceiver *string `path:"transceiver" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ingress_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/logical-channel-assignments YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments struct { + Assignment map[uint32]*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment `path:"assignment" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments) IsYANGGoStruct() {} + +// NewAssignment creates a new entry in the Assignment list of the +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments) NewAssignment(Index uint32) (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Assignment == nil { + t.Assignment = make(map[uint32]*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment) + } + + key := Index + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Assignment[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Assignment", key) + } + + t.Assignment[key] = &OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment{ + Index: &Index, + } + + return t.Assignment[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/logical-channel-assignments/assignment YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment struct { + Config *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config `path:"config" module:"openconfig-terminal-device"` + Index *uint32 `path:"index" module:"openconfig-terminal-device"` + State *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_State `path:"state" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment struct, which is a YANG list entry. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment) ΛListKeyMap() (map[string]interface{}, error) { + if t.Index == nil { + return nil, fmt.Errorf("nil value for key Index") + } + + return map[string]interface{}{ + "index": *t.Index, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config struct { + Allocation *float64 `path:"allocation" module:"openconfig-terminal-device"` + AssignmentType E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType `path:"assignment-type" module:"openconfig-terminal-device"` + Description *string `path:"description" module:"openconfig-terminal-device"` + Index *uint32 `path:"index" module:"openconfig-terminal-device"` + LogicalChannel *uint32 `path:"logical-channel" module:"openconfig-terminal-device"` + Mapping E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL `path:"mapping" module:"openconfig-terminal-device"` + OpticalChannel *string `path:"optical-channel" module:"openconfig-terminal-device"` + TributarySlotIndex *int32 `path:"tributary-slot-index" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_State represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_State struct { + Allocation *float64 `path:"allocation" module:"openconfig-terminal-device"` + AssignmentType E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType `path:"assignment-type" module:"openconfig-terminal-device"` + Description *string `path:"description" module:"openconfig-terminal-device"` + Index *uint32 `path:"index" module:"openconfig-terminal-device"` + LogicalChannel *uint32 `path:"logical-channel" module:"openconfig-terminal-device"` + Mapping E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL `path:"mapping" module:"openconfig-terminal-device"` + OpticalChannel *string `path:"optical-channel" module:"openconfig-terminal-device"` + TributarySlotIndex *int32 `path:"tributary-slot-index" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn struct { + Config *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_Config `path:"config" module:"openconfig-terminal-device"` + State *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State `path:"state" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_Config represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn/config YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_Config struct { + TributarySlotGranularity E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY `path:"tributary-slot-granularity" module:"openconfig-terminal-device"` + TtiMsgAuto *bool `path:"tti-msg-auto" module:"openconfig-terminal-device"` + TtiMsgExpected *string `path:"tti-msg-expected" module:"openconfig-terminal-device"` + TtiMsgTransmit *string `path:"tti-msg-transmit" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn/state YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State struct { + BackgroundBlockErrors *uint64 `path:"background-block-errors" module:"openconfig-terminal-device"` + CodeViolations *uint64 `path:"code-violations" module:"openconfig-terminal-device"` + ErroredBlocks *uint64 `path:"errored-blocks" module:"openconfig-terminal-device"` + ErroredSeconds *uint64 `path:"errored-seconds" module:"openconfig-terminal-device"` + Esnr *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_Esnr `path:"esnr" module:"openconfig-terminal-device"` + FecCorrectedBits *uint64 `path:"fec-corrected-bits" module:"openconfig-terminal-device"` + FecCorrectedBytes *uint64 `path:"fec-corrected-bytes" module:"openconfig-terminal-device"` + FecUncorrectableBlocks *uint64 `path:"fec-uncorrectable-blocks" module:"openconfig-terminal-device"` + FecUncorrectableWords *uint64 `path:"fec-uncorrectable-words" module:"openconfig-terminal-device"` + PostFecBer *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PostFecBer `path:"post-fec-ber" module:"openconfig-terminal-device"` + PreFecBer *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PreFecBer `path:"pre-fec-ber" module:"openconfig-terminal-device"` + QValue *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_QValue `path:"q-value" module:"openconfig-terminal-device"` + RdiMsg *string `path:"rdi-msg" module:"openconfig-terminal-device"` + SeverelyErroredSeconds *uint64 `path:"severely-errored-seconds" module:"openconfig-terminal-device"` + TributarySlotGranularity E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY `path:"tributary-slot-granularity" module:"openconfig-terminal-device"` + TtiMsgAuto *bool `path:"tti-msg-auto" module:"openconfig-terminal-device"` + TtiMsgExpected *string `path:"tti-msg-expected" module:"openconfig-terminal-device"` + TtiMsgRecv *string `path:"tti-msg-recv" module:"openconfig-terminal-device"` + TtiMsgTransmit *string `path:"tti-msg-transmit" module:"openconfig-terminal-device"` + UnavailableSeconds *uint64 `path:"unavailable-seconds" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_Esnr represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn/state/esnr YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_Esnr struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_Esnr implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_Esnr) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_Esnr) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_Esnr"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_Esnr) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PostFecBer represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn/state/post-fec-ber YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PostFecBer struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PostFecBer implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PostFecBer) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PostFecBer) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PostFecBer"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PostFecBer) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PreFecBer represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn/state/pre-fec-ber YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PreFecBer struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PreFecBer implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PreFecBer) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PreFecBer) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PreFecBer"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_PreFecBer) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_QValue represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/otn/state/q-value YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_QValue struct { + Avg *float64 `path:"avg" module:"openconfig-terminal-device"` + Instant *float64 `path:"instant" module:"openconfig-terminal-device"` + Interval *uint64 `path:"interval" module:"openconfig-terminal-device"` + Max *float64 `path:"max" module:"openconfig-terminal-device"` + MaxTime *uint64 `path:"max-time" module:"openconfig-terminal-device"` + Min *float64 `path:"min" module:"openconfig-terminal-device"` + MinTime *uint64 `path:"min-time" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_QValue implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_QValue) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_QValue) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_QValue"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Otn_State_QValue) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State represents the /openconfig-terminal-device/terminal-device/logical-channels/channel/state YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State struct { + AdminState E_OpenconfigTerminalDevice_AdminStateType `path:"admin-state" module:"openconfig-terminal-device"` + Description *string `path:"description" module:"openconfig-terminal-device"` + Index *uint32 `path:"index" module:"openconfig-terminal-device"` + LinkState E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState `path:"link-state" module:"openconfig-terminal-device"` + LogicalChannelType E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE `path:"logical-channel-type" module:"openconfig-terminal-device"` + LoopbackMode E_OpenconfigTerminalDevice_LoopbackModeType `path:"loopback-mode" module:"openconfig-terminal-device"` + RateClass E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE `path:"rate-class" module:"openconfig-terminal-device"` + TestSignal *bool `path:"test-signal" module:"openconfig-terminal-device"` + TribProtocol E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE `path:"trib-protocol" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_OperationalModes represents the /openconfig-terminal-device/terminal-device/operational-modes YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_OperationalModes struct { + Mode map[uint16]*OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode `path:"mode" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_OperationalModes implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_OperationalModes) IsYANGGoStruct() {} + +// NewMode creates a new entry in the Mode list of the +// OpenconfigTerminalDevice_TerminalDevice_OperationalModes struct. The keys of the list are populated from the input +// arguments. +func (t *OpenconfigTerminalDevice_TerminalDevice_OperationalModes) NewMode(ModeId uint16) (*OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Mode == nil { + t.Mode = make(map[uint16]*OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode) + } + + key := ModeId + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Mode[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Mode", key) + } + + t.Mode[key] = &OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode{ + ModeId: &ModeId, + } + + return t.Mode[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_OperationalModes) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_OperationalModes"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_OperationalModes) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode represents the /openconfig-terminal-device/terminal-device/operational-modes/mode YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode struct { + Config *OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_Config `path:"config" module:"openconfig-terminal-device"` + ModeId *uint16 `path:"mode-id" module:"openconfig-terminal-device"` + State *OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_State `path:"state" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode struct, which is a YANG list entry. +func (t *OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode) ΛListKeyMap() (map[string]interface{}, error) { + if t.ModeId == nil { + return nil, fmt.Errorf("nil value for key ModeId") + } + + return map[string]interface{}{ + "mode-id": *t.ModeId, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_Config represents the /openconfig-terminal-device/terminal-device/operational-modes/mode/config YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_Config struct { +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_Config implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_Config) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_Config) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_Config"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_Config) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_State represents the /openconfig-terminal-device/terminal-device/operational-modes/mode/state YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_State struct { + Description *string `path:"description" module:"openconfig-terminal-device"` + ModeId *uint16 `path:"mode-id" module:"openconfig-terminal-device"` + VendorId *string `path:"vendor-id" module:"openconfig-terminal-device"` +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_OperationalModes_Mode_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// OpenconfigTerminalDevice_TerminalDevice_State represents the /openconfig-terminal-device/terminal-device/state YANG schema element. +type OpenconfigTerminalDevice_TerminalDevice_State struct { +} + +// IsYANGGoStruct ensures that OpenconfigTerminalDevice_TerminalDevice_State implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*OpenconfigTerminalDevice_TerminalDevice_State) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *OpenconfigTerminalDevice_TerminalDevice_State) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["OpenconfigTerminalDevice_TerminalDevice_State"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *OpenconfigTerminalDevice_TerminalDevice_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// E_IETFInterfaces_InterfaceType is a derived int64 type which is used to represent +// the enumerated node IETFInterfaces_InterfaceType. An additional value named +// IETFInterfaces_InterfaceType_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_IETFInterfaces_InterfaceType int64 + +// IsYANGGoEnum ensures that IETFInterfaces_InterfaceType implements the yang.GoEnum +// interface. This ensures that IETFInterfaces_InterfaceType can be identified as a +// mapped type for a YANG enumeration. +func (E_IETFInterfaces_InterfaceType) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with IETFInterfaces_InterfaceType. +func (E_IETFInterfaces_InterfaceType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // IETFInterfaces_InterfaceType_UNSET corresponds to the value UNSET of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_UNSET E_IETFInterfaces_InterfaceType = 0 +) + + +// E_IETFInterfaces_InterfacesState_Interface_AdminStatus is a derived int64 type which is used to represent +// the enumerated node IETFInterfaces_InterfacesState_Interface_AdminStatus. An additional value named +// IETFInterfaces_InterfacesState_Interface_AdminStatus_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_IETFInterfaces_InterfacesState_Interface_AdminStatus int64 + +// IsYANGGoEnum ensures that IETFInterfaces_InterfacesState_Interface_AdminStatus implements the yang.GoEnum +// interface. This ensures that IETFInterfaces_InterfacesState_Interface_AdminStatus can be identified as a +// mapped type for a YANG enumeration. +func (E_IETFInterfaces_InterfacesState_Interface_AdminStatus) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with IETFInterfaces_InterfacesState_Interface_AdminStatus. +func (E_IETFInterfaces_InterfacesState_Interface_AdminStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // IETFInterfaces_InterfacesState_Interface_AdminStatus_UNSET corresponds to the value UNSET of IETFInterfaces_InterfacesState_Interface_AdminStatus + IETFInterfaces_InterfacesState_Interface_AdminStatus_UNSET E_IETFInterfaces_InterfacesState_Interface_AdminStatus = 0 + // IETFInterfaces_InterfacesState_Interface_AdminStatus_up corresponds to the value up of IETFInterfaces_InterfacesState_Interface_AdminStatus + IETFInterfaces_InterfacesState_Interface_AdminStatus_up E_IETFInterfaces_InterfacesState_Interface_AdminStatus = 2 + // IETFInterfaces_InterfacesState_Interface_AdminStatus_down corresponds to the value down of IETFInterfaces_InterfacesState_Interface_AdminStatus + IETFInterfaces_InterfacesState_Interface_AdminStatus_down E_IETFInterfaces_InterfacesState_Interface_AdminStatus = 3 + // IETFInterfaces_InterfacesState_Interface_AdminStatus_testing corresponds to the value testing of IETFInterfaces_InterfacesState_Interface_AdminStatus + IETFInterfaces_InterfacesState_Interface_AdminStatus_testing E_IETFInterfaces_InterfacesState_Interface_AdminStatus = 4 +) + + +// E_IETFInterfaces_InterfacesState_Interface_OperStatus is a derived int64 type which is used to represent +// the enumerated node IETFInterfaces_InterfacesState_Interface_OperStatus. An additional value named +// IETFInterfaces_InterfacesState_Interface_OperStatus_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_IETFInterfaces_InterfacesState_Interface_OperStatus int64 + +// IsYANGGoEnum ensures that IETFInterfaces_InterfacesState_Interface_OperStatus implements the yang.GoEnum +// interface. This ensures that IETFInterfaces_InterfacesState_Interface_OperStatus can be identified as a +// mapped type for a YANG enumeration. +func (E_IETFInterfaces_InterfacesState_Interface_OperStatus) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with IETFInterfaces_InterfacesState_Interface_OperStatus. +func (E_IETFInterfaces_InterfacesState_Interface_OperStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // IETFInterfaces_InterfacesState_Interface_OperStatus_UNSET corresponds to the value UNSET of IETFInterfaces_InterfacesState_Interface_OperStatus + IETFInterfaces_InterfacesState_Interface_OperStatus_UNSET E_IETFInterfaces_InterfacesState_Interface_OperStatus = 0 + // IETFInterfaces_InterfacesState_Interface_OperStatus_up corresponds to the value up of IETFInterfaces_InterfacesState_Interface_OperStatus + IETFInterfaces_InterfacesState_Interface_OperStatus_up E_IETFInterfaces_InterfacesState_Interface_OperStatus = 2 + // IETFInterfaces_InterfacesState_Interface_OperStatus_down corresponds to the value down of IETFInterfaces_InterfacesState_Interface_OperStatus + IETFInterfaces_InterfacesState_Interface_OperStatus_down E_IETFInterfaces_InterfacesState_Interface_OperStatus = 3 + // IETFInterfaces_InterfacesState_Interface_OperStatus_testing corresponds to the value testing of IETFInterfaces_InterfacesState_Interface_OperStatus + IETFInterfaces_InterfacesState_Interface_OperStatus_testing E_IETFInterfaces_InterfacesState_Interface_OperStatus = 4 + // IETFInterfaces_InterfacesState_Interface_OperStatus_unknown corresponds to the value unknown of IETFInterfaces_InterfacesState_Interface_OperStatus + IETFInterfaces_InterfacesState_Interface_OperStatus_unknown E_IETFInterfaces_InterfacesState_Interface_OperStatus = 5 + // IETFInterfaces_InterfacesState_Interface_OperStatus_dormant corresponds to the value dormant of IETFInterfaces_InterfacesState_Interface_OperStatus + IETFInterfaces_InterfacesState_Interface_OperStatus_dormant E_IETFInterfaces_InterfacesState_Interface_OperStatus = 6 + // IETFInterfaces_InterfacesState_Interface_OperStatus_not_present corresponds to the value not_present of IETFInterfaces_InterfacesState_Interface_OperStatus + IETFInterfaces_InterfacesState_Interface_OperStatus_not_present E_IETFInterfaces_InterfacesState_Interface_OperStatus = 7 + // IETFInterfaces_InterfacesState_Interface_OperStatus_lower_layer_down corresponds to the value lower_layer_down of IETFInterfaces_InterfacesState_Interface_OperStatus + IETFInterfaces_InterfacesState_Interface_OperStatus_lower_layer_down E_IETFInterfaces_InterfacesState_Interface_OperStatus = 8 +) + + +// E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY is a derived int64 type which is used to represent +// the enumerated node OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY. An additional value named +// OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY int64 + +// IsYANGGoEnum ensures that OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY implements the yang.GoEnum +// interface. This ensures that OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY. +func (E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNSET corresponds to the value UNSET of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY + OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNSET E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 0 + // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_CRITICAL corresponds to the value CRITICAL of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY + OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_CRITICAL E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 1 + // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_MAJOR corresponds to the value MAJOR of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY + OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_MAJOR E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 2 + // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_MINOR corresponds to the value MINOR of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY + OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_MINOR E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 3 + // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNKNOWN corresponds to the value UNKNOWN of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY + OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNKNOWN E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 4 + // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_WARNING corresponds to the value WARNING of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY + OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_WARNING E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 5 +) + + +// E_OpenconfigIfEthernet_ETHERNET_SPEED is a derived int64 type which is used to represent +// the enumerated node OpenconfigIfEthernet_ETHERNET_SPEED. An additional value named +// OpenconfigIfEthernet_ETHERNET_SPEED_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigIfEthernet_ETHERNET_SPEED int64 + +// IsYANGGoEnum ensures that OpenconfigIfEthernet_ETHERNET_SPEED implements the yang.GoEnum +// interface. This ensures that OpenconfigIfEthernet_ETHERNET_SPEED can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigIfEthernet_ETHERNET_SPEED) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigIfEthernet_ETHERNET_SPEED. +func (E_OpenconfigIfEthernet_ETHERNET_SPEED) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigIfEthernet_ETHERNET_SPEED_UNSET corresponds to the value UNSET of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_UNSET E_OpenconfigIfEthernet_ETHERNET_SPEED = 0 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB corresponds to the value SPEED_100GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 1 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100MB corresponds to the value SPEED_100MB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100MB E_OpenconfigIfEthernet_ETHERNET_SPEED = 2 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB corresponds to the value SPEED_10GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 3 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10MB corresponds to the value SPEED_10MB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10MB E_OpenconfigIfEthernet_ETHERNET_SPEED = 4 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB corresponds to the value SPEED_1GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 5 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_2500MB corresponds to the value SPEED_2500MB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_2500MB E_OpenconfigIfEthernet_ETHERNET_SPEED = 6 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB corresponds to the value SPEED_25GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 7 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB corresponds to the value SPEED_40GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 8 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_50GB corresponds to the value SPEED_50GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_50GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 9 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_5GB corresponds to the value SPEED_5GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_5GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 10 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_UNKNOWN corresponds to the value SPEED_UNKNOWN of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_UNKNOWN E_OpenconfigIfEthernet_ETHERNET_SPEED = 11 +) + + +// E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode is a derived int64 type which is used to represent +// the enumerated node OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode. An additional value named +// OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode int64 + +// IsYANGGoEnum ensures that OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode implements the yang.GoEnum +// interface. This ensures that OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode. +func (E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode_UNSET corresponds to the value UNSET of OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode + OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode_UNSET E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode = 0 + // OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode_FULL corresponds to the value FULL of OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode + OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode_FULL E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode = 1 + // OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode_HALF corresponds to the value HALF of OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode + OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode_HALF E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode = 2 +) + + +// E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode is a derived int64 type which is used to represent +// the enumerated node OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode. An additional value named +// OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode int64 + +// IsYANGGoEnum ensures that OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode implements the yang.GoEnum +// interface. This ensures that OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode. +func (E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode_UNSET corresponds to the value UNSET of OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode + OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode_UNSET E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode = 0 + // OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode_FULL corresponds to the value FULL of OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode + OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode_FULL E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode = 1 + // OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode_HALF corresponds to the value HALF of OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode + OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode_HALF E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode = 2 +) + + +// E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus is a derived int64 type which is used to represent +// the enumerated node OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus. An additional value named +// OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus int64 + +// IsYANGGoEnum ensures that OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus implements the yang.GoEnum +// interface. This ensures that OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus. +func (E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_UNSET corresponds to the value UNSET of OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus + OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_UNSET E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus = 0 + // OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_UP corresponds to the value UP of OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus + OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_UP E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus = 1 + // OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_DOWN corresponds to the value DOWN of OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus + OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_DOWN E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus = 2 + // OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_TESTING corresponds to the value TESTING of OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus + OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_TESTING E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus = 3 +) + + +// E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus is a derived int64 type which is used to represent +// the enumerated node OpenconfigInterfaces_Interfaces_Interface_State_OperStatus. An additional value named +// OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus int64 + +// IsYANGGoEnum ensures that OpenconfigInterfaces_Interfaces_Interface_State_OperStatus implements the yang.GoEnum +// interface. This ensures that OpenconfigInterfaces_Interfaces_Interface_State_OperStatus can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigInterfaces_Interfaces_Interface_State_OperStatus. +func (E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UNSET corresponds to the value UNSET of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus + OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UNSET E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 0 + // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UP corresponds to the value UP of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus + OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UP E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 2 + // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_DOWN corresponds to the value DOWN of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus + OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_DOWN E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 3 + // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_TESTING corresponds to the value TESTING of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus + OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_TESTING E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 4 + // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UNKNOWN corresponds to the value UNKNOWN of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus + OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UNKNOWN E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 5 + // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_DORMANT corresponds to the value DORMANT of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus + OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_DORMANT E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 6 + // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_NOT_PRESENT corresponds to the value NOT_PRESENT of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus + OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_NOT_PRESENT E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 7 + // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_LOWER_LAYER_DOWN corresponds to the value LOWER_LAYER_DOWN of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus + OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_LOWER_LAYER_DOWN E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 8 +) + + +// E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY is a derived int64 type which is used to represent +// the enumerated node OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY. An additional value named +// OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY int64 + +// IsYANGGoEnum ensures that OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY implements the yang.GoEnum +// interface. This ensures that OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY. +func (E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_UNSET corresponds to the value UNSET of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_UNSET E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 0 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_C_VLAN corresponds to the value C_VLAN of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_C_VLAN E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 1 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_DOCSIS_CABLE_DEVICE corresponds to the value DOCSIS_CABLE_DEVICE of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_DOCSIS_CABLE_DEVICE E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 2 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_MAC_BRIDGE corresponds to the value MAC_BRIDGE of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_MAC_BRIDGE E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 3 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_OTHER corresponds to the value OTHER of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_OTHER E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 4 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_REPEATER corresponds to the value REPEATER of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_REPEATER E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 5 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_ROUTER corresponds to the value ROUTER of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_ROUTER E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 6 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_STATION_ONLY corresponds to the value STATION_ONLY of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_STATION_ONLY E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 7 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_S_VLAN corresponds to the value S_VLAN of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_S_VLAN E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 8 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_TELEPHONE corresponds to the value TELEPHONE of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_TELEPHONE E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 9 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_TWO_PORT_MAC_RELAY corresponds to the value TWO_PORT_MAC_RELAY of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_TWO_PORT_MAC_RELAY E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 10 + // OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_WLAN_ACCESS_POINT corresponds to the value WLAN_ACCESS_POINT of OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY + OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY_WLAN_ACCESS_POINT E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY = 11 +) + + +// E_OpenconfigLldpTypes_LLDP_TLV is a derived int64 type which is used to represent +// the enumerated node OpenconfigLldpTypes_LLDP_TLV. An additional value named +// OpenconfigLldpTypes_LLDP_TLV_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigLldpTypes_LLDP_TLV int64 + +// IsYANGGoEnum ensures that OpenconfigLldpTypes_LLDP_TLV implements the yang.GoEnum +// interface. This ensures that OpenconfigLldpTypes_LLDP_TLV can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigLldpTypes_LLDP_TLV) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigLldpTypes_LLDP_TLV. +func (E_OpenconfigLldpTypes_LLDP_TLV) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigLldpTypes_LLDP_TLV_UNSET corresponds to the value UNSET of OpenconfigLldpTypes_LLDP_TLV + OpenconfigLldpTypes_LLDP_TLV_UNSET E_OpenconfigLldpTypes_LLDP_TLV = 0 + // OpenconfigLldpTypes_LLDP_TLV_CHASSIS_ID corresponds to the value CHASSIS_ID of OpenconfigLldpTypes_LLDP_TLV + OpenconfigLldpTypes_LLDP_TLV_CHASSIS_ID E_OpenconfigLldpTypes_LLDP_TLV = 1 + // OpenconfigLldpTypes_LLDP_TLV_MANAGEMENT_ADDRESS corresponds to the value MANAGEMENT_ADDRESS of OpenconfigLldpTypes_LLDP_TLV + OpenconfigLldpTypes_LLDP_TLV_MANAGEMENT_ADDRESS E_OpenconfigLldpTypes_LLDP_TLV = 2 + // OpenconfigLldpTypes_LLDP_TLV_PORT_DESCRIPTION corresponds to the value PORT_DESCRIPTION of OpenconfigLldpTypes_LLDP_TLV + OpenconfigLldpTypes_LLDP_TLV_PORT_DESCRIPTION E_OpenconfigLldpTypes_LLDP_TLV = 3 + // OpenconfigLldpTypes_LLDP_TLV_PORT_ID corresponds to the value PORT_ID of OpenconfigLldpTypes_LLDP_TLV + OpenconfigLldpTypes_LLDP_TLV_PORT_ID E_OpenconfigLldpTypes_LLDP_TLV = 4 + // OpenconfigLldpTypes_LLDP_TLV_SYSTEM_CAPABILITIES corresponds to the value SYSTEM_CAPABILITIES of OpenconfigLldpTypes_LLDP_TLV + OpenconfigLldpTypes_LLDP_TLV_SYSTEM_CAPABILITIES E_OpenconfigLldpTypes_LLDP_TLV = 5 + // OpenconfigLldpTypes_LLDP_TLV_SYSTEM_DESCRIPTION corresponds to the value SYSTEM_DESCRIPTION of OpenconfigLldpTypes_LLDP_TLV + OpenconfigLldpTypes_LLDP_TLV_SYSTEM_DESCRIPTION E_OpenconfigLldpTypes_LLDP_TLV = 6 + // OpenconfigLldpTypes_LLDP_TLV_SYSTEM_NAME corresponds to the value SYSTEM_NAME of OpenconfigLldpTypes_LLDP_TLV + OpenconfigLldpTypes_LLDP_TLV_SYSTEM_NAME E_OpenconfigLldpTypes_LLDP_TLV = 7 +) + + +// E_OpenconfigLldp_ChassisIdType is a derived int64 type which is used to represent +// the enumerated node OpenconfigLldp_ChassisIdType. An additional value named +// OpenconfigLldp_ChassisIdType_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigLldp_ChassisIdType int64 + +// IsYANGGoEnum ensures that OpenconfigLldp_ChassisIdType implements the yang.GoEnum +// interface. This ensures that OpenconfigLldp_ChassisIdType can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigLldp_ChassisIdType) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigLldp_ChassisIdType. +func (E_OpenconfigLldp_ChassisIdType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigLldp_ChassisIdType_UNSET corresponds to the value UNSET of OpenconfigLldp_ChassisIdType + OpenconfigLldp_ChassisIdType_UNSET E_OpenconfigLldp_ChassisIdType = 0 + // OpenconfigLldp_ChassisIdType_CHASSIS_COMPONENT corresponds to the value CHASSIS_COMPONENT of OpenconfigLldp_ChassisIdType + OpenconfigLldp_ChassisIdType_CHASSIS_COMPONENT E_OpenconfigLldp_ChassisIdType = 1 + // OpenconfigLldp_ChassisIdType_INTERFACE_ALIAS corresponds to the value INTERFACE_ALIAS of OpenconfigLldp_ChassisIdType + OpenconfigLldp_ChassisIdType_INTERFACE_ALIAS E_OpenconfigLldp_ChassisIdType = 2 + // OpenconfigLldp_ChassisIdType_PORT_COMPONENT corresponds to the value PORT_COMPONENT of OpenconfigLldp_ChassisIdType + OpenconfigLldp_ChassisIdType_PORT_COMPONENT E_OpenconfigLldp_ChassisIdType = 3 + // OpenconfigLldp_ChassisIdType_MAC_ADDRESS corresponds to the value MAC_ADDRESS of OpenconfigLldp_ChassisIdType + OpenconfigLldp_ChassisIdType_MAC_ADDRESS E_OpenconfigLldp_ChassisIdType = 4 + // OpenconfigLldp_ChassisIdType_NETWORK_ADDRESS corresponds to the value NETWORK_ADDRESS of OpenconfigLldp_ChassisIdType + OpenconfigLldp_ChassisIdType_NETWORK_ADDRESS E_OpenconfigLldp_ChassisIdType = 5 + // OpenconfigLldp_ChassisIdType_INTERFACE_NAME corresponds to the value INTERFACE_NAME of OpenconfigLldp_ChassisIdType + OpenconfigLldp_ChassisIdType_INTERFACE_NAME E_OpenconfigLldp_ChassisIdType = 6 + // OpenconfigLldp_ChassisIdType_LOCAL corresponds to the value LOCAL of OpenconfigLldp_ChassisIdType + OpenconfigLldp_ChassisIdType_LOCAL E_OpenconfigLldp_ChassisIdType = 7 +) + + +// E_OpenconfigLldp_PortIdType is a derived int64 type which is used to represent +// the enumerated node OpenconfigLldp_PortIdType. An additional value named +// OpenconfigLldp_PortIdType_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigLldp_PortIdType int64 + +// IsYANGGoEnum ensures that OpenconfigLldp_PortIdType implements the yang.GoEnum +// interface. This ensures that OpenconfigLldp_PortIdType can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigLldp_PortIdType) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigLldp_PortIdType. +func (E_OpenconfigLldp_PortIdType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigLldp_PortIdType_UNSET corresponds to the value UNSET of OpenconfigLldp_PortIdType + OpenconfigLldp_PortIdType_UNSET E_OpenconfigLldp_PortIdType = 0 + // OpenconfigLldp_PortIdType_INTERFACE_ALIAS corresponds to the value INTERFACE_ALIAS of OpenconfigLldp_PortIdType + OpenconfigLldp_PortIdType_INTERFACE_ALIAS E_OpenconfigLldp_PortIdType = 1 + // OpenconfigLldp_PortIdType_PORT_COMPONENT corresponds to the value PORT_COMPONENT of OpenconfigLldp_PortIdType + OpenconfigLldp_PortIdType_PORT_COMPONENT E_OpenconfigLldp_PortIdType = 2 + // OpenconfigLldp_PortIdType_MAC_ADDRESS corresponds to the value MAC_ADDRESS of OpenconfigLldp_PortIdType + OpenconfigLldp_PortIdType_MAC_ADDRESS E_OpenconfigLldp_PortIdType = 3 + // OpenconfigLldp_PortIdType_NETWORK_ADDRESS corresponds to the value NETWORK_ADDRESS of OpenconfigLldp_PortIdType + OpenconfigLldp_PortIdType_NETWORK_ADDRESS E_OpenconfigLldp_PortIdType = 4 + // OpenconfigLldp_PortIdType_INTERFACE_NAME corresponds to the value INTERFACE_NAME of OpenconfigLldp_PortIdType + OpenconfigLldp_PortIdType_INTERFACE_NAME E_OpenconfigLldp_PortIdType = 5 + // OpenconfigLldp_PortIdType_AGENT_CIRCUIT_ID corresponds to the value AGENT_CIRCUIT_ID of OpenconfigLldp_PortIdType + OpenconfigLldp_PortIdType_AGENT_CIRCUIT_ID E_OpenconfigLldp_PortIdType = 6 + // OpenconfigLldp_PortIdType_LOCAL corresponds to the value LOCAL of OpenconfigLldp_PortIdType + OpenconfigLldp_PortIdType_LOCAL E_OpenconfigLldp_PortIdType = 7 +) + + +// E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS is a derived int64 type which is used to represent +// the enumerated node OpenconfigPlatformTypes_COMPONENT_OPER_STATUS. An additional value named +// OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS int64 + +// IsYANGGoEnum ensures that OpenconfigPlatformTypes_COMPONENT_OPER_STATUS implements the yang.GoEnum +// interface. This ensures that OpenconfigPlatformTypes_COMPONENT_OPER_STATUS can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigPlatformTypes_COMPONENT_OPER_STATUS. +func (E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_UNSET corresponds to the value UNSET of OpenconfigPlatformTypes_COMPONENT_OPER_STATUS + OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_UNSET E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS = 0 + // OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_ACTIVE corresponds to the value ACTIVE of OpenconfigPlatformTypes_COMPONENT_OPER_STATUS + OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_ACTIVE E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS = 1 + // OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_DISABLED corresponds to the value DISABLED of OpenconfigPlatformTypes_COMPONENT_OPER_STATUS + OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_DISABLED E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS = 2 + // OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_INACTIVE corresponds to the value INACTIVE of OpenconfigPlatformTypes_COMPONENT_OPER_STATUS + OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_INACTIVE E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS = 3 +) + + +// E_OpenconfigPlatformTypes_FEC_MODE_TYPE is a derived int64 type which is used to represent +// the enumerated node OpenconfigPlatformTypes_FEC_MODE_TYPE. An additional value named +// OpenconfigPlatformTypes_FEC_MODE_TYPE_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigPlatformTypes_FEC_MODE_TYPE int64 + +// IsYANGGoEnum ensures that OpenconfigPlatformTypes_FEC_MODE_TYPE implements the yang.GoEnum +// interface. This ensures that OpenconfigPlatformTypes_FEC_MODE_TYPE can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigPlatformTypes_FEC_MODE_TYPE) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigPlatformTypes_FEC_MODE_TYPE. +func (E_OpenconfigPlatformTypes_FEC_MODE_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigPlatformTypes_FEC_MODE_TYPE_UNSET corresponds to the value UNSET of OpenconfigPlatformTypes_FEC_MODE_TYPE + OpenconfigPlatformTypes_FEC_MODE_TYPE_UNSET E_OpenconfigPlatformTypes_FEC_MODE_TYPE = 0 + // OpenconfigPlatformTypes_FEC_MODE_TYPE_FEC_AUTO corresponds to the value FEC_AUTO of OpenconfigPlatformTypes_FEC_MODE_TYPE + OpenconfigPlatformTypes_FEC_MODE_TYPE_FEC_AUTO E_OpenconfigPlatformTypes_FEC_MODE_TYPE = 1 + // OpenconfigPlatformTypes_FEC_MODE_TYPE_FEC_DISABLED corresponds to the value FEC_DISABLED of OpenconfigPlatformTypes_FEC_MODE_TYPE + OpenconfigPlatformTypes_FEC_MODE_TYPE_FEC_DISABLED E_OpenconfigPlatformTypes_FEC_MODE_TYPE = 2 + // OpenconfigPlatformTypes_FEC_MODE_TYPE_FEC_ENABLED corresponds to the value FEC_ENABLED of OpenconfigPlatformTypes_FEC_MODE_TYPE + OpenconfigPlatformTypes_FEC_MODE_TYPE_FEC_ENABLED E_OpenconfigPlatformTypes_FEC_MODE_TYPE = 3 +) + + +// E_OpenconfigPlatformTypes_FEC_STATUS_TYPE is a derived int64 type which is used to represent +// the enumerated node OpenconfigPlatformTypes_FEC_STATUS_TYPE. An additional value named +// OpenconfigPlatformTypes_FEC_STATUS_TYPE_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigPlatformTypes_FEC_STATUS_TYPE int64 + +// IsYANGGoEnum ensures that OpenconfigPlatformTypes_FEC_STATUS_TYPE implements the yang.GoEnum +// interface. This ensures that OpenconfigPlatformTypes_FEC_STATUS_TYPE can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigPlatformTypes_FEC_STATUS_TYPE) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigPlatformTypes_FEC_STATUS_TYPE. +func (E_OpenconfigPlatformTypes_FEC_STATUS_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigPlatformTypes_FEC_STATUS_TYPE_UNSET corresponds to the value UNSET of OpenconfigPlatformTypes_FEC_STATUS_TYPE + OpenconfigPlatformTypes_FEC_STATUS_TYPE_UNSET E_OpenconfigPlatformTypes_FEC_STATUS_TYPE = 0 + // OpenconfigPlatformTypes_FEC_STATUS_TYPE_FEC_STATUS_LOCKED corresponds to the value FEC_STATUS_LOCKED of OpenconfigPlatformTypes_FEC_STATUS_TYPE + OpenconfigPlatformTypes_FEC_STATUS_TYPE_FEC_STATUS_LOCKED E_OpenconfigPlatformTypes_FEC_STATUS_TYPE = 1 + // OpenconfigPlatformTypes_FEC_STATUS_TYPE_FEC_STATUS_UNLOCKED corresponds to the value FEC_STATUS_UNLOCKED of OpenconfigPlatformTypes_FEC_STATUS_TYPE + OpenconfigPlatformTypes_FEC_STATUS_TYPE_FEC_STATUS_UNLOCKED E_OpenconfigPlatformTypes_FEC_STATUS_TYPE = 2 +) + + +// E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT is a derived int64 type which is used to represent +// the enumerated node OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT. An additional value named +// OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT int64 + +// IsYANGGoEnum ensures that OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT implements the yang.GoEnum +// interface. This ensures that OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT. +func (E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_UNSET corresponds to the value UNSET of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_UNSET E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 0 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_BACKPLANE corresponds to the value BACKPLANE of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_BACKPLANE E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 1 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CHASSIS corresponds to the value CHASSIS of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CHASSIS E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 2 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CONTROLLER_CARD corresponds to the value CONTROLLER_CARD of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CONTROLLER_CARD E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 3 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CPU corresponds to the value CPU of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CPU E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 4 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FABRIC corresponds to the value FABRIC of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FABRIC E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 5 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FAN corresponds to the value FAN of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FAN E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 6 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FRU corresponds to the value FRU of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FRU E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 7 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_INTEGRATED_CIRCUIT corresponds to the value INTEGRATED_CIRCUIT of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_INTEGRATED_CIRCUIT E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 8 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_LINECARD corresponds to the value LINECARD of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_LINECARD E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 9 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_OPTICAL_CHANNEL corresponds to the value OPTICAL_CHANNEL of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_OPTICAL_CHANNEL E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 10 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_PORT corresponds to the value PORT of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_PORT E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 11 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_POWER_SUPPLY corresponds to the value POWER_SUPPLY of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_POWER_SUPPLY E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 12 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_SENSOR corresponds to the value SENSOR of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_SENSOR E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 13 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_STORAGE corresponds to the value STORAGE of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_STORAGE E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 14 + // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_TRANSCEIVER corresponds to the value TRANSCEIVER of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_TRANSCEIVER E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 15 +) + + +// E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT is a derived int64 type which is used to represent +// the enumerated node OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT. An additional value named +// OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT int64 + +// IsYANGGoEnum ensures that OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT implements the yang.GoEnum +// interface. This ensures that OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT. +func (E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_UNSET corresponds to the value UNSET of OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_UNSET E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 0 + // OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM corresponds to the value OPERATING_SYSTEM of OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 1 + // OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM_UPDATE corresponds to the value OPERATING_SYSTEM_UPDATE of OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT + OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM_UPDATE E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 2 +) + + +// E_OpenconfigPlatform_Components_Component_Transceiver_State_Present is a derived int64 type which is used to represent +// the enumerated node OpenconfigPlatform_Components_Component_Transceiver_State_Present. An additional value named +// OpenconfigPlatform_Components_Component_Transceiver_State_Present_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigPlatform_Components_Component_Transceiver_State_Present int64 + +// IsYANGGoEnum ensures that OpenconfigPlatform_Components_Component_Transceiver_State_Present implements the yang.GoEnum +// interface. This ensures that OpenconfigPlatform_Components_Component_Transceiver_State_Present can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigPlatform_Components_Component_Transceiver_State_Present) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigPlatform_Components_Component_Transceiver_State_Present. +func (E_OpenconfigPlatform_Components_Component_Transceiver_State_Present) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigPlatform_Components_Component_Transceiver_State_Present_UNSET corresponds to the value UNSET of OpenconfigPlatform_Components_Component_Transceiver_State_Present + OpenconfigPlatform_Components_Component_Transceiver_State_Present_UNSET E_OpenconfigPlatform_Components_Component_Transceiver_State_Present = 0 + // OpenconfigPlatform_Components_Component_Transceiver_State_Present_PRESENT corresponds to the value PRESENT of OpenconfigPlatform_Components_Component_Transceiver_State_Present + OpenconfigPlatform_Components_Component_Transceiver_State_Present_PRESENT E_OpenconfigPlatform_Components_Component_Transceiver_State_Present = 1 + // OpenconfigPlatform_Components_Component_Transceiver_State_Present_NOT_PRESENT corresponds to the value NOT_PRESENT of OpenconfigPlatform_Components_Component_Transceiver_State_Present + OpenconfigPlatform_Components_Component_Transceiver_State_Present_NOT_PRESENT E_OpenconfigPlatform_Components_Component_Transceiver_State_Present = 2 +) + + +// E_OpenconfigTerminalDevice_AdminStateType is a derived int64 type which is used to represent +// the enumerated node OpenconfigTerminalDevice_AdminStateType. An additional value named +// OpenconfigTerminalDevice_AdminStateType_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTerminalDevice_AdminStateType int64 + +// IsYANGGoEnum ensures that OpenconfigTerminalDevice_AdminStateType implements the yang.GoEnum +// interface. This ensures that OpenconfigTerminalDevice_AdminStateType can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTerminalDevice_AdminStateType) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTerminalDevice_AdminStateType. +func (E_OpenconfigTerminalDevice_AdminStateType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTerminalDevice_AdminStateType_UNSET corresponds to the value UNSET of OpenconfigTerminalDevice_AdminStateType + OpenconfigTerminalDevice_AdminStateType_UNSET E_OpenconfigTerminalDevice_AdminStateType = 0 + // OpenconfigTerminalDevice_AdminStateType_ENABLED corresponds to the value ENABLED of OpenconfigTerminalDevice_AdminStateType + OpenconfigTerminalDevice_AdminStateType_ENABLED E_OpenconfigTerminalDevice_AdminStateType = 1 + // OpenconfigTerminalDevice_AdminStateType_DISABLED corresponds to the value DISABLED of OpenconfigTerminalDevice_AdminStateType + OpenconfigTerminalDevice_AdminStateType_DISABLED E_OpenconfigTerminalDevice_AdminStateType = 2 + // OpenconfigTerminalDevice_AdminStateType_MAINT corresponds to the value MAINT of OpenconfigTerminalDevice_AdminStateType + OpenconfigTerminalDevice_AdminStateType_MAINT E_OpenconfigTerminalDevice_AdminStateType = 3 +) + + +// E_OpenconfigTerminalDevice_LoopbackModeType is a derived int64 type which is used to represent +// the enumerated node OpenconfigTerminalDevice_LoopbackModeType. An additional value named +// OpenconfigTerminalDevice_LoopbackModeType_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTerminalDevice_LoopbackModeType int64 + +// IsYANGGoEnum ensures that OpenconfigTerminalDevice_LoopbackModeType implements the yang.GoEnum +// interface. This ensures that OpenconfigTerminalDevice_LoopbackModeType can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTerminalDevice_LoopbackModeType) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTerminalDevice_LoopbackModeType. +func (E_OpenconfigTerminalDevice_LoopbackModeType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTerminalDevice_LoopbackModeType_UNSET corresponds to the value UNSET of OpenconfigTerminalDevice_LoopbackModeType + OpenconfigTerminalDevice_LoopbackModeType_UNSET E_OpenconfigTerminalDevice_LoopbackModeType = 0 + // OpenconfigTerminalDevice_LoopbackModeType_NONE corresponds to the value NONE of OpenconfigTerminalDevice_LoopbackModeType + OpenconfigTerminalDevice_LoopbackModeType_NONE E_OpenconfigTerminalDevice_LoopbackModeType = 1 + // OpenconfigTerminalDevice_LoopbackModeType_FACILITY corresponds to the value FACILITY of OpenconfigTerminalDevice_LoopbackModeType + OpenconfigTerminalDevice_LoopbackModeType_FACILITY E_OpenconfigTerminalDevice_LoopbackModeType = 2 + // OpenconfigTerminalDevice_LoopbackModeType_TERMINAL corresponds to the value TERMINAL of OpenconfigTerminalDevice_LoopbackModeType + OpenconfigTerminalDevice_LoopbackModeType_TERMINAL E_OpenconfigTerminalDevice_LoopbackModeType = 3 +) + + +// E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls is a derived int64 type which is used to represent +// the enumerated node OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls. An additional value named +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls int64 + +// IsYANGGoEnum ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls implements the yang.GoEnum +// interface. This ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls. +func (E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls_UNSET corresponds to the value UNSET of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls_UNSET E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls = 0 + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls_NONE corresponds to the value NONE of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls_NONE E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls = 1 + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls_LASER_SHUTDOWN corresponds to the value LASER_SHUTDOWN of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls_LASER_SHUTDOWN E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls = 2 + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls_ETHERNET corresponds to the value ETHERNET of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls_ETHERNET E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls = 3 +) + + +// E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType is a derived int64 type which is used to represent +// the enumerated node OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType. An additional value named +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType int64 + +// IsYANGGoEnum ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType implements the yang.GoEnum +// interface. This ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType. +func (E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType_UNSET corresponds to the value UNSET of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType_UNSET E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType = 0 + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType_LOGICAL_CHANNEL corresponds to the value LOGICAL_CHANNEL of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType_LOGICAL_CHANNEL E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType = 1 + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType_OPTICAL_CHANNEL corresponds to the value OPTICAL_CHANNEL of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType_OPTICAL_CHANNEL E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType = 2 +) + + +// E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState is a derived int64 type which is used to represent +// the enumerated node OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState. An additional value named +// OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState int64 + +// IsYANGGoEnum ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState implements the yang.GoEnum +// interface. This ensures that OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState. +func (E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState_UNSET corresponds to the value UNSET of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState_UNSET E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState = 0 + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState_UP corresponds to the value UP of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState_UP E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState = 1 + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState_DOWN corresponds to the value DOWN of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState_DOWN E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState = 2 + // OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState_TESTING corresponds to the value TESTING of OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState + OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState_TESTING E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState = 3 +) + + +// E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE is a derived int64 type which is used to represent +// the enumerated node OpenconfigTransportTypes_ETHERNET_PMD_TYPE. An additional value named +// OpenconfigTransportTypes_ETHERNET_PMD_TYPE_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE int64 + +// IsYANGGoEnum ensures that OpenconfigTransportTypes_ETHERNET_PMD_TYPE implements the yang.GoEnum +// interface. This ensures that OpenconfigTransportTypes_ETHERNET_PMD_TYPE can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTransportTypes_ETHERNET_PMD_TYPE. +func (E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_UNSET corresponds to the value UNSET of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_UNSET E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 0 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CLR4 corresponds to the value ETH_100GBASE_CLR4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CLR4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 1 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CR4 corresponds to the value ETH_100GBASE_CR4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CR4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 2 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CWDM4 corresponds to the value ETH_100GBASE_CWDM4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_CWDM4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 3 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_ER4 corresponds to the value ETH_100GBASE_ER4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_ER4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 4 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_LR4 corresponds to the value ETH_100GBASE_LR4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_LR4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 5 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_PSM4 corresponds to the value ETH_100GBASE_PSM4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_PSM4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 6 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_SR10 corresponds to the value ETH_100GBASE_SR10 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_SR10 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 7 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_SR4 corresponds to the value ETH_100GBASE_SR4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100GBASE_SR4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 8 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100G_ACC corresponds to the value ETH_100G_ACC of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100G_ACC E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 9 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100G_AOC corresponds to the value ETH_100G_AOC of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_100G_AOC E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 10 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_ER corresponds to the value ETH_10GBASE_ER of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_ER E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 11 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_LR corresponds to the value ETH_10GBASE_LR of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_LR E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 12 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_LRM corresponds to the value ETH_10GBASE_LRM of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_LRM E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 13 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_SR corresponds to the value ETH_10GBASE_SR of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_SR E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 14 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_ZR corresponds to the value ETH_10GBASE_ZR of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_10GBASE_ZR E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 15 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_CR4 corresponds to the value ETH_40GBASE_CR4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_CR4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 16 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_ER4 corresponds to the value ETH_40GBASE_ER4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_ER4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 17 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_LR4 corresponds to the value ETH_40GBASE_LR4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_LR4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 18 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_PSM4 corresponds to the value ETH_40GBASE_PSM4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_PSM4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 19 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_SR4 corresponds to the value ETH_40GBASE_SR4 of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_40GBASE_SR4 E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 20 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_4X10GBASE_LR corresponds to the value ETH_4X10GBASE_LR of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_4X10GBASE_LR E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 21 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_4X10GBASE_SR corresponds to the value ETH_4X10GBASE_SR of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_4X10GBASE_SR E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 22 + // OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_UNDEFINED corresponds to the value ETH_UNDEFINED of OpenconfigTransportTypes_ETHERNET_PMD_TYPE + OpenconfigTransportTypes_ETHERNET_PMD_TYPE_ETH_UNDEFINED E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE = 23 +) + + +// E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE is a derived int64 type which is used to represent +// the enumerated node OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE. An additional value named +// OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE int64 + +// IsYANGGoEnum ensures that OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE implements the yang.GoEnum +// interface. This ensures that OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE. +func (E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE_UNSET corresponds to the value UNSET of OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE + OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE_UNSET E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE = 0 + // OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE_LC_CONNECTOR corresponds to the value LC_CONNECTOR of OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE + OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE_LC_CONNECTOR E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE = 1 + // OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE_MPO_CONNECTOR corresponds to the value MPO_CONNECTOR of OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE + OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE_MPO_CONNECTOR E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE = 2 + // OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE_SC_CONNECTOR corresponds to the value SC_CONNECTOR of OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE + OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE_SC_CONNECTOR E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE = 3 +) + + +// E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL is a derived int64 type which is used to represent +// the enumerated node OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL. An additional value named +// OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL int64 + +// IsYANGGoEnum ensures that OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL implements the yang.GoEnum +// interface. This ensures that OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL. +func (E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_UNSET corresponds to the value UNSET of OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL + OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_UNSET E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL = 0 + // OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_AMP corresponds to the value AMP of OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL + OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_AMP E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL = 1 + // OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_BMP corresponds to the value BMP of OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL + OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_BMP E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL = 2 + // OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_CBR corresponds to the value CBR of OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL + OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_CBR E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL = 3 + // OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_GFP_F corresponds to the value GFP_F of OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL + OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_GFP_F E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL = 4 + // OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_GFP_T corresponds to the value GFP_T of OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL + OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_GFP_T E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL = 5 + // OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_GMP corresponds to the value GMP of OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL + OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL_GMP E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL = 6 +) + + +// E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE is a derived int64 type which is used to represent +// the enumerated node OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE. An additional value named +// OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE int64 + +// IsYANGGoEnum ensures that OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE implements the yang.GoEnum +// interface. This ensures that OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE. +func (E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_UNSET corresponds to the value UNSET of OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE + OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_UNSET E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE = 0 + // OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_PROT_ETHERNET corresponds to the value PROT_ETHERNET of OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE + OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_PROT_ETHERNET E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE = 1 + // OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_PROT_OTN corresponds to the value PROT_OTN of OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE + OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE_PROT_OTN E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE = 2 +) + + +// E_OpenconfigTransportTypes_OTN_APPLICATION_CODE is a derived int64 type which is used to represent +// the enumerated node OpenconfigTransportTypes_OTN_APPLICATION_CODE. An additional value named +// OpenconfigTransportTypes_OTN_APPLICATION_CODE_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTransportTypes_OTN_APPLICATION_CODE int64 + +// IsYANGGoEnum ensures that OpenconfigTransportTypes_OTN_APPLICATION_CODE implements the yang.GoEnum +// interface. This ensures that OpenconfigTransportTypes_OTN_APPLICATION_CODE can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTransportTypes_OTN_APPLICATION_CODE) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTransportTypes_OTN_APPLICATION_CODE. +func (E_OpenconfigTransportTypes_OTN_APPLICATION_CODE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTransportTypes_OTN_APPLICATION_CODE_UNSET corresponds to the value UNSET of OpenconfigTransportTypes_OTN_APPLICATION_CODE + OpenconfigTransportTypes_OTN_APPLICATION_CODE_UNSET E_OpenconfigTransportTypes_OTN_APPLICATION_CODE = 0 + // OpenconfigTransportTypes_OTN_APPLICATION_CODE_OTN_UNDEFINED corresponds to the value OTN_UNDEFINED of OpenconfigTransportTypes_OTN_APPLICATION_CODE + OpenconfigTransportTypes_OTN_APPLICATION_CODE_OTN_UNDEFINED E_OpenconfigTransportTypes_OTN_APPLICATION_CODE = 1 + // OpenconfigTransportTypes_OTN_APPLICATION_CODE_P1L1_2D1 corresponds to the value P1L1_2D1 of OpenconfigTransportTypes_OTN_APPLICATION_CODE + OpenconfigTransportTypes_OTN_APPLICATION_CODE_P1L1_2D1 E_OpenconfigTransportTypes_OTN_APPLICATION_CODE = 2 + // OpenconfigTransportTypes_OTN_APPLICATION_CODE_P1L1_2D2 corresponds to the value P1L1_2D2 of OpenconfigTransportTypes_OTN_APPLICATION_CODE + OpenconfigTransportTypes_OTN_APPLICATION_CODE_P1L1_2D2 E_OpenconfigTransportTypes_OTN_APPLICATION_CODE = 3 + // OpenconfigTransportTypes_OTN_APPLICATION_CODE_P1S1_2D2 corresponds to the value P1S1_2D2 of OpenconfigTransportTypes_OTN_APPLICATION_CODE + OpenconfigTransportTypes_OTN_APPLICATION_CODE_P1S1_2D2 E_OpenconfigTransportTypes_OTN_APPLICATION_CODE = 4 +) + + +// E_OpenconfigTransportTypes_SONET_APPLICATION_CODE is a derived int64 type which is used to represent +// the enumerated node OpenconfigTransportTypes_SONET_APPLICATION_CODE. An additional value named +// OpenconfigTransportTypes_SONET_APPLICATION_CODE_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTransportTypes_SONET_APPLICATION_CODE int64 + +// IsYANGGoEnum ensures that OpenconfigTransportTypes_SONET_APPLICATION_CODE implements the yang.GoEnum +// interface. This ensures that OpenconfigTransportTypes_SONET_APPLICATION_CODE can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTransportTypes_SONET_APPLICATION_CODE) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTransportTypes_SONET_APPLICATION_CODE. +func (E_OpenconfigTransportTypes_SONET_APPLICATION_CODE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTransportTypes_SONET_APPLICATION_CODE_UNSET corresponds to the value UNSET of OpenconfigTransportTypes_SONET_APPLICATION_CODE + OpenconfigTransportTypes_SONET_APPLICATION_CODE_UNSET E_OpenconfigTransportTypes_SONET_APPLICATION_CODE = 0 + // OpenconfigTransportTypes_SONET_APPLICATION_CODE_SONET_UNDEFINED corresponds to the value SONET_UNDEFINED of OpenconfigTransportTypes_SONET_APPLICATION_CODE + OpenconfigTransportTypes_SONET_APPLICATION_CODE_SONET_UNDEFINED E_OpenconfigTransportTypes_SONET_APPLICATION_CODE = 1 + // OpenconfigTransportTypes_SONET_APPLICATION_CODE_VSR2000_3R2 corresponds to the value VSR2000_3R2 of OpenconfigTransportTypes_SONET_APPLICATION_CODE + OpenconfigTransportTypes_SONET_APPLICATION_CODE_VSR2000_3R2 E_OpenconfigTransportTypes_SONET_APPLICATION_CODE = 2 + // OpenconfigTransportTypes_SONET_APPLICATION_CODE_VSR2000_3R3 corresponds to the value VSR2000_3R3 of OpenconfigTransportTypes_SONET_APPLICATION_CODE + OpenconfigTransportTypes_SONET_APPLICATION_CODE_VSR2000_3R3 E_OpenconfigTransportTypes_SONET_APPLICATION_CODE = 3 + // OpenconfigTransportTypes_SONET_APPLICATION_CODE_VSR2000_3R5 corresponds to the value VSR2000_3R5 of OpenconfigTransportTypes_SONET_APPLICATION_CODE + OpenconfigTransportTypes_SONET_APPLICATION_CODE_VSR2000_3R5 E_OpenconfigTransportTypes_SONET_APPLICATION_CODE = 4 +) + + +// E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE is a derived int64 type which is used to represent +// the enumerated node OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE. An additional value named +// OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE int64 + +// IsYANGGoEnum ensures that OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE implements the yang.GoEnum +// interface. This ensures that OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE. +func (E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_UNSET corresponds to the value UNSET of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_UNSET E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 0 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP corresponds to the value CFP of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 1 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP2 corresponds to the value CFP2 of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP2 E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 2 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP2_ACO corresponds to the value CFP2_ACO of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP2_ACO E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 3 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP4 corresponds to the value CFP4 of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CFP4 E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 4 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CPAK corresponds to the value CPAK of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_CPAK E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 5 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_NON_PLUGGABLE corresponds to the value NON_PLUGGABLE of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_NON_PLUGGABLE E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 6 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_OTHER corresponds to the value OTHER of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_OTHER E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 7 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP corresponds to the value QSFP of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 8 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP28 corresponds to the value QSFP28 of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP28 E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 9 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP_PLUS corresponds to the value QSFP_PLUS of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_QSFP_PLUS E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 10 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP corresponds to the value SFP of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 11 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP_PLUS corresponds to the value SFP_PLUS of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_SFP_PLUS E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 12 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_X2 corresponds to the value X2 of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_X2 E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 13 + // OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_XFP corresponds to the value XFP of OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE + OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE_XFP E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE = 14 +) + + +// E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE is a derived int64 type which is used to represent +// the enumerated node OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE. An additional value named +// OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE int64 + +// IsYANGGoEnum ensures that OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE implements the yang.GoEnum +// interface. This ensures that OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE. +func (E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_UNSET corresponds to the value UNSET of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_UNSET E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 0 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_100GE corresponds to the value PROT_100GE of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_100GE E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 1 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_100G_MLG corresponds to the value PROT_100G_MLG of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_100G_MLG E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 2 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_10GE_LAN corresponds to the value PROT_10GE_LAN of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_10GE_LAN E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 3 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_10GE_WAN corresponds to the value PROT_10GE_WAN of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_10GE_WAN E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 4 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_1GE corresponds to the value PROT_1GE of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_1GE E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 5 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_40GE corresponds to the value PROT_40GE of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_40GE E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 6 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC192 corresponds to the value PROT_OC192 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC192 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 7 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC48 corresponds to the value PROT_OC48 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC48 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 8 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC768 corresponds to the value PROT_OC768 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OC768 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 9 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU2 corresponds to the value PROT_ODU2 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU2 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 10 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU2E corresponds to the value PROT_ODU2E of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU2E E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 11 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU3 corresponds to the value PROT_ODU3 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU3 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 12 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU4 corresponds to the value PROT_ODU4 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODU4 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 13 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODUCN corresponds to the value PROT_ODUCN of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_ODUCN E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 14 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU1E corresponds to the value PROT_OTU1E of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU1E E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 15 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU2 corresponds to the value PROT_OTU2 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU2 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 16 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU2E corresponds to the value PROT_OTU2E of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU2E E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 17 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU3 corresponds to the value PROT_OTU3 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU3 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 18 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU4 corresponds to the value PROT_OTU4 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTU4 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 19 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTUCN corresponds to the value PROT_OTUCN of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_OTUCN E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 20 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM16 corresponds to the value PROT_STM16 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM16 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 21 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM256 corresponds to the value PROT_STM256 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM256 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 22 + // OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM64 corresponds to the value PROT_STM64 of OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE + OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE_PROT_STM64 E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE = 23 +) + + +// E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE is a derived int64 type which is used to represent +// the enumerated node OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE. An additional value named +// OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE int64 + +// IsYANGGoEnum ensures that OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE implements the yang.GoEnum +// interface. This ensures that OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE. +func (E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_UNSET corresponds to the value UNSET of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_UNSET E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 0 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1000G corresponds to the value TRIB_RATE_1000G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1000G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 1 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_100G corresponds to the value TRIB_RATE_100G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_100G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 2 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_10G corresponds to the value TRIB_RATE_10G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_10G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 3 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1100G corresponds to the value TRIB_RATE_1100G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1100G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 4 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_150G corresponds to the value TRIB_RATE_150G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_150G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 5 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1G corresponds to the value TRIB_RATE_1G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_1G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 6 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2_5G corresponds to the value TRIB_RATE_2_5G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_2_5G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 7 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_200G corresponds to the value TRIB_RATE_200G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_200G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 8 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_250G corresponds to the value TRIB_RATE_250G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_250G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 9 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_300G corresponds to the value TRIB_RATE_300G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_300G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 10 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_400G corresponds to the value TRIB_RATE_400G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_400G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 11 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_40G corresponds to the value TRIB_RATE_40G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_40G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 12 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_500G corresponds to the value TRIB_RATE_500G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_500G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 13 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_600G corresponds to the value TRIB_RATE_600G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_600G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 14 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_700G corresponds to the value TRIB_RATE_700G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_700G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 15 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_800G corresponds to the value TRIB_RATE_800G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_800G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 16 + // OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_900G corresponds to the value TRIB_RATE_900G of OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE + OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE_TRIB_RATE_900G E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE = 17 +) + + +// E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY is a derived int64 type which is used to represent +// the enumerated node OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY. An additional value named +// OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY int64 + +// IsYANGGoEnum ensures that OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY implements the yang.GoEnum +// interface. This ensures that OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY. +func (E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +const ( + // OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY_UNSET corresponds to the value UNSET of OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY + OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY_UNSET E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY = 0 + // OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_1_25G corresponds to the value TRIB_SLOT_1_25G of OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY + OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_1_25G E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY = 1 + // OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_2_5G corresponds to the value TRIB_SLOT_2_5G of OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY + OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_2_5G E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY = 2 + // OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_5G corresponds to the value TRIB_SLOT_5G of OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY + OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY_TRIB_SLOT_5G E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY = 3 +) + + +// ΛEnum is a map, keyed by the name of the type defined for each enum in the +// generated Go code, which provides a mapping between the constant int64 value +// of each value of the enumeration, and the string that is used to represent it +// in the YANG schema. The map is named ΛEnum in order to avoid clash with any +// valid YANG identifier. +var ΛEnum = map[string]map[int64]ygot.EnumDefinition{ + "E_IETFInterfaces_InterfaceType": { + }, + "E_IETFInterfaces_InterfacesState_Interface_AdminStatus": { + 2: {Name: "up"}, + 3: {Name: "down"}, + 4: {Name: "testing"}, + }, + "E_IETFInterfaces_InterfacesState_Interface_OperStatus": { + 2: {Name: "up"}, + 3: {Name: "down"}, + 4: {Name: "testing"}, + 5: {Name: "unknown"}, + 6: {Name: "dormant"}, + 7: {Name: "not-present"}, + 8: {Name: "lower-layer-down"}, + }, + "E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY": { + 1: {Name: "CRITICAL", DefiningModule: "openconfig-alarm-types"}, + 2: {Name: "MAJOR", DefiningModule: "openconfig-alarm-types"}, + 3: {Name: "MINOR", DefiningModule: "openconfig-alarm-types"}, + 4: {Name: "UNKNOWN", DefiningModule: "openconfig-alarm-types"}, + 5: {Name: "WARNING", DefiningModule: "openconfig-alarm-types"}, + }, + "E_OpenconfigIfEthernet_ETHERNET_SPEED": { + 1: {Name: "SPEED_100GB", DefiningModule: "openconfig-if-ethernet"}, + 2: {Name: "SPEED_100MB", DefiningModule: "openconfig-if-ethernet"}, + 3: {Name: "SPEED_10GB", DefiningModule: "openconfig-if-ethernet"}, + 4: {Name: "SPEED_10MB", DefiningModule: "openconfig-if-ethernet"}, + 5: {Name: "SPEED_1GB", DefiningModule: "openconfig-if-ethernet"}, + 6: {Name: "SPEED_2500MB", DefiningModule: "openconfig-if-ethernet"}, + 7: {Name: "SPEED_25GB", DefiningModule: "openconfig-if-ethernet"}, + 8: {Name: "SPEED_40GB", DefiningModule: "openconfig-if-ethernet"}, + 9: {Name: "SPEED_50GB", DefiningModule: "openconfig-if-ethernet"}, + 10: {Name: "SPEED_5GB", DefiningModule: "openconfig-if-ethernet"}, + 11: {Name: "SPEED_UNKNOWN", DefiningModule: "openconfig-if-ethernet"}, + }, + "E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode": { + 1: {Name: "FULL"}, + 2: {Name: "HALF"}, + }, + "E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode": { + 1: {Name: "FULL"}, + 2: {Name: "HALF"}, + }, + "E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus": { + 1: {Name: "UP"}, + 2: {Name: "DOWN"}, + 3: {Name: "TESTING"}, + }, + "E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus": { + 2: {Name: "UP"}, + 3: {Name: "DOWN"}, + 4: {Name: "TESTING"}, + 5: {Name: "UNKNOWN"}, + 6: {Name: "DORMANT"}, + 7: {Name: "NOT_PRESENT"}, + 8: {Name: "LOWER_LAYER_DOWN"}, + }, + "E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY": { + 1: {Name: "C_VLAN", DefiningModule: "openconfig-lldp-types"}, + 2: {Name: "DOCSIS_CABLE_DEVICE", DefiningModule: "openconfig-lldp-types"}, + 3: {Name: "MAC_BRIDGE", DefiningModule: "openconfig-lldp-types"}, + 4: {Name: "OTHER", DefiningModule: "openconfig-lldp-types"}, + 5: {Name: "REPEATER", DefiningModule: "openconfig-lldp-types"}, + 6: {Name: "ROUTER", DefiningModule: "openconfig-lldp-types"}, + 7: {Name: "STATION_ONLY", DefiningModule: "openconfig-lldp-types"}, + 8: {Name: "S_VLAN", DefiningModule: "openconfig-lldp-types"}, + 9: {Name: "TELEPHONE", DefiningModule: "openconfig-lldp-types"}, + 10: {Name: "TWO_PORT_MAC_RELAY", DefiningModule: "openconfig-lldp-types"}, + 11: {Name: "WLAN_ACCESS_POINT", DefiningModule: "openconfig-lldp-types"}, + }, + "E_OpenconfigLldpTypes_LLDP_TLV": { + 1: {Name: "CHASSIS_ID", DefiningModule: "openconfig-lldp-types"}, + 2: {Name: "MANAGEMENT_ADDRESS", DefiningModule: "openconfig-lldp-types"}, + 3: {Name: "PORT_DESCRIPTION", DefiningModule: "openconfig-lldp-types"}, + 4: {Name: "PORT_ID", DefiningModule: "openconfig-lldp-types"}, + 5: {Name: "SYSTEM_CAPABILITIES", DefiningModule: "openconfig-lldp-types"}, + 6: {Name: "SYSTEM_DESCRIPTION", DefiningModule: "openconfig-lldp-types"}, + 7: {Name: "SYSTEM_NAME", DefiningModule: "openconfig-lldp-types"}, + }, + "E_OpenconfigLldp_ChassisIdType": { + 1: {Name: "CHASSIS_COMPONENT"}, + 2: {Name: "INTERFACE_ALIAS"}, + 3: {Name: "PORT_COMPONENT"}, + 4: {Name: "MAC_ADDRESS"}, + 5: {Name: "NETWORK_ADDRESS"}, + 6: {Name: "INTERFACE_NAME"}, + 7: {Name: "LOCAL"}, + }, + "E_OpenconfigLldp_PortIdType": { + 1: {Name: "INTERFACE_ALIAS"}, + 2: {Name: "PORT_COMPONENT"}, + 3: {Name: "MAC_ADDRESS"}, + 4: {Name: "NETWORK_ADDRESS"}, + 5: {Name: "INTERFACE_NAME"}, + 6: {Name: "AGENT_CIRCUIT_ID"}, + 7: {Name: "LOCAL"}, + }, + "E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS": { + 1: {Name: "ACTIVE", DefiningModule: "openconfig-platform-types"}, + 2: {Name: "DISABLED", DefiningModule: "openconfig-platform-types"}, + 3: {Name: "INACTIVE", DefiningModule: "openconfig-platform-types"}, + }, + "E_OpenconfigPlatformTypes_FEC_MODE_TYPE": { + 1: {Name: "FEC_AUTO", DefiningModule: "openconfig-platform-types"}, + 2: {Name: "FEC_DISABLED", DefiningModule: "openconfig-platform-types"}, + 3: {Name: "FEC_ENABLED", DefiningModule: "openconfig-platform-types"}, + }, + "E_OpenconfigPlatformTypes_FEC_STATUS_TYPE": { + 1: {Name: "FEC_STATUS_LOCKED", DefiningModule: "openconfig-platform-types"}, + 2: {Name: "FEC_STATUS_UNLOCKED", DefiningModule: "openconfig-platform-types"}, + }, + "E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT": { + 1: {Name: "BACKPLANE", DefiningModule: "openconfig-platform-types"}, + 2: {Name: "CHASSIS", DefiningModule: "openconfig-platform-types"}, + 3: {Name: "CONTROLLER_CARD", DefiningModule: "openconfig-platform-types"}, + 4: {Name: "CPU", DefiningModule: "openconfig-platform-types"}, + 5: {Name: "FABRIC", DefiningModule: "openconfig-platform-types"}, + 6: {Name: "FAN", DefiningModule: "openconfig-platform-types"}, + 7: {Name: "FRU", DefiningModule: "openconfig-platform-types"}, + 8: {Name: "INTEGRATED_CIRCUIT", DefiningModule: "openconfig-platform-types"}, + 9: {Name: "LINECARD", DefiningModule: "openconfig-platform-types"}, + 10: {Name: "OPTICAL_CHANNEL", DefiningModule: "openconfig-transport-types"}, + 11: {Name: "PORT", DefiningModule: "openconfig-platform-types"}, + 12: {Name: "POWER_SUPPLY", DefiningModule: "openconfig-platform-types"}, + 13: {Name: "SENSOR", DefiningModule: "openconfig-platform-types"}, + 14: {Name: "STORAGE", DefiningModule: "openconfig-platform-types"}, + 15: {Name: "TRANSCEIVER", DefiningModule: "openconfig-platform-types"}, + }, + "E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT": { + 1: {Name: "OPERATING_SYSTEM", DefiningModule: "openconfig-platform-types"}, + 2: {Name: "OPERATING_SYSTEM_UPDATE", DefiningModule: "openconfig-platform-types"}, + }, + "E_OpenconfigPlatform_Components_Component_Transceiver_State_Present": { + 1: {Name: "PRESENT"}, + 2: {Name: "NOT_PRESENT"}, + }, + "E_OpenconfigTerminalDevice_AdminStateType": { + 1: {Name: "ENABLED"}, + 2: {Name: "DISABLED"}, + 3: {Name: "MAINT"}, + }, + "E_OpenconfigTerminalDevice_LoopbackModeType": { + 1: {Name: "NONE"}, + 2: {Name: "FACILITY"}, + 3: {Name: "TERMINAL"}, + }, + "E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls": { + 1: {Name: "NONE"}, + 2: {Name: "LASER_SHUTDOWN"}, + 3: {Name: "ETHERNET"}, + }, + "E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType": { + 1: {Name: "LOGICAL_CHANNEL"}, + 2: {Name: "OPTICAL_CHANNEL"}, + }, + "E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState": { + 1: {Name: "UP"}, + 2: {Name: "DOWN"}, + 3: {Name: "TESTING"}, + }, + "E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE": { + 1: {Name: "ETH_100GBASE_CLR4", DefiningModule: "openconfig-transport-types"}, + 2: {Name: "ETH_100GBASE_CR4", DefiningModule: "openconfig-transport-types"}, + 3: {Name: "ETH_100GBASE_CWDM4", DefiningModule: "openconfig-transport-types"}, + 4: {Name: "ETH_100GBASE_ER4", DefiningModule: "openconfig-transport-types"}, + 5: {Name: "ETH_100GBASE_LR4", DefiningModule: "openconfig-transport-types"}, + 6: {Name: "ETH_100GBASE_PSM4", DefiningModule: "openconfig-transport-types"}, + 7: {Name: "ETH_100GBASE_SR10", DefiningModule: "openconfig-transport-types"}, + 8: {Name: "ETH_100GBASE_SR4", DefiningModule: "openconfig-transport-types"}, + 9: {Name: "ETH_100G_ACC", DefiningModule: "openconfig-transport-types"}, + 10: {Name: "ETH_100G_AOC", DefiningModule: "openconfig-transport-types"}, + 11: {Name: "ETH_10GBASE_ER", DefiningModule: "openconfig-transport-types"}, + 12: {Name: "ETH_10GBASE_LR", DefiningModule: "openconfig-transport-types"}, + 13: {Name: "ETH_10GBASE_LRM", DefiningModule: "openconfig-transport-types"}, + 14: {Name: "ETH_10GBASE_SR", DefiningModule: "openconfig-transport-types"}, + 15: {Name: "ETH_10GBASE_ZR", DefiningModule: "openconfig-transport-types"}, + 16: {Name: "ETH_40GBASE_CR4", DefiningModule: "openconfig-transport-types"}, + 17: {Name: "ETH_40GBASE_ER4", DefiningModule: "openconfig-transport-types"}, + 18: {Name: "ETH_40GBASE_LR4", DefiningModule: "openconfig-transport-types"}, + 19: {Name: "ETH_40GBASE_PSM4", DefiningModule: "openconfig-transport-types"}, + 20: {Name: "ETH_40GBASE_SR4", DefiningModule: "openconfig-transport-types"}, + 21: {Name: "ETH_4X10GBASE_LR", DefiningModule: "openconfig-transport-types"}, + 22: {Name: "ETH_4X10GBASE_SR", DefiningModule: "openconfig-transport-types"}, + 23: {Name: "ETH_UNDEFINED", DefiningModule: "openconfig-transport-types"}, + }, + "E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE": { + 1: {Name: "LC_CONNECTOR", DefiningModule: "openconfig-transport-types"}, + 2: {Name: "MPO_CONNECTOR", DefiningModule: "openconfig-transport-types"}, + 3: {Name: "SC_CONNECTOR", DefiningModule: "openconfig-transport-types"}, + }, + "E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL": { + 1: {Name: "AMP", DefiningModule: "openconfig-transport-types"}, + 2: {Name: "BMP", DefiningModule: "openconfig-transport-types"}, + 3: {Name: "CBR", DefiningModule: "openconfig-transport-types"}, + 4: {Name: "GFP_F", DefiningModule: "openconfig-transport-types"}, + 5: {Name: "GFP_T", DefiningModule: "openconfig-transport-types"}, + 6: {Name: "GMP", DefiningModule: "openconfig-transport-types"}, + }, + "E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE": { + 1: {Name: "PROT_ETHERNET", DefiningModule: "openconfig-transport-types"}, + 2: {Name: "PROT_OTN", DefiningModule: "openconfig-transport-types"}, + }, + "E_OpenconfigTransportTypes_OTN_APPLICATION_CODE": { + 1: {Name: "OTN_UNDEFINED", DefiningModule: "openconfig-transport-types"}, + 2: {Name: "P1L1_2D1", DefiningModule: "openconfig-transport-types"}, + 3: {Name: "P1L1_2D2", DefiningModule: "openconfig-transport-types"}, + 4: {Name: "P1S1_2D2", DefiningModule: "openconfig-transport-types"}, + }, + "E_OpenconfigTransportTypes_SONET_APPLICATION_CODE": { + 1: {Name: "SONET_UNDEFINED", DefiningModule: "openconfig-transport-types"}, + 2: {Name: "VSR2000_3R2", DefiningModule: "openconfig-transport-types"}, + 3: {Name: "VSR2000_3R3", DefiningModule: "openconfig-transport-types"}, + 4: {Name: "VSR2000_3R5", DefiningModule: "openconfig-transport-types"}, + }, + "E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE": { + 1: {Name: "CFP", DefiningModule: "openconfig-transport-types"}, + 2: {Name: "CFP2", DefiningModule: "openconfig-transport-types"}, + 3: {Name: "CFP2_ACO", DefiningModule: "openconfig-transport-types"}, + 4: {Name: "CFP4", DefiningModule: "openconfig-transport-types"}, + 5: {Name: "CPAK", DefiningModule: "openconfig-transport-types"}, + 6: {Name: "NON_PLUGGABLE", DefiningModule: "openconfig-transport-types"}, + 7: {Name: "OTHER", DefiningModule: "openconfig-transport-types"}, + 8: {Name: "QSFP", DefiningModule: "openconfig-transport-types"}, + 9: {Name: "QSFP28", DefiningModule: "openconfig-transport-types"}, + 10: {Name: "QSFP_PLUS", DefiningModule: "openconfig-transport-types"}, + 11: {Name: "SFP", DefiningModule: "openconfig-transport-types"}, + 12: {Name: "SFP_PLUS", DefiningModule: "openconfig-transport-types"}, + 13: {Name: "X2", DefiningModule: "openconfig-transport-types"}, + 14: {Name: "XFP", DefiningModule: "openconfig-transport-types"}, + }, + "E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE": { + 1: {Name: "PROT_100GE", DefiningModule: "openconfig-transport-types"}, + 2: {Name: "PROT_100G_MLG", DefiningModule: "openconfig-transport-types"}, + 3: {Name: "PROT_10GE_LAN", DefiningModule: "openconfig-transport-types"}, + 4: {Name: "PROT_10GE_WAN", DefiningModule: "openconfig-transport-types"}, + 5: {Name: "PROT_1GE", DefiningModule: "openconfig-transport-types"}, + 6: {Name: "PROT_40GE", DefiningModule: "openconfig-transport-types"}, + 7: {Name: "PROT_OC192", DefiningModule: "openconfig-transport-types"}, + 8: {Name: "PROT_OC48", DefiningModule: "openconfig-transport-types"}, + 9: {Name: "PROT_OC768", DefiningModule: "openconfig-transport-types"}, + 10: {Name: "PROT_ODU2", DefiningModule: "openconfig-transport-types"}, + 11: {Name: "PROT_ODU2E", DefiningModule: "openconfig-transport-types"}, + 12: {Name: "PROT_ODU3", DefiningModule: "openconfig-transport-types"}, + 13: {Name: "PROT_ODU4", DefiningModule: "openconfig-transport-types"}, + 14: {Name: "PROT_ODUCN", DefiningModule: "openconfig-transport-types"}, + 15: {Name: "PROT_OTU1E", DefiningModule: "openconfig-transport-types"}, + 16: {Name: "PROT_OTU2", DefiningModule: "openconfig-transport-types"}, + 17: {Name: "PROT_OTU2E", DefiningModule: "openconfig-transport-types"}, + 18: {Name: "PROT_OTU3", DefiningModule: "openconfig-transport-types"}, + 19: {Name: "PROT_OTU4", DefiningModule: "openconfig-transport-types"}, + 20: {Name: "PROT_OTUCN", DefiningModule: "openconfig-transport-types"}, + 21: {Name: "PROT_STM16", DefiningModule: "openconfig-transport-types"}, + 22: {Name: "PROT_STM256", DefiningModule: "openconfig-transport-types"}, + 23: {Name: "PROT_STM64", DefiningModule: "openconfig-transport-types"}, + }, + "E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE": { + 1: {Name: "TRIB_RATE_1000G", DefiningModule: "openconfig-transport-types"}, + 2: {Name: "TRIB_RATE_100G", DefiningModule: "openconfig-transport-types"}, + 3: {Name: "TRIB_RATE_10G", DefiningModule: "openconfig-transport-types"}, + 4: {Name: "TRIB_RATE_1100G", DefiningModule: "openconfig-transport-types"}, + 5: {Name: "TRIB_RATE_150G", DefiningModule: "openconfig-transport-types"}, + 6: {Name: "TRIB_RATE_1G", DefiningModule: "openconfig-transport-types"}, + 7: {Name: "TRIB_RATE_2.5G", DefiningModule: "openconfig-transport-types"}, + 8: {Name: "TRIB_RATE_200G", DefiningModule: "openconfig-transport-types"}, + 9: {Name: "TRIB_RATE_250G", DefiningModule: "openconfig-transport-types"}, + 10: {Name: "TRIB_RATE_300G", DefiningModule: "openconfig-transport-types"}, + 11: {Name: "TRIB_RATE_400G", DefiningModule: "openconfig-transport-types"}, + 12: {Name: "TRIB_RATE_40G", DefiningModule: "openconfig-transport-types"}, + 13: {Name: "TRIB_RATE_500G", DefiningModule: "openconfig-transport-types"}, + 14: {Name: "TRIB_RATE_600G", DefiningModule: "openconfig-transport-types"}, + 15: {Name: "TRIB_RATE_700G", DefiningModule: "openconfig-transport-types"}, + 16: {Name: "TRIB_RATE_800G", DefiningModule: "openconfig-transport-types"}, + 17: {Name: "TRIB_RATE_900G", DefiningModule: "openconfig-transport-types"}, + }, + "E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY": { + 1: {Name: "TRIB_SLOT_1.25G", DefiningModule: "openconfig-transport-types"}, + 2: {Name: "TRIB_SLOT_2.5G", DefiningModule: "openconfig-transport-types"}, + 3: {Name: "TRIB_SLOT_5G", DefiningModule: "openconfig-transport-types"}, + }, +} + + +var ( + // ySchema is a byte slice contain a gzip compressed representation of the + // YANG schema from which the Go code was generated. When uncompressed the + // contents of the byte slice is a JSON document containing an object, keyed + // on the name of the generated struct, and containing the JSON marshalled + // contents of a goyang yang.Entry struct, which defines the schema for the + // fields within the struct. + ySchema = []byte{ + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x73, 0xdb, 0xb8, + 0x96, 0xf7, 0xfb, 0xde, 0x9f, 0x42, 0xa5, 0x9a, 0x17, 0xdd, 0x67, 0x87, 0xb1, 0x24, 0xcb, 0xb7, + 0x54, 0x9d, 0x9a, 0x92, 0x6d, 0x25, 0xf1, 0x69, 0x5f, 0xf4, 0x58, 0xca, 0xee, 0xe9, 0xdd, 0xf6, + 0xa8, 0x68, 0x12, 0xb2, 0xf9, 0x84, 0x22, 0x35, 0x24, 0xe4, 0x8e, 0x77, 0x4f, 0xbe, 0xfb, 0x29, + 0xdd, 0xa8, 0xbb, 0x44, 0x00, 0x0b, 0x14, 0x49, 0xfd, 0xbb, 0x76, 0xed, 0x38, 0x8e, 0x08, 0x91, + 0x00, 0xd6, 0x5a, 0xbf, 0xf5, 0x07, 0xb8, 0xf0, 0xf7, 0x41, 0xa1, 0x50, 0x28, 0x14, 0xef, 0xcc, + 0x2e, 0x2b, 0x7e, 0x2a, 0x14, 0x6d, 0xf6, 0xe6, 0x58, 0xac, 0xf8, 0x61, 0xf4, 0xdb, 0xdf, 0x1c, + 0xcf, 0x2e, 0x7e, 0x2a, 0x94, 0xc7, 0x7f, 0xbd, 0xf4, 0xbd, 0x8e, 0xf3, 0x52, 0xfc, 0x54, 0x28, + 0x8d, 0x7f, 0x71, 0xe5, 0x04, 0xc5, 0x4f, 0x85, 0x51, 0x13, 0xc3, 0x5f, 0x58, 0x7e, 0xb7, 0xe7, + 0x7b, 0xcc, 0xe3, 0xe1, 0xdc, 0xef, 0xe7, 0xbe, 0x62, 0xe6, 0x33, 0x1f, 0xe6, 0x3f, 0x31, 0xff, + 0x75, 0xd1, 0xaf, 0x17, 0xbf, 0x36, 0xfa, 0x87, 0x46, 0xc0, 0x3a, 0xce, 0x8f, 0xa5, 0x6f, 0x9a, + 0xfb, 0x36, 0xdf, 0x32, 0x7a, 0xae, 0xc9, 0x3b, 0x7e, 0xd0, 0x5d, 0xf8, 0xba, 0xe1, 0xc7, 0x9a, + 0x7e, 0x3f, 0xb0, 0xd8, 0xca, 0x26, 0x46, 0xb7, 0xc4, 0xde, 0xff, 0xf2, 0x83, 0xc1, 0x5d, 0x15, + 0x7b, 0xa3, 0x6f, 0xfb, 0xb0, 0xfa, 0x83, 0x5f, 0xcd, 0xb0, 0x16, 0xbc, 0xf4, 0xbb, 0xcc, 0xe3, + 0xc5, 0x4f, 0x05, 0x1e, 0xf4, 0xd9, 0x9a, 0x0f, 0xce, 0x7c, 0x6a, 0xee, 0xe6, 0x96, 0x3e, 0xfd, + 0x73, 0xee, 0x37, 0x3f, 0x17, 0x9e, 0x7d, 0xb1, 0xeb, 0x97, 0x87, 0x60, 0xfd, 0x43, 0x2d, 0x8d, + 0xc4, 0xba, 0x87, 0x5a, 0x3d, 0x20, 0x5b, 0x07, 0x26, 0xce, 0x00, 0x09, 0x0e, 0x54, 0xdc, 0x01, + 0x13, 0x1e, 0x38, 0xe1, 0x01, 0x14, 0x1f, 0xc8, 0xd5, 0x03, 0xba, 0x66, 0x60, 0xb7, 0x0e, 0x70, + 0xf4, 0x81, 0x67, 0xd3, 0xfa, 0xde, 0x73, 0x4d, 0x2f, 0x46, 0x67, 0x4c, 0xfa, 0x78, 0x7a, 0xc9, + 0x96, 0x67, 0xdb, 0x3c, 0xf0, 0xb1, 0x27, 0x80, 0xc8, 0x44, 0x90, 0x9c, 0x10, 0xa2, 0x13, 0x43, + 0x7a, 0x82, 0x48, 0x4f, 0x14, 0xf9, 0x09, 0xb3, 0x79, 0xe2, 0x6c, 0x99, 0x40, 0xb1, 0x27, 0xd2, + 0x8c, 0xe7, 0x18, 0x8f, 0x66, 0xcc, 0x1e, 0x9c, 0xba, 0x91, 0xe1, 0x75, 0x31, 0x7b, 0x21, 0xde, + 0xd4, 0x12, 0x9e, 0x62, 0x32, 0x53, 0x4d, 0x71, 0xca, 0xc9, 0x4e, 0x3d, 0xe5, 0x29, 0xa8, 0x3c, + 0x15, 0xd5, 0xa7, 0x64, 0xbc, 0xa9, 0x19, 0x73, 0x8a, 0x4e, 0x6f, 0xc7, 0xf3, 0x7c, 0x6e, 0x72, + 0xc7, 0xf7, 0xc4, 0xc6, 0x2f, 0xb4, 0x5e, 0x59, 0xd7, 0xec, 0x99, 0xfc, 0x75, 0xf0, 0x20, 0x87, + 0x7e, 0x8f, 0x79, 0xa3, 0x49, 0x19, 0x3d, 0xd1, 0xe1, 0x94, 0x3a, 0xa6, 0x3f, 0x1e, 0x46, 0xfe, + 0xf0, 0x50, 0x68, 0x0e, 0x8f, 0xbe, 0x93, 0x07, 0x7d, 0x8b, 0x7b, 0xe3, 0x99, 0x73, 0x1f, 0x7d, + 0x65, 0x63, 0xfc, 0x8d, 0xed, 0xcb, 0xe8, 0x1b, 0xa7, 0x3f, 0xb6, 0x2f, 0x26, 0xdf, 0xd8, 0x1e, + 0x4f, 0xec, 0x03, 0x9a, 0x5e, 0x8e, 0xd1, 0xc3, 0xc5, 0x90, 0x9b, 0x9c, 0x89, 0x9b, 0xf7, 0xe8, + 0x32, 0xcd, 0xd6, 0x5d, 0x81, 0x75, 0xc3, 0xba, 0xb5, 0x59, 0xb7, 0xc8, 0x14, 0x26, 0x31, 0xee, + 0xe6, 0xf0, 0x0b, 0xa9, 0x6c, 0x5b, 0x29, 0xfc, 0x0b, 0xf6, 0xba, 0x7a, 0x6f, 0x17, 0x63, 0xb9, + 0x22, 0xa5, 0xfe, 0xdd, 0xdc, 0xb3, 0xeb, 0xfb, 0x6b, 0x43, 0x5f, 0x15, 0xad, 0x57, 0x33, 0x0c, + 0x9d, 0x30, 0x3e, 0x4c, 0x4f, 0x2e, 0x00, 0x4a, 0x03, 0xa5, 0x81, 0xd2, 0x08, 0xb6, 0xfb, 0x1d, + 0x6c, 0xc7, 0xde, 0x30, 0x31, 0x90, 0xbe, 0x1c, 0x7d, 0x1f, 0x30, 0x1a, 0x18, 0x0d, 0xcb, 0x4e, + 0xc4, 0xb2, 0x13, 0x82, 0xe8, 0x89, 0x61, 0xef, 0x21, 0x42, 0xc7, 0x23, 0x4a, 0xf5, 0xbe, 0xd5, + 0x82, 0xcf, 0xf1, 0x88, 0x47, 0x8c, 0x74, 0x00, 0xcf, 0xfb, 0x08, 0xcf, 0xe3, 0x59, 0x2d, 0x18, + 0x5f, 0x87, 0x57, 0x89, 0x85, 0xd7, 0x12, 0xc0, 0x19, 0xe1, 0x75, 0xf1, 0x76, 0x5a, 0xef, 0x3d, + 0x26, 0x37, 0x72, 0x21, 0x0f, 0x1c, 0x4f, 0x08, 0x7d, 0x27, 0xee, 0xed, 0x6c, 0xbf, 0xc2, 0x5c, + 0xdc, 0x14, 0x41, 0x36, 0xca, 0xc5, 0x48, 0x09, 0x24, 0x83, 0x5c, 0xaf, 0x2f, 0x10, 0xe1, 0x7a, + 0x7d, 0x84, 0x37, 0x84, 0x37, 0x68, 0x43, 0x08, 0x71, 0xfb, 0x9e, 0x41, 0xf6, 0xfa, 0xc9, 0xe9, + 0x42, 0xbd, 0x3e, 0x34, 0x21, 0x68, 0x42, 0xb0, 0x68, 0xed, 0x16, 0x9d, 0x94, 0x1e, 0xd4, 0xeb, + 0xef, 0xa5, 0x16, 0xb4, 0x95, 0x1e, 0xd5, 0xfa, 0x54, 0x07, 0x1e, 0x77, 0xcc, 0xe7, 0xc0, 0xb1, + 0xe2, 0x13, 0xf2, 0xf8, 0xf3, 0x80, 0x64, 0x40, 0x32, 0x20, 0x19, 0x21, 0x75, 0xbf, 0x43, 0xea, + 0xc8, 0x19, 0x26, 0xc6, 0xc9, 0x9f, 0x87, 0x5f, 0x07, 0x54, 0x06, 0x2a, 0xc3, 0xae, 0x93, 0xb0, + 0xeb, 0x84, 0x68, 0x79, 0x6c, 0xd6, 0x7b, 0x08, 0xcc, 0xb1, 0x60, 0x52, 0xb9, 0x67, 0xf5, 0x60, + 0xb3, 0x27, 0xc2, 0xcc, 0x1e, 0x80, 0x19, 0xc0, 0x0c, 0x60, 0x46, 0x60, 0xdd, 0xfb, 0xc0, 0xea, + 0x25, 0x48, 0xcb, 0x1e, 0x50, 0x19, 0xa8, 0x0c, 0x8b, 0xd6, 0x6e, 0xd1, 0x89, 0x71, 0xb2, 0xb7, + 0x9f, 0x90, 0xec, 0xe9, 0x24, 0x64, 0x4f, 0x07, 0x1e, 0x3b, 0x1e, 0x67, 0x2f, 0x81, 0xc9, 0x99, + 0x6d, 0x58, 0x4e, 0x60, 0xf5, 0x1d, 0x1e, 0x9f, 0x96, 0x57, 0x5c, 0x0b, 0x78, 0x06, 0x3c, 0x03, + 0x9e, 0x11, 0x6a, 0xf7, 0x3b, 0xd4, 0x2e, 0x3b, 0xc6, 0xc4, 0x58, 0xfa, 0x3a, 0xfa, 0xea, 0xcb, + 0xd1, 0x37, 0x83, 0xac, 0x41, 0xd6, 0x30, 0xf7, 0xa4, 0xcd, 0x3d, 0x21, 0xd0, 0x5e, 0xb6, 0xf6, + 0x3d, 0xc4, 0x6e, 0x61, 0x0c, 0xa5, 0xec, 0x70, 0x1d, 0x4c, 0x1e, 0xeb, 0x15, 0x0d, 0x91, 0x57, + 0x33, 0x62, 0xbe, 0x92, 0x01, 0xee, 0xce, 0x02, 0x77, 0xc7, 0x7e, 0x85, 0x22, 0xea, 0x79, 0x97, + 0x99, 0x9d, 0x80, 0x75, 0xe2, 0xf4, 0xfa, 0x24, 0xac, 0x9e, 0xc6, 0xf8, 0x6c, 0x63, 0x6c, 0xa9, + 0x1f, 0x3f, 0x8e, 0xe9, 0xe6, 0x70, 0x38, 0x15, 0x35, 0x18, 0x84, 0xdf, 0xe3, 0x8e, 0x65, 0xba, + 0x86, 0xf5, 0x6a, 0x7a, 0x1e, 0x73, 0xe3, 0xdb, 0xc6, 0xe2, 0x85, 0xd9, 0x48, 0x4f, 0xfd, 0x1e, + 0x37, 0x38, 0xcb, 0xa9, 0x99, 0x44, 0x0f, 0x87, 0xf4, 0x34, 0x45, 0xe9, 0xa9, 0xc0, 0x94, 0xcb, + 0x1f, 0xaf, 0xc6, 0x9f, 0x92, 0x7a, 0x78, 0x35, 0xee, 0x54, 0x8d, 0x2e, 0xe8, 0x04, 0xec, 0x7f, + 0xfa, 0xcc, 0xb3, 0xde, 0xc5, 0x3b, 0x3f, 0x5a, 0xe9, 0x8e, 0x9a, 0x10, 0xec, 0x3b, 0xb1, 0xb7, + 0x3b, 0xa5, 0x27, 0xb4, 0xca, 0xc4, 0x26, 0x9a, 0xe0, 0xaa, 0x13, 0x9d, 0x6c, 0xc2, 0x93, 0x4d, + 0x7c, 0x3a, 0x03, 0x10, 0x33, 0x04, 0x41, 0x83, 0x10, 0x47, 0x9d, 0xed, 0xd3, 0xdc, 0xe0, 0x83, + 0xb6, 0x24, 0x06, 0x7f, 0x3c, 0xdf, 0xcf, 0x24, 0x2e, 0xfd, 0xe6, 0x39, 0xc3, 0x52, 0xcd, 0xc5, + 0xdb, 0xaf, 0xff, 0x96, 0xf9, 0xea, 0x07, 0xd3, 0x7b, 0x19, 0x3c, 0xc5, 0x9f, 0x52, 0x83, 0x2c, + 0x37, 0x59, 0x87, 0x5f, 0x7c, 0xeb, 0x78, 0xd2, 0xb3, 0x5d, 0xd1, 0x51, 0x2c, 0x35, 0xf3, 0x4f, + 0xd3, 0xed, 0x33, 0x82, 0x76, 0x3e, 0x07, 0xa6, 0x35, 0xc8, 0x45, 0xaf, 0x9c, 0x97, 0xd1, 0xa8, + 0x94, 0xa4, 0xdb, 0xfb, 0xf9, 0x41, 0xa1, 0x6b, 0xcd, 0x1f, 0xa9, 0xeb, 0xda, 0xf2, 0x59, 0xb5, + 0x7a, 0x72, 0x5a, 0xad, 0x96, 0x4e, 0x8f, 0x4e, 0x4b, 0xe7, 0xc7, 0xc7, 0xe5, 0x93, 0xf2, 0x71, + 0x8a, 0x7a, 0xfb, 0x20, 0x99, 0xab, 0x9e, 0x0e, 0xf4, 0xb4, 0x2f, 0x30, 0x5b, 0x8a, 0xae, 0xe3, + 0x31, 0xa3, 0xe7, 0x07, 0x5c, 0x3e, 0xb0, 0x4f, 0x9b, 0x40, 0x60, 0x47, 0x60, 0xcf, 0x6d, 0x60, + 0x8f, 0xaf, 0x69, 0xa8, 0x68, 0x1c, 0x6b, 0x35, 0x8f, 0xc3, 0x19, 0xc1, 0xe7, 0xd3, 0x8c, 0x2a, + 0xb9, 0xf2, 0xd7, 0x73, 0xbf, 0xdd, 0xae, 0x91, 0x24, 0xe3, 0x6a, 0xfc, 0x1e, 0x0b, 0x86, 0xe2, + 0xac, 0xe9, 0x1a, 0x5d, 0xdf, 0x66, 0xf2, 0x1e, 0x67, 0xa9, 0x25, 0x38, 0x1e, 0x38, 0x9e, 0xdc, + 0x3a, 0x9e, 0xbe, 0xe3, 0xf1, 0xf2, 0x89, 0x82, 0xdf, 0x39, 0x41, 0x26, 0x80, 0x4c, 0x20, 0xa5, + 0x99, 0xc0, 0xc9, 0xf1, 0xf1, 0x11, 0xd0, 0x7f, 0x27, 0xf1, 0x98, 0x9b, 0xc1, 0x0b, 0xe3, 0x86, + 0xdf, 0xe7, 0xbd, 0x3e, 0x37, 0x7a, 0xfe, 0x5f, 0x2c, 0x90, 0x0f, 0xc9, 0xab, 0x1a, 0x43, 0x54, + 0x46, 0x54, 0xce, 0x6d, 0x54, 0xb6, 0x99, 0xe5, 0x74, 0x4d, 0xf7, 0xa4, 0xaa, 0x92, 0x10, 0x54, + 0x24, 0xae, 0x5d, 0xf2, 0x76, 0x95, 0x7d, 0x0d, 0xef, 0x15, 0x84, 0x77, 0x5d, 0xe1, 0xfd, 0x28, + 0x87, 0x5d, 0x9b, 0xf5, 0xd0, 0x9e, 0xe9, 0x1d, 0x6b, 0x0b, 0xfb, 0x22, 0x12, 0xdb, 0x9d, 0x7a, + 0x3f, 0xfa, 0xde, 0xcb, 0xd1, 0xd7, 0x62, 0x6b, 0xea, 0x2e, 0xb6, 0xa6, 0x62, 0xa9, 0x3f, 0x4b, + 0x4b, 0xfd, 0xd6, 0x6b, 0xe0, 0x77, 0x4d, 0xee, 0x58, 0x86, 0xed, 0x84, 0x3d, 0x16, 0x84, 0xa2, + 0x3e, 0xa2, 0x30, 0x7f, 0xaa, 0xce, 0x8a, 0xd6, 0xe4, 0x12, 0x83, 0x32, 0x12, 0x03, 0x24, 0x06, + 0xba, 0x13, 0x03, 0x51, 0x73, 0x89, 0x2e, 0x34, 0xdf, 0x5e, 0xe4, 0x87, 0x6b, 0x32, 0x6b, 0x06, + 0x8d, 0x48, 0xf6, 0xaf, 0x9a, 0x2e, 0x23, 0x6d, 0x2c, 0x14, 0x46, 0xb3, 0xd6, 0x78, 0xde, 0x7b, + 0x2c, 0x2c, 0x2a, 0x10, 0xb1, 0xa2, 0x15, 0x91, 0x5b, 0x13, 0xb9, 0x55, 0x6d, 0xb4, 0xae, 0x61, + 0xef, 0x25, 0x8d, 0xcb, 0x92, 0xb3, 0x47, 0x3a, 0x1f, 0x27, 0xcd, 0xcb, 0x29, 0xf2, 0x73, 0xd2, + 0x3c, 0x9d, 0x28, 0x5f, 0x57, 0xcf, 0xdb, 0x49, 0xf3, 0x77, 0xe2, 0x3c, 0x9e, 0x3a, 0xe9, 0xd4, + 0x91, 0x7c, 0x12, 0xe4, 0xf7, 0xa4, 0x79, 0x3e, 0x71, 0xbe, 0x9f, 0xa9, 0x21, 0x38, 0xd8, 0xcd, + 0xd5, 0x4f, 0x09, 0xe9, 0x0f, 0x12, 0x53, 0xac, 0xe8, 0x78, 0x21, 0x37, 0x3d, 0xae, 0x0e, 0x30, + 0x93, 0x86, 0x00, 0x31, 0x80, 0x18, 0x40, 0x0c, 0x20, 0x06, 0x10, 0x03, 0x88, 0x01, 0xc4, 0x00, + 0x62, 0x92, 0x81, 0x18, 0xce, 0x82, 0x37, 0xd3, 0xa5, 0xa0, 0x98, 0x71, 0x4b, 0xc0, 0x98, 0x41, + 0x20, 0x06, 0xc2, 0xc8, 0x22, 0xcc, 0x9e, 0xe2, 0x4b, 0xc8, 0x4d, 0x6e, 0x28, 0x1a, 0x51, 0x41, + 0xed, 0x55, 0xa8, 0xa8, 0x89, 0xe8, 0x95, 0x28, 0xcf, 0xf4, 0xfc, 0x90, 0x59, 0xbe, 0x67, 0x2b, + 0xcd, 0xe5, 0x5c, 0x43, 0x4c, 0x09, 0x10, 0xb3, 0x6b, 0x88, 0xa1, 0x1e, 0x02, 0xfa, 0x57, 0xad, + 0xc0, 0x35, 0xc9, 0x72, 0x4d, 0x57, 0x61, 0x96, 0x45, 0x2e, 0x79, 0xd0, 0x08, 0x68, 0x06, 0xa2, + 0x0c, 0x44, 0x19, 0x88, 0x32, 0x10, 0x65, 0xc0, 0x33, 0x10, 0x65, 0x00, 0x2f, 0x09, 0xc1, 0x8b, + 0xc1, 0x9d, 0x2e, 0x23, 0x21, 0x98, 0x51, 0x4b, 0xc0, 0x18, 0x88, 0x32, 0x10, 0x65, 0x84, 0xe7, + 0xcc, 0xc0, 0x76, 0xb8, 0x63, 0x7d, 0x0f, 0x49, 0x00, 0x06, 0x92, 0x0c, 0x24, 0x19, 0x48, 0x32, + 0x90, 0x64, 0xf6, 0x94, 0x6a, 0x14, 0x0c, 0x7d, 0x0a, 0x34, 0x8e, 0x07, 0x96, 0x81, 0x24, 0x03, + 0x49, 0x06, 0x92, 0x0c, 0x24, 0x19, 0xf0, 0x0c, 0x24, 0x19, 0xc0, 0x4b, 0x52, 0xf0, 0x42, 0x25, + 0xc9, 0x4c, 0x5a, 0x02, 0xc6, 0x40, 0x92, 0x81, 0x24, 0x03, 0x49, 0x06, 0x92, 0x0c, 0x10, 0x06, + 0x92, 0x0c, 0xa8, 0x46, 0x95, 0x6a, 0xb4, 0xbe, 0xe2, 0x2d, 0x59, 0xfa, 0x24, 0xba, 0x9e, 0xaa, + 0x04, 0xca, 0xb0, 0xc4, 0xc7, 0x21, 0x41, 0x81, 0x84, 0x02, 0x59, 0x79, 0x94, 0xe1, 0x59, 0x5e, + 0xed, 0xcb, 0xc9, 0x2d, 0x5d, 0x4d, 0xef, 0x28, 0x05, 0xf5, 0xea, 0x70, 0x06, 0x85, 0x9c, 0xb0, + 0x86, 0x12, 0x14, 0x1b, 0x74, 0x33, 0x9c, 0x41, 0x41, 0x8c, 0x94, 0x38, 0x83, 0x02, 0x95, 0x67, + 0xb5, 0x20, 0x20, 0xce, 0xa0, 0xd0, 0x71, 0x55, 0x1a, 0x0a, 0xd1, 0xbe, 0x04, 0x7e, 0xbf, 0x67, + 0x38, 0xb6, 0x7c, 0x5c, 0x8f, 0x5a, 0x40, 0x58, 0x47, 0x58, 0xcf, 0x75, 0x21, 0xf8, 0xa3, 0x8a, + 0x42, 0x38, 0x3f, 0x45, 0x38, 0x46, 0x38, 0x4e, 0x69, 0x38, 0xae, 0x56, 0xce, 0xab, 0xe7, 0x27, + 0xa7, 0x95, 0x73, 0x04, 0xe1, 0x9d, 0x04, 0x61, 0xc7, 0x23, 0xa8, 0x02, 0x3f, 0xdb, 0xc8, 0x7e, + 0x14, 0x79, 0xe4, 0x81, 0xe9, 0x85, 0x16, 0x73, 0xde, 0x84, 0x9f, 0x78, 0x3f, 0xa2, 0xf1, 0x6c, + 0xff, 0xa0, 0xd4, 0x23, 0x4a, 0x3d, 0xae, 0x32, 0x21, 0x2c, 0x9b, 0xca, 0x1a, 0x17, 0x76, 0x7d, + 0xa9, 0xe2, 0x0b, 0x76, 0x7d, 0x69, 0x01, 0xef, 0xc5, 0x6e, 0xc6, 0xae, 0xaf, 0xc4, 0x01, 0x7d, + 0x71, 0x08, 0xb0, 0xeb, 0x4b, 0xfb, 0xd5, 0x28, 0xf1, 0x08, 0x78, 0x01, 0xbc, 0x00, 0x5e, 0x00, + 0x2f, 0x80, 0x17, 0xc0, 0x0b, 0xe0, 0x05, 0xf0, 0x42, 0x06, 0x2f, 0x28, 0xed, 0x08, 0x7c, 0x01, + 0xbe, 0xa0, 0xb4, 0xe3, 0x6c, 0x13, 0xd8, 0xb4, 0xae, 0xdf, 0x63, 0x01, 0x62, 0xd2, 0x3b, 0x04, + 0xd8, 0xb4, 0x9e, 0x75, 0xae, 0x41, 0x69, 0x47, 0xd0, 0x0c, 0x68, 0x06, 0x62, 0x0c, 0xc4, 0x18, + 0x88, 0x31, 0x10, 0x63, 0x00, 0x2d, 0x59, 0x81, 0x16, 0x94, 0x74, 0x04, 0xbe, 0x00, 0x5f, 0x50, + 0x3f, 0x00, 0x52, 0x0c, 0xa4, 0x18, 0x48, 0x31, 0x90, 0x62, 0xf2, 0x40, 0x35, 0x28, 0xe9, 0x08, + 0x96, 0x01, 0xcb, 0x40, 0x8a, 0x81, 0x14, 0x03, 0x29, 0x06, 0x52, 0x0c, 0xa0, 0x25, 0x23, 0xd0, + 0x82, 0x52, 0x8e, 0xc0, 0x17, 0xe0, 0x0b, 0xa4, 0x18, 0x48, 0x31, 0x90, 0x62, 0x20, 0xc5, 0x40, + 0x8a, 0x49, 0x1b, 0xd5, 0xec, 0x51, 0x29, 0x47, 0xf9, 0xea, 0x07, 0x05, 0xe2, 0x0a, 0x8e, 0xd7, + 0x83, 0x3b, 0x69, 0x0c, 0x6f, 0x24, 0x05, 0xa5, 0x25, 0x5c, 0x33, 0x64, 0x81, 0xf1, 0xec, 0x98, + 0xa1, 0x61, 0xf5, 0x83, 0x80, 0x49, 0xbc, 0x85, 0x16, 0xc5, 0xd9, 0x15, 0x6d, 0xa1, 0xd0, 0x84, + 0x7e, 0x1e, 0x45, 0xa1, 0x09, 0x05, 0x2f, 0x85, 0x42, 0x13, 0x48, 0xea, 0x90, 0xd4, 0x65, 0x30, + 0xa9, 0x83, 0x26, 0x9d, 0xb9, 0x84, 0x0e, 0x9a, 0xf4, 0xce, 0x13, 0x3a, 0x68, 0xd2, 0xf9, 0xc9, + 0xde, 0x50, 0x68, 0x02, 0xf0, 0x02, 0x78, 0x01, 0xbc, 0x00, 0x5e, 0x00, 0x2f, 0x80, 0x17, 0xc0, + 0x4b, 0xfe, 0xe1, 0x05, 0x85, 0x26, 0x80, 0x2f, 0xc0, 0x17, 0x14, 0x9a, 0x98, 0x6d, 0x02, 0x4b, + 0xea, 0xfa, 0x3d, 0x16, 0x20, 0x26, 0xbd, 0x43, 0x80, 0x25, 0xf5, 0xac, 0x73, 0x0d, 0x0a, 0x4d, + 0x80, 0x66, 0x40, 0x33, 0x10, 0x63, 0x20, 0xc6, 0x40, 0x8c, 0x81, 0x18, 0x03, 0x68, 0xc9, 0x0a, + 0xb4, 0xa0, 0xd0, 0x04, 0xf0, 0x05, 0xf8, 0x82, 0xb7, 0x1b, 0x20, 0xc5, 0x40, 0x8a, 0x81, 0x14, + 0x03, 0x29, 0x26, 0x0f, 0x54, 0x83, 0x42, 0x13, 0x60, 0x19, 0xb0, 0x0c, 0xa4, 0x18, 0x48, 0x31, + 0x90, 0x62, 0x20, 0xc5, 0x00, 0x5a, 0x32, 0x02, 0x2d, 0x28, 0x34, 0x01, 0x7c, 0x01, 0xbe, 0x40, + 0x8a, 0x81, 0x14, 0x03, 0x29, 0x06, 0x52, 0x0c, 0xa4, 0x98, 0xb4, 0x51, 0xcd, 0x1e, 0x15, 0x9a, + 0x50, 0x2e, 0x82, 0x50, 0x20, 0xae, 0x37, 0x71, 0x33, 0xb8, 0xa1, 0x0b, 0xc7, 0x0c, 0x2f, 0xc7, + 0xb7, 0x93, 0x86, 0xaa, 0x13, 0x8e, 0xc7, 0x8c, 0x9e, 0x1f, 0xa8, 0x14, 0x9b, 0x88, 0x9a, 0x90, + 0xab, 0x31, 0x51, 0xca, 0x58, 0x8d, 0x09, 0xbf, 0xc7, 0x0d, 0xce, 0x82, 0x2e, 0x0a, 0x4c, 0xac, + 0xe0, 0xcd, 0xa8, 0x73, 0x52, 0xe6, 0x9a, 0xa4, 0xd1, 0x72, 0x3a, 0xcd, 0x99, 0xd9, 0x09, 0x58, + 0x47, 0x66, 0xd4, 0x27, 0x3a, 0xd8, 0xa9, 0xc4, 0xb5, 0x8d, 0xc8, 0x1b, 0x5a, 0x91, 0x17, 0xfc, + 0x34, 0xe3, 0x05, 0x57, 0xfe, 0x7a, 0xee, 0xb7, 0x43, 0xdf, 0x95, 0x02, 0x57, 0xe3, 0xf7, 0x58, + 0x30, 0x0c, 0x0e, 0xa6, 0x6b, 0x74, 0x7d, 0x9b, 0xc9, 0x7b, 0x9c, 0xa5, 0x96, 0xe0, 0x78, 0xe0, + 0x78, 0x72, 0xeb, 0x78, 0xfa, 0x8e, 0xc7, 0xcb, 0x27, 0x0a, 0x7e, 0xe7, 0x44, 0xe2, 0x52, 0xb5, + 0x34, 0x53, 0x21, 0x83, 0xa7, 0x48, 0x2b, 0x89, 0x72, 0x19, 0xaa, 0x34, 0x92, 0x32, 0x51, 0x51, + 0x48, 0x1b, 0x49, 0xd2, 0x45, 0xea, 0xae, 0x3d, 0x39, 0x3e, 0x3e, 0x3a, 0x4e, 0x51, 0xf7, 0x26, + 0x94, 0x87, 0x3d, 0xa5, 0x21, 0x1e, 0xf7, 0xf9, 0xb4, 0x12, 0x9f, 0x7c, 0x2c, 0x9e, 0x6d, 0x05, + 0x45, 0xe6, 0x10, 0x8a, 0x51, 0x64, 0x6e, 0xed, 0xdc, 0x41, 0x91, 0x39, 0x2c, 0xe8, 0x28, 0x1b, + 0x17, 0xf6, 0xa3, 0xa8, 0xb2, 0x0b, 0xf6, 0xa3, 0x68, 0xa1, 0xee, 0xc5, 0x6e, 0xc6, 0x7e, 0x94, + 0xc4, 0xe9, 0x7c, 0x71, 0x08, 0xb0, 0x1f, 0x45, 0xfb, 0xd5, 0x28, 0x32, 0x07, 0x78, 0x01, 0xbc, + 0x00, 0x5e, 0x00, 0x2f, 0x80, 0x17, 0xc0, 0x0b, 0xe0, 0x05, 0xf0, 0x42, 0x06, 0x2f, 0x28, 0x32, + 0x07, 0x7c, 0x01, 0xbe, 0xa0, 0xc8, 0xdc, 0x6c, 0x13, 0xd8, 0x4e, 0xab, 0xdf, 0x63, 0x01, 0x62, + 0xd2, 0x3b, 0x04, 0xd8, 0x4e, 0x9b, 0x75, 0xae, 0x41, 0x91, 0x39, 0xd0, 0x0c, 0x68, 0x06, 0x62, + 0x0c, 0xc4, 0x18, 0x88, 0x31, 0x10, 0x63, 0x00, 0x2d, 0x59, 0x81, 0x16, 0x14, 0x99, 0x03, 0xbe, + 0x00, 0x5f, 0xf0, 0x66, 0x33, 0xa4, 0x18, 0x48, 0x31, 0x90, 0x62, 0x20, 0xc5, 0xe4, 0x81, 0x6a, + 0x50, 0x64, 0x0e, 0x2c, 0x03, 0x96, 0x81, 0x14, 0x03, 0x29, 0x06, 0x52, 0x0c, 0xa4, 0x18, 0x40, + 0x4b, 0x46, 0xa0, 0x05, 0x45, 0xe6, 0x80, 0x2f, 0xc0, 0x17, 0x48, 0x31, 0x90, 0x62, 0x20, 0xc5, + 0x40, 0x8a, 0x81, 0x14, 0x93, 0x36, 0xaa, 0xd9, 0xa3, 0x22, 0x73, 0x0a, 0xe5, 0x0f, 0x0a, 0xc4, + 0xe5, 0xe5, 0xee, 0x87, 0xb7, 0xd2, 0x18, 0xde, 0x49, 0x0a, 0xca, 0x4b, 0xf4, 0x7c, 0xd7, 0x0c, + 0x9c, 0x7f, 0x0f, 0x47, 0xca, 0xb0, 0x59, 0x8f, 0x79, 0x36, 0xf3, 0xb8, 0xe1, 0xfa, 0x61, 0x28, + 0x5f, 0x6d, 0x62, 0x53, 0xa3, 0xfb, 0x51, 0x7c, 0x02, 0x45, 0xa0, 0x36, 0x80, 0x68, 0x5a, 0x8b, + 0x40, 0xa1, 0xec, 0x04, 0x52, 0x3c, 0xa4, 0x78, 0x19, 0x4c, 0xf1, 0xa0, 0x50, 0x67, 0x2e, 0xbd, + 0x83, 0x42, 0xbd, 0xf3, 0xf4, 0x0e, 0x0a, 0x75, 0x7e, 0x72, 0x39, 0x94, 0x9d, 0x00, 0xbc, 0x00, + 0x5e, 0x00, 0x2f, 0x80, 0x17, 0xc0, 0x0b, 0xe0, 0x05, 0xf0, 0x92, 0x7f, 0x78, 0x41, 0xd9, 0x09, + 0xe0, 0x0b, 0xf0, 0x05, 0x65, 0x27, 0x66, 0x9b, 0xc0, 0x02, 0xbb, 0x7e, 0x8f, 0x05, 0x88, 0x49, + 0xef, 0x10, 0x60, 0x81, 0x3d, 0xeb, 0x5c, 0x83, 0xb2, 0x13, 0xa0, 0x19, 0xd0, 0x0c, 0xc4, 0x18, + 0x88, 0x31, 0x10, 0x63, 0x20, 0xc6, 0x00, 0x5a, 0xb2, 0x02, 0x2d, 0x28, 0x3b, 0x01, 0x7c, 0x01, + 0xbe, 0xe0, 0x5d, 0x07, 0x48, 0x31, 0x90, 0x62, 0x20, 0xc5, 0x40, 0x8a, 0xc9, 0x03, 0xd5, 0xa0, + 0xec, 0x04, 0x58, 0x06, 0x2c, 0x03, 0x29, 0x06, 0x52, 0x0c, 0xa4, 0x18, 0x48, 0x31, 0x80, 0x96, + 0x8c, 0x40, 0x0b, 0xca, 0x4e, 0x00, 0x5f, 0x80, 0x2f, 0x90, 0x62, 0x20, 0xc5, 0x40, 0x8a, 0x81, + 0x14, 0x03, 0x29, 0x26, 0x6d, 0x54, 0xb3, 0x47, 0x65, 0x27, 0xe8, 0xea, 0x20, 0x14, 0x88, 0xab, + 0x50, 0x34, 0x66, 0xee, 0xec, 0x6a, 0x72, 0x63, 0x37, 0x83, 0xfb, 0x4a, 0x5b, 0x4d, 0x8a, 0xae, + 0x6f, 0x33, 0xc3, 0x76, 0xc2, 0x1e, 0x0b, 0x42, 0x99, 0x61, 0x5d, 0x5d, 0x94, 0x62, 0xb1, 0x55, + 0x54, 0xa5, 0xd0, 0xcc, 0xaf, 0xa8, 0x4a, 0x21, 0xeb, 0xd2, 0x50, 0x95, 0x22, 0x1d, 0x19, 0xe0, + 0x70, 0x7e, 0x20, 0x0b, 0x54, 0xb1, 0x2e, 0x08, 0xd9, 0xaa, 0x6c, 0x0c, 0x21, 0x3b, 0x91, 0x2c, + 0x10, 0x42, 0xf6, 0xce, 0xb3, 0x40, 0x08, 0xd9, 0xf9, 0x49, 0xf9, 0x50, 0x9d, 0x02, 0x10, 0x03, + 0x88, 0x01, 0xc4, 0x00, 0x62, 0x00, 0x31, 0x80, 0x18, 0x40, 0xcc, 0xfe, 0x40, 0x0c, 0xaa, 0x54, + 0x68, 0xc1, 0x18, 0x20, 0x8c, 0x2c, 0xc2, 0xa0, 0x4a, 0x05, 0xaa, 0x54, 0x64, 0x09, 0x62, 0xb0, + 0x1e, 0xbf, 0x73, 0x88, 0xc1, 0x7a, 0x3c, 0xb8, 0x66, 0xbe, 0x9b, 0x51, 0xa5, 0x02, 0xa2, 0x0c, + 0x44, 0x19, 0x88, 0x32, 0x10, 0x65, 0x20, 0xca, 0x40, 0x94, 0x81, 0x28, 0x93, 0x35, 0x78, 0x41, + 0xb5, 0x0a, 0x88, 0x32, 0x10, 0x65, 0xf0, 0x8a, 0x04, 0x24, 0x19, 0x48, 0x32, 0x90, 0x64, 0x20, + 0xc9, 0xe4, 0x81, 0x6a, 0x50, 0xad, 0x02, 0x92, 0x0c, 0x24, 0x19, 0x48, 0x32, 0x90, 0x64, 0x20, + 0xc9, 0x40, 0x92, 0x01, 0xbc, 0x64, 0x0c, 0x5e, 0x50, 0xb5, 0x02, 0x92, 0x0c, 0x24, 0x19, 0x48, + 0x32, 0x90, 0x64, 0x20, 0xc9, 0x40, 0x92, 0x81, 0x24, 0x93, 0x36, 0xaa, 0xd9, 0xd7, 0xaa, 0x15, + 0x6a, 0x85, 0x12, 0x0a, 0x1a, 0xcb, 0x56, 0xdc, 0xfa, 0x36, 0xbb, 0x9a, 0xde, 0x58, 0x0a, 0xea, + 0x56, 0x8c, 0xa2, 0x94, 0xe1, 0x07, 0x36, 0x0b, 0x0c, 0x3d, 0x45, 0x2c, 0xe2, 0x7f, 0x05, 0x2a, + 0x5a, 0x68, 0x66, 0x5b, 0x54, 0xb4, 0x90, 0x75, 0x77, 0xa8, 0x68, 0x01, 0x91, 0x3b, 0xfb, 0x19, + 0x22, 0x44, 0x6e, 0x88, 0xdc, 0xd9, 0xc9, 0x10, 0x21, 0x72, 0xef, 0x3c, 0x43, 0x84, 0xc8, 0x9d, + 0x9f, 0x74, 0x10, 0x15, 0x2d, 0x00, 0x31, 0x80, 0x18, 0x40, 0x0c, 0x20, 0x06, 0x10, 0x03, 0x88, + 0x01, 0xc4, 0xec, 0x0f, 0xc4, 0xa0, 0xa2, 0x85, 0x16, 0x8c, 0x01, 0xc2, 0xc8, 0x22, 0x0c, 0x2a, + 0x5a, 0xa0, 0xa2, 0x45, 0x96, 0x20, 0x06, 0x6b, 0xf5, 0x3b, 0x87, 0x18, 0xac, 0xd5, 0x83, 0x6b, + 0xe6, 0xbb, 0x19, 0x15, 0x2d, 0x20, 0xca, 0x40, 0x94, 0x81, 0x28, 0x03, 0x51, 0x06, 0xa2, 0x0c, + 0x44, 0x19, 0x88, 0x32, 0x59, 0x83, 0x17, 0x54, 0xb4, 0x80, 0x28, 0x03, 0x51, 0x06, 0xaf, 0x4f, + 0x40, 0x92, 0x81, 0x24, 0x03, 0x49, 0x06, 0x92, 0x4c, 0x1e, 0xa8, 0x06, 0x15, 0x2d, 0x20, 0xc9, + 0x40, 0x92, 0x81, 0x24, 0x03, 0x49, 0x06, 0x92, 0x0c, 0x24, 0x19, 0xc0, 0x4b, 0xc6, 0xe0, 0x05, + 0x15, 0x2d, 0x20, 0xc9, 0x40, 0x92, 0x81, 0x24, 0x03, 0x49, 0x06, 0x92, 0x0c, 0x24, 0x19, 0x48, + 0x32, 0x69, 0xa3, 0x9a, 0x3d, 0xaa, 0x68, 0xa1, 0xab, 0x6a, 0x42, 0x81, 0xb8, 0xbc, 0x45, 0x73, + 0x78, 0x9f, 0xf7, 0x83, 0xdb, 0x4c, 0x77, 0xa5, 0x0b, 0x6e, 0x06, 0x2f, 0x8c, 0x1b, 0x7e, 0x9f, + 0xf7, 0xfa, 0xdc, 0xe8, 0xf9, 0x7f, 0xb1, 0x40, 0xbe, 0xa6, 0xc5, 0xaa, 0xc6, 0xe4, 0xaa, 0x57, + 0x94, 0x50, 0xbd, 0x22, 0x71, 0x7e, 0xdd, 0xbb, 0xea, 0x15, 0xd2, 0x68, 0x4a, 0xa2, 0xa8, 0xa9, + 0x28, 0x69, 0x24, 0x0a, 0x9a, 0x22, 0x76, 0x2a, 0x10, 0x3d, 0x05, 0x66, 0x12, 0x29, 0x64, 0x54, + 0x58, 0x49, 0x09, 0x2e, 0x0a, 0x18, 0x49, 0x82, 0x8f, 0x44, 0xca, 0x57, 0x2a, 0xbb, 0x36, 0x21, + 0x26, 0x7b, 0xd2, 0x15, 0xda, 0x0f, 0x08, 0x27, 0x90, 0x2c, 0xdb, 0xd1, 0x32, 0x5d, 0x51, 0xa4, + 0x2e, 0x17, 0x19, 0xa1, 0xc5, 0x8b, 0x45, 0xdb, 0xbb, 0x7b, 0xf3, 0x27, 0xb6, 0x0c, 0x84, 0xe8, + 0x00, 0x50, 0x75, 0x7c, 0x8c, 0x2e, 0x27, 0xe9, 0xea, 0xcd, 0x9d, 0xbc, 0xbe, 0xeb, 0x36, 0x74, + 0x5b, 0xb1, 0xe7, 0x07, 0xdb, 0x2b, 0x2f, 0x44, 0x01, 0x7a, 0xf8, 0xe9, 0x2d, 0x83, 0x10, 0xaf, + 0x60, 0x5a, 0x6c, 0xc4, 0x14, 0x41, 0xca, 0x59, 0x84, 0x9c, 0x8c, 0x60, 0x9c, 0xc1, 0x11, 0x44, + 0x46, 0x69, 0x44, 0x94, 0x46, 0xc2, 0x45, 0x04, 0x8c, 0x1e, 0x4e, 0xb3, 0x41, 0xc5, 0x2d, 0x48, + 0x56, 0x7c, 0x0e, 0x98, 0xf9, 0xdd, 0xef, 0xf3, 0x61, 0xde, 0x18, 0xbf, 0x23, 0x27, 0xe3, 0x35, + 0x7f, 0x79, 0xcc, 0x3e, 0x11, 0xab, 0xcc, 0x27, 0x9c, 0xd3, 0xc8, 0xe4, 0x32, 0x73, 0x13, 0x70, + 0xbb, 0xad, 0x50, 0xe4, 0x2d, 0xca, 0xf9, 0x8a, 0x72, 0x9e, 0xb2, 0x34, 0x39, 0x07, 0x0f, 0xbe, + 0xa3, 0x10, 0x2c, 0x5a, 0x41, 0xaf, 0x68, 0x4d, 0x66, 0x85, 0x64, 0x8e, 0x3e, 0xbe, 0x7e, 0x3f, + 0x8a, 0x4a, 0x0a, 0x4e, 0xe9, 0xfd, 0x49, 0xc9, 0xc5, 0xa6, 0x7c, 0x32, 0xe9, 0xb8, 0x74, 0x31, + 0xc9, 0x31, 0xd5, 0x18, 0x61, 0x8f, 0x31, 0x5b, 0x7d, 0x9d, 0x76, 0xbe, 0x39, 0x2c, 0xd6, 0x2a, + 0x18, 0x12, 0x95, 0x41, 0x91, 0x1b, 0x16, 0xb9, 0x81, 0xd1, 0x1a, 0x9a, 0x62, 0xba, 0xba, 0xf3, + 0xa5, 0x5a, 0xc7, 0x66, 0x1e, 0x77, 0xf8, 0x7b, 0xc0, 0x3a, 0x14, 0x7b, 0xcd, 0x14, 0x16, 0x97, + 0x8a, 0xd7, 0xe3, 0x5b, 0xb9, 0x30, 0x43, 0x82, 0xf9, 0x37, 0x79, 0xc0, 0x7a, 0xeb, 0x6b, 0xfd, + 0xe1, 0xae, 0xde, 0x6a, 0x37, 0x1b, 0xf5, 0xfa, 0x55, 0x91, 0x42, 0x28, 0x09, 0x95, 0x17, 0x80, + 0x0b, 0x24, 0x8b, 0xc0, 0x73, 0xcf, 0x39, 0x7c, 0xbc, 0x76, 0xb9, 0x54, 0xfa, 0x72, 0x51, 0x4c, + 0xc3, 0xf2, 0xa8, 0x96, 0xc7, 0x3b, 0xce, 0xf5, 0xd3, 0x95, 0x4b, 0xa5, 0xdb, 0x3c, 0x3f, 0x5e, + 0x9e, 0xc7, 0xae, 0x72, 0x9c, 0xef, 0x99, 0x99, 0xeb, 0x89, 0x99, 0x6b, 0xaf, 0xf2, 0xed, 0xee, + 0xb7, 0xbb, 0xfb, 0xdf, 0xef, 0x72, 0x1c, 0x14, 0xf2, 0xed, 0x57, 0xf2, 0x1d, 0x14, 0xaa, 0x34, + 0xb6, 0xa7, 0xd4, 0xc2, 0x53, 0xea, 0x17, 0xa9, 0x64, 0xb6, 0x43, 0x7b, 0xfd, 0xee, 0x64, 0x15, + 0x21, 0x54, 0x4f, 0xb5, 0xe7, 0x5a, 0x43, 0xa6, 0x8d, 0x4c, 0x1b, 0x99, 0xb6, 0xe0, 0x8c, 0xe9, + 0x3b, 0x1e, 0x3f, 0x23, 0xc8, 0xb1, 0x8f, 0xb1, 0x7d, 0x99, 0xd4, 0xaf, 0xac, 0xce, 0xf1, 0xb1, + 0x7d, 0x39, 0x0d, 0x43, 0x50, 0x39, 0xc6, 0x6e, 0x65, 0x22, 0x5c, 0xc1, 0x6e, 0xe5, 0xd1, 0x06, + 0x8b, 0x41, 0xf0, 0x39, 0x9c, 0x5b, 0x14, 0x3e, 0x94, 0x5a, 0x68, 0x2b, 0xc8, 0x6f, 0xbd, 0x68, + 0xf8, 0x01, 0x6f, 0x5f, 0x8c, 0x6f, 0xe1, 0xd6, 0xb7, 0x59, 0x7b, 0x8c, 0x36, 0x69, 0x38, 0x4f, + 0x6f, 0xb8, 0xe5, 0x46, 0xfe, 0xac, 0x3c, 0xc1, 0x7d, 0x42, 0x05, 0x8a, 0x25, 0xcb, 0x0a, 0x96, + 0x2c, 0x77, 0xca, 0x79, 0x58, 0xb2, 0x8c, 0x3f, 0x6f, 0xb0, 0x64, 0x89, 0x44, 0x0a, 0x89, 0x94, + 0xd2, 0x8c, 0xc1, 0x92, 0xa5, 0x38, 0x4b, 0x63, 0xc9, 0x72, 0x57, 0x8f, 0x87, 0x25, 0xcb, 0x2c, + 0x3f, 0x1e, 0x96, 0x2c, 0xb3, 0x3b, 0x33, 0xb1, 0x64, 0x99, 0xd5, 0xa7, 0xc3, 0x92, 0x65, 0xb6, + 0xfd, 0x0a, 0x96, 0x2c, 0x75, 0xab, 0x87, 0x58, 0xb2, 0xdc, 0x3e, 0x5a, 0x58, 0xb2, 0x44, 0xa6, + 0x8d, 0x4c, 0x5b, 0x65, 0xc6, 0x60, 0xc9, 0x72, 0xe6, 0x46, 0xb0, 0x64, 0xb9, 0xeb, 0x68, 0x8e, + 0x25, 0xcb, 0xdd, 0x42, 0x07, 0x96, 0x2c, 0x53, 0xb3, 0x64, 0x29, 0xb3, 0xce, 0x56, 0xa0, 0x5c, + 0xb1, 0x14, 0x78, 0x35, 0x5f, 0x7c, 0x70, 0xb2, 0x5d, 0x3b, 0x61, 0x79, 0xb8, 0xf4, 0x17, 0x4e, + 0x58, 0x1a, 0x20, 0xb2, 0xaa, 0x09, 0x31, 0xde, 0x71, 0x17, 0x7c, 0xd1, 0x55, 0xee, 0x05, 0xd7, + 0xd4, 0xbf, 0x93, 0x1d, 0xbf, 0x28, 0x80, 0x2a, 0x4e, 0xa7, 0xf0, 0xbd, 0xec, 0xd8, 0x45, 0x03, + 0x72, 0x64, 0xe2, 0xc2, 0xdb, 0x46, 0x54, 0x6c, 0x5b, 0x64, 0x87, 0x08, 0x8d, 0x55, 0x8b, 0xed, + 0x04, 0x91, 0xda, 0x01, 0x22, 0x6d, 0xd3, 0x15, 0xd8, 0x34, 0x6c, 0x5a, 0x87, 0x4d, 0x27, 0x54, + 0xe7, 0x68, 0x68, 0xd2, 0x69, 0xaa, 0x6e, 0xd4, 0x7f, 0x19, 0x8c, 0xfc, 0x70, 0x83, 0xcb, 0xf6, + 0x44, 0x5b, 0xd0, 0x23, 0x1c, 0xce, 0x4c, 0xa6, 0x4f, 0x33, 0x5d, 0xbf, 0xf2, 0xd7, 0x73, 0xbf, + 0x15, 0x90, 0xab, 0x8a, 0x57, 0x2c, 0xb4, 0x02, 0xa7, 0x37, 0x9e, 0x2f, 0xc5, 0x9a, 0x6d, 0x3b, + 0xde, 0x4b, 0x61, 0xd0, 0x42, 0x61, 0xc2, 0x62, 0x05, 0xdb, 0xe4, 0x66, 0x81, 0xfb, 0x85, 0xde, + 0xeb, 0x7b, 0xe8, 0x58, 0xa6, 0x5b, 0x98, 0x7c, 0xd3, 0xf0, 0x5f, 0x50, 0x1c, 0x26, 0xe3, 0x0e, + 0x2b, 0x4b, 0xc5, 0x61, 0xe4, 0xaa, 0x1a, 0x2d, 0x8d, 0xb7, 0x6c, 0x9a, 0xb1, 0xca, 0x64, 0x5a, + 0x7e, 0xcf, 0x70, 0xd9, 0x1b, 0x73, 0x0b, 0x96, 0xef, 0x71, 0xd3, 0xf1, 0x58, 0x50, 0xe8, 0xf8, + 0xc1, 0x0a, 0x1b, 0x42, 0x4d, 0x1a, 0x9d, 0x2a, 0x39, 0x36, 0x78, 0x6a, 0x51, 0x0b, 0x14, 0x43, + 0xe8, 0x53, 0x4a, 0x0a, 0x04, 0xc6, 0x9c, 0x94, 0x0a, 0x60, 0xa2, 0xa7, 0x16, 0xe0, 0x5f, 0x2c, + 0x30, 0xc2, 0x7e, 0xaf, 0xe7, 0xbe, 0x8b, 0xd4, 0x04, 0x9c, 0xb9, 0x0a, 0xb5, 0x01, 0x51, 0x1b, + 0x10, 0xca, 0x13, 0xb2, 0xd4, 0x7d, 0xcf, 0x52, 0xa7, 0x2e, 0x31, 0x41, 0x05, 0xea, 0x2f, 0x16, + 0x34, 0x87, 0xdf, 0x09, 0x21, 0x0a, 0x42, 0x14, 0x4c, 0x3c, 0x39, 0x13, 0x4f, 0x4c, 0x90, 0x9a, + 0x5a, 0xf8, 0x1e, 0x56, 0xdd, 0x16, 0x00, 0x4d, 0x9a, 0x4e, 0xd6, 0xc2, 0xd8, 0x81, 0xdf, 0x63, + 0x01, 0x77, 0x58, 0x28, 0x40, 0xd8, 0xd3, 0x6b, 0xc0, 0xd7, 0xe0, 0xeb, 0x35, 0x53, 0xea, 0x5d, + 0x3c, 0xfa, 0x46, 0x57, 0x82, 0xb1, 0x11, 0x80, 0x93, 0x16, 0x57, 0x51, 0x79, 0x5b, 0xef, 0xd4, + 0xde, 0x23, 0xa5, 0x53, 0x78, 0xea, 0x4b, 0xaa, 0x9d, 0x49, 0xbd, 0xce, 0x3e, 0x66, 0x16, 0xd5, + 0xad, 0xf5, 0x26, 0x0e, 0x47, 0x56, 0x37, 0x1f, 0x2a, 0x33, 0x22, 0x37, 0x27, 0x72, 0xb3, 0xa2, + 0x37, 0x2f, 0x39, 0x33, 0x93, 0x34, 0xb7, 0xe8, 0xf6, 0xe9, 0xb6, 0xd6, 0x87, 0x3c, 0x70, 0xbc, + 0x17, 0x8a, 0xf7, 0xd7, 0xcf, 0x52, 0xfc, 0x42, 0xcf, 0xdb, 0x78, 0x53, 0xb4, 0xa2, 0xbb, 0x19, + 0x35, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x23, 0x39, 0x73, 0xfa, 0x9e, 0xdc, 0x51, 0xbb, 0x4b, + 0xee, 0xe6, 0x5c, 0xa1, 0x8d, 0xf1, 0xe3, 0xec, 0xfc, 0x55, 0x1e, 0x32, 0x27, 0x4c, 0xe4, 0x8c, + 0x15, 0xa7, 0x89, 0x86, 0x9e, 0x79, 0xf6, 0x7d, 0x97, 0x99, 0x1e, 0x65, 0xd7, 0x94, 0x73, 0xd2, + 0x35, 0x8e, 0xc7, 0xa5, 0x4e, 0x91, 0x5d, 0xd7, 0x31, 0x55, 0x82, 0xa6, 0x68, 0x5e, 0x92, 0xa3, + 0xeb, 0xac, 0xe8, 0xc6, 0x28, 0x5f, 0x9a, 0x53, 0x4c, 0xb4, 0xb7, 0x36, 0x3b, 0x79, 0x83, 0xeb, + 0xbc, 0x52, 0x39, 0x3a, 0x3a, 0xad, 0x94, 0x8e, 0x4e, 0xce, 0x8e, 0xab, 0xa7, 0xa7, 0xc7, 0x67, + 0xa5, 0x33, 0xe2, 0x6f, 0xd2, 0xf0, 0x66, 0x17, 0x91, 0x9d, 0xcc, 0x0f, 0x1e, 0xe1, 0xeb, 0x76, + 0x44, 0x38, 0x26, 0x31, 0x78, 0xa7, 0x19, 0x1a, 0xbc, 0x83, 0x74, 0xb4, 0xf2, 0x94, 0x13, 0x57, + 0xdd, 0xa7, 0xf6, 0xd5, 0x67, 0xf0, 0xd5, 0xe9, 0x32, 0xf7, 0x12, 0x3c, 0x73, 0x56, 0x86, 0xaa, + 0x7c, 0x56, 0xad, 0x9e, 0x9c, 0x56, 0xab, 0xa5, 0xd3, 0xa3, 0xd3, 0xd2, 0xf9, 0xf1, 0x71, 0xf9, + 0xa4, 0x7c, 0x0c, 0xd7, 0xbc, 0xaf, 0xae, 0xd9, 0x66, 0x96, 0xd3, 0x35, 0x5d, 0x52, 0xef, 0x5c, + 0xae, 0x10, 0xb4, 0xb5, 0x34, 0x87, 0x2a, 0xf0, 0xf9, 0x72, 0xc3, 0x51, 0x81, 0xcf, 0xcf, 0x8a, + 0xcf, 0x3f, 0xc2, 0x50, 0xe5, 0xc4, 0xc1, 0xa3, 0x44, 0xc7, 0x6e, 0x4a, 0x74, 0x44, 0xfb, 0xa8, + 0x26, 0x3f, 0xbe, 0x27, 0x7f, 0xac, 0x40, 0x74, 0x0f, 0x93, 0x1f, 0xdf, 0x53, 0x74, 0xb0, 0x80, + 0xd4, 0xc2, 0xb3, 0xca, 0x82, 0xb3, 0x24, 0xcf, 0x62, 0x3f, 0x06, 0xf6, 0x63, 0x88, 0xfb, 0x1d, + 0xe9, 0x85, 0x9a, 0x68, 0xe4, 0x5d, 0x66, 0x76, 0xe4, 0x2a, 0x9a, 0x47, 0xf8, 0x2b, 0xa1, 0x74, + 0x15, 0x1b, 0x63, 0x57, 0xf7, 0xf1, 0xe3, 0xd8, 0x5f, 0x1d, 0x0e, 0x4d, 0x0d, 0x27, 0x91, 0x48, + 0xb9, 0x8c, 0x0a, 0x5c, 0x06, 0x5c, 0x46, 0xcc, 0xdb, 0x94, 0x3f, 0x91, 0x64, 0x38, 0xdb, 0xfa, + 0x81, 0xf9, 0xec, 0x12, 0xec, 0xad, 0x98, 0x6b, 0x0d, 0x5b, 0x2c, 0xb0, 0xc5, 0x62, 0x67, 0xe6, + 0xa6, 0x96, 0xc3, 0xec, 0x7e, 0x8b, 0x85, 0xfa, 0x9a, 0xb9, 0xe2, 0x5a, 0x79, 0x42, 0x45, 0x9a, + 0xb1, 0x83, 0x14, 0xee, 0x06, 0xee, 0x06, 0x3b, 0x48, 0xb1, 0x83, 0x14, 0xfe, 0x06, 0xfe, 0x66, + 0x6f, 0xfc, 0x0d, 0x76, 0x90, 0xea, 0x70, 0xc2, 0x44, 0xce, 0x58, 0x71, 0x9a, 0x68, 0xe8, 0x19, + 0xec, 0x20, 0x5d, 0xdb, 0x35, 0xd8, 0x41, 0x2a, 0x70, 0x63, 0xd8, 0x41, 0xba, 0xea, 0x9b, 0xb0, + 0x66, 0x8d, 0x1d, 0xa4, 0x74, 0x70, 0x41, 0xdf, 0x0a, 0x76, 0x90, 0xae, 0x99, 0xb5, 0xd8, 0x41, + 0x9a, 0x32, 0x73, 0xc7, 0x6e, 0xa2, 0xcc, 0x0c, 0x15, 0x76, 0x90, 0xc2, 0x35, 0x63, 0x07, 0xe9, + 0x1e, 0xf9, 0x7c, 0xec, 0x20, 0xc5, 0x0e, 0x52, 0x38, 0xf8, 0x84, 0x1d, 0x3c, 0x76, 0x90, 0xa6, + 0x66, 0x07, 0x69, 0xd2, 0xa7, 0xbc, 0xad, 0xd8, 0x40, 0x9a, 0xa1, 0x73, 0xde, 0x7e, 0x63, 0xef, + 0x82, 0x2b, 0xcb, 0xc5, 0x1b, 0x27, 0xe4, 0x35, 0xce, 0x05, 0xcb, 0x8b, 0xdd, 0x3a, 0x5e, 0xdd, + 0x65, 0xdd, 0x41, 0xef, 0x15, 0x3f, 0x15, 0xbc, 0xbe, 0xeb, 0x0a, 0x6c, 0x6b, 0xbb, 0x35, 0x7f, + 0xc8, 0x5f, 0x7c, 0x1f, 0xd8, 0x2c, 0x60, 0xf6, 0xc5, 0xfb, 0xf8, 0xd2, 0x6c, 0xd7, 0x39, 0x5d, + 0x9e, 0xf1, 0x09, 0x14, 0x3a, 0x5d, 0x9e, 0xe3, 0x7b, 0x56, 0xea, 0x34, 0x6e, 0xc5, 0x4f, 0x92, + 0x4e, 0xd6, 0x51, 0xe7, 0x34, 0xde, 0xc6, 0x50, 0xa1, 0x8d, 0xa0, 0xc2, 0xd5, 0x4d, 0x2b, 0xa8, + 0x6e, 0x1a, 0xc3, 0xa1, 0xa4, 0xbc, 0xba, 0xa9, 0xe9, 0xba, 0xbe, 0x65, 0x72, 0x66, 0x1b, 0xc3, + 0xfa, 0xbf, 0xe2, 0x45, 0x4e, 0x17, 0x1b, 0x10, 0xab, 0x75, 0x5a, 0x42, 0xad, 0x53, 0xd4, 0x3a, + 0x5d, 0xbc, 0x1d, 0xe1, 0xf5, 0xfa, 0x39, 0xa9, 0xfa, 0xa8, 0x22, 0x32, 0x68, 0xe3, 0x79, 0x28, + 0xb0, 0xbc, 0x21, 0x29, 0x43, 0x48, 0x60, 0xb4, 0x8a, 0xac, 0xa0, 0xba, 0x61, 0x47, 0x31, 0xf7, + 0xa4, 0xc8, 0x31, 0x65, 0xb6, 0x4a, 0xa9, 0xa4, 0xf7, 0x54, 0x5d, 0x56, 0xad, 0x9c, 0x57, 0xcf, + 0x4f, 0x4e, 0x2b, 0xe7, 0xc7, 0x3b, 0xec, 0x3b, 0x4d, 0xd9, 0xca, 0x53, 0x82, 0x67, 0x5e, 0xd8, + 0x73, 0x47, 0xb3, 0x09, 0x86, 0xa5, 0xd9, 0x8b, 0x11, 0x92, 0x10, 0x92, 0x76, 0x16, 0x92, 0x84, + 0x77, 0x47, 0x09, 0xee, 0x82, 0xa2, 0xb1, 0x35, 0xd6, 0xed, 0xc9, 0x54, 0xb8, 0x1f, 0x5d, 0x16, + 0xfb, 0x74, 0xd2, 0x8e, 0xd9, 0x77, 0x87, 0x23, 0xda, 0x31, 0xdd, 0x90, 0xc1, 0x2e, 0x61, 0x97, + 0xbb, 0xb3, 0x4b, 0xf1, 0xbd, 0x79, 0x82, 0x7b, 0xf0, 0x68, 0x0c, 0xb3, 0xe3, 0x04, 0xdd, 0xbf, + 0xcc, 0x80, 0x19, 0x6f, 0x2c, 0x08, 0xa5, 0x22, 0xe1, 0x52, 0x0b, 0x30, 0x3b, 0x98, 0x1d, 0xc2, + 0xe1, 0xc6, 0xef, 0x7c, 0x35, 0x03, 0x5b, 0xcd, 0xea, 0x96, 0x5a, 0x80, 0xd5, 0xc1, 0xea, 0x60, + 0x75, 0x1b, 0xbf, 0xd3, 0xb1, 0xc5, 0xed, 0xcc, 0xb1, 0x61, 0x59, 0xb0, 0x2c, 0x58, 0xd6, 0xe6, + 0xef, 0x1c, 0x4a, 0xf4, 0x52, 0x71, 0x2c, 0xba, 0x12, 0x56, 0x06, 0x2b, 0x83, 0x95, 0x6d, 0xfc, + 0xce, 0x2e, 0xeb, 0xfa, 0x81, 0x84, 0x8a, 0x32, 0xbe, 0x0e, 0xa7, 0x04, 0xc2, 0xc2, 0x14, 0x2d, + 0x4c, 0xf8, 0x94, 0x40, 0xf3, 0xcd, 0x74, 0x5c, 0xa9, 0x22, 0x3a, 0xd3, 0x05, 0xe0, 0xa8, 0x09, + 0xd4, 0xa6, 0xd3, 0x34, 0xd1, 0xc9, 0x26, 0x3c, 0xd9, 0xc4, 0xa7, 0x33, 0x00, 0x31, 0x43, 0x10, + 0x34, 0x08, 0xf9, 0xd0, 0xb3, 0x34, 0xf2, 0xd2, 0x6f, 0x41, 0x29, 0xbc, 0xf5, 0xa4, 0xb8, 0xe3, + 0x5d, 0xe1, 0x85, 0x77, 0x8a, 0x1d, 0xed, 0x44, 0xaf, 0xc2, 0x50, 0x6d, 0x83, 0xa6, 0xdc, 0xf6, + 0xac, 0xb0, 0x23, 0x9d, 0x64, 0x07, 0x3a, 0x75, 0xd7, 0xd2, 0xbf, 0x55, 0x44, 0xda, 0xdb, 0x09, + 0x6d, 0xaa, 0x7e, 0x4a, 0x41, 0xc5, 0xc7, 0x3e, 0x77, 0x5c, 0xe7, 0xdf, 0xcc, 0x96, 0x8f, 0xc7, + 0x51, 0x0b, 0x08, 0xc7, 0x08, 0xc7, 0x08, 0xc7, 0x08, 0xc7, 0x08, 0xc7, 0x08, 0xc7, 0x08, 0xc7, + 0xba, 0x52, 0xee, 0xa4, 0xdf, 0x18, 0x19, 0x6e, 0xe5, 0x3f, 0x14, 0x92, 0x8c, 0x0a, 0xf2, 0x6f, + 0x31, 0x0c, 0x5f, 0x7d, 0x6a, 0xdf, 0x8e, 0xbe, 0x2d, 0x49, 0x29, 0xad, 0xf3, 0x62, 0xd8, 0x22, + 0xb5, 0xaf, 0xa7, 0x62, 0xda, 0xe4, 0x4a, 0x08, 0xd6, 0x90, 0xd3, 0x14, 0x6d, 0x5b, 0x5e, 0xb0, + 0xb6, 0xc5, 0x5e, 0x5a, 0x9c, 0xca, 0xd5, 0x02, 0xd7, 0x34, 0x4c, 0xce, 0x59, 0xe0, 0x09, 0xf3, + 0x48, 0xf1, 0xbf, 0xff, 0x2c, 0x19, 0xe7, 0x4f, 0x7f, 0x57, 0x7f, 0x3e, 0x3e, 0x1a, 0xa3, 0x1f, + 0x2b, 0xb3, 0x3f, 0xfe, 0x47, 0x31, 0x95, 0xdb, 0x81, 0x07, 0x86, 0x2d, 0x54, 0x77, 0x77, 0xce, + 0x25, 0x88, 0xbc, 0x11, 0x09, 0x97, 0x00, 0x97, 0x40, 0xef, 0x12, 0xb2, 0xb1, 0x86, 0x25, 0x67, + 0x61, 0xb0, 0x2e, 0x58, 0x17, 0xac, 0x6b, 0xbb, 0x75, 0xf9, 0x3d, 0x16, 0x18, 0x03, 0x82, 0xef, + 0x87, 0xe2, 0x46, 0x36, 0x7b, 0x31, 0x6c, 0x0d, 0xb6, 0xb6, 0x33, 0x5b, 0x73, 0x6c, 0xe6, 0x71, + 0x87, 0xbf, 0x8b, 0x1d, 0xd5, 0x14, 0x19, 0x9c, 0x80, 0x94, 0x51, 0xbc, 0x1e, 0x7f, 0xd5, 0x85, + 0x19, 0x2a, 0x2c, 0x51, 0x5f, 0xde, 0xdf, 0x36, 0xee, 0xef, 0xea, 0x77, 0xad, 0xf6, 0x7d, 0xa3, + 0xfe, 0xd0, 0x6e, 0xb6, 0x6a, 0xad, 0x6f, 0x4d, 0xd1, 0xf1, 0x1f, 0x8a, 0x33, 0xa1, 0x94, 0xfa, + 0xa7, 0x58, 0xb8, 0xbd, 0x76, 0xd9, 0xba, 0xfe, 0x67, 0xbd, 0x98, 0xc4, 0x0b, 0x94, 0x8a, 0x77, + 0x7a, 0x7d, 0x97, 0x9d, 0x7b, 0xbd, 0xba, 0x6e, 0xd6, 0x2e, 0x6e, 0xea, 0x57, 0xba, 0xb5, 0xf1, + 0x27, 0x6a, 0xfb, 0x26, 0x89, 0x44, 0x3d, 0x33, 0x18, 0xb9, 0x22, 0xc1, 0x20, 0x34, 0xbe, 0x0e, + 0xf1, 0x07, 0xf1, 0x67, 0x67, 0xf1, 0x47, 0xfc, 0x98, 0x40, 0x99, 0xe3, 0x01, 0x67, 0x8f, 0x05, + 0x1c, 0xfd, 0x6f, 0x2a, 0xc2, 0x0a, 0x1f, 0x13, 0x48, 0x66, 0xb4, 0xdc, 0xf0, 0x7c, 0x29, 0xab, + 0x1d, 0x5e, 0x08, 0xb3, 0x85, 0xd9, 0x22, 0x45, 0xdb, 0xf8, 0x9d, 0x01, 0xeb, 0xfa, 0x6f, 0x42, + 0x3b, 0x22, 0xa3, 0x07, 0x9c, 0x5e, 0x0a, 0x3b, 0x83, 0x9d, 0xed, 0xcc, 0xce, 0x32, 0xf2, 0x66, + 0x73, 0xc8, 0x02, 0xc7, 0x74, 0xa5, 0xc2, 0xd9, 0xf4, 0x52, 0x18, 0x1a, 0x0c, 0x0d, 0x01, 0x6d, + 0xb3, 0x9d, 0xf9, 0x1d, 0xae, 0xf6, 0x2e, 0xf3, 0x52, 0x0b, 0xb0, 0x3a, 0x58, 0x1d, 0xac, 0x6e, + 0xe3, 0x77, 0x72, 0xd6, 0xed, 0xb1, 0xc0, 0xe4, 0xfd, 0x40, 0x02, 0x24, 0x67, 0x2f, 0xc6, 0x5b, + 0x61, 0xb0, 0x35, 0x45, 0x5b, 0x13, 0x7f, 0x2b, 0xcc, 0x35, 0x83, 0xae, 0x11, 0xb2, 0x37, 0x16, + 0x38, 0x02, 0x65, 0xa1, 0x96, 0x06, 0x7e, 0xa1, 0x1d, 0x6c, 0x48, 0xd7, 0x34, 0xe5, 0xc9, 0xa6, + 0x3e, 0x99, 0x09, 0xd0, 0x99, 0x82, 0x98, 0x49, 0x08, 0x9a, 0x86, 0x7c, 0x38, 0x5a, 0x1a, 0x79, + 0xb9, 0x45, 0xb1, 0x25, 0xff, 0x2d, 0xb1, 0xcf, 0x57, 0x6d, 0x91, 0x6c, 0xe9, 0x41, 0xee, 0x1b, + 0xf5, 0xbb, 0xcb, 0xfb, 0xbb, 0xcf, 0xd7, 0x5f, 0xda, 0xb5, 0x9b, 0xda, 0xc3, 0x6d, 0xbb, 0x59, + 0xff, 0x67, 0xfd, 0xe1, 0xba, 0xf5, 0x47, 0x51, 0xa5, 0x2e, 0x66, 0xa8, 0x74, 0x6e, 0x8b, 0xe2, + 0xf6, 0xec, 0xc9, 0xa3, 0x7d, 0xbb, 0xfb, 0xed, 0xee, 0xfe, 0xf7, 0xbb, 0xe2, 0x2e, 0x36, 0x9a, + 0x13, 0x3d, 0xc2, 0xed, 0xf5, 0xdd, 0xfd, 0x43, 0x96, 0x1f, 0xe0, 0xf2, 0xe1, 0xba, 0x75, 0x7d, + 0x59, 0xbb, 0xc9, 0xf2, 0x33, 0xfc, 0x5e, 0x7b, 0xb8, 0xbb, 0xbe, 0xfb, 0x92, 0xe9, 0x79, 0x54, + 0xfb, 0xff, 0x94, 0xe6, 0x91, 0xd4, 0x95, 0x4f, 0xa9, 0xa9, 0x63, 0x2b, 0xf2, 0x4a, 0xde, 0x98, + 0x62, 0xc4, 0x76, 0xed, 0xac, 0x63, 0x21, 0x91, 0xed, 0x3b, 0x20, 0x21, 0x90, 0x50, 0x06, 0x49, + 0x48, 0xfe, 0xd4, 0x6b, 0xc9, 0x53, 0xae, 0x75, 0x9a, 0x3d, 0x7f, 0x0d, 0x58, 0xf8, 0xea, 0xbb, + 0xb6, 0xaa, 0xe5, 0x4f, 0x1b, 0x82, 0xf1, 0xc3, 0xf8, 0x73, 0xfd, 0x5e, 0xae, 0xd0, 0x09, 0x0c, + 0x8b, 0xf3, 0xfc, 0x14, 0xef, 0xe5, 0x16, 0xe4, 0xd3, 0x2c, 0xbc, 0x97, 0xab, 0xb3, 0x6b, 0x55, + 0x4f, 0x76, 0xd0, 0xd2, 0xc7, 0x7b, 0x54, 0x1c, 0xc3, 0x7c, 0x7b, 0x51, 0xa9, 0x53, 0xf5, 0xb2, + 0x67, 0xa1, 0xd7, 0xe0, 0xef, 0x3d, 0x16, 0x22, 0x00, 0x6f, 0x08, 0xc0, 0xe3, 0x2e, 0xca, 0x5d, + 0x18, 0x56, 0x39, 0x18, 0x5a, 0xe5, 0x20, 0xe8, 0x65, 0xcf, 0x56, 0xde, 0xd7, 0x78, 0x5e, 0x41, + 0x3c, 0xd7, 0x15, 0xcf, 0x8f, 0x72, 0xd8, 0xb5, 0x7b, 0x14, 0xc6, 0x1d, 0x2f, 0xe4, 0xa6, 0xc0, + 0xcb, 0x07, 0x4b, 0xde, 0x6d, 0xd2, 0x00, 0xc2, 0x39, 0xc2, 0x39, 0xc2, 0x39, 0xc2, 0x39, 0xc2, + 0x39, 0xc2, 0x39, 0xc2, 0xf9, 0xee, 0xc2, 0x39, 0x67, 0xc1, 0x9b, 0xe9, 0xaa, 0xc4, 0xf3, 0x71, + 0x0b, 0xfb, 0x11, 0xd0, 0x11, 0xc7, 0xd7, 0xc5, 0xf1, 0x9c, 0x86, 0xef, 0x90, 0x9b, 0xdc, 0x90, + 0x9c, 0xe4, 0x05, 0xc5, 0x9a, 0x95, 0xdf, 0xbc, 0x91, 0x2f, 0x2b, 0x7a, 0xa6, 0xe7, 0x87, 0xcc, + 0xf2, 0x3d, 0x5b, 0x6a, 0xee, 0x41, 0x63, 0x47, 0x10, 0x4f, 0xa2, 0x6b, 0x51, 0xfb, 0x32, 0x2d, + 0x71, 0xbd, 0x2b, 0x31, 0x3b, 0xa6, 0x35, 0xd7, 0xcc, 0x1f, 0x48, 0xcf, 0x11, 0xd6, 0x91, 0x9e, + 0x23, 0x3d, 0x47, 0x7a, 0x8e, 0xf4, 0x1c, 0xe9, 0xf9, 0x2e, 0xc3, 0xb8, 0xc1, 0x9d, 0x2e, 0x53, + 0x8a, 0xe5, 0xa3, 0x16, 0x90, 0x9e, 0x23, 0x3d, 0xcf, 0x61, 0xf8, 0x1e, 0xcc, 0x6d, 0xee, 0x58, + 0xdf, 0xc3, 0xc4, 0x0f, 0x94, 0x40, 0x72, 0x8e, 0xe4, 0x1c, 0xc9, 0x39, 0xa2, 0xba, 0x44, 0x54, + 0x97, 0x30, 0xbc, 0x69, 0x40, 0x77, 0x3c, 0x24, 0xe7, 0x08, 0xea, 0x48, 0xce, 0x91, 0x9c, 0x23, + 0x39, 0x47, 0x72, 0x8e, 0xe4, 0x7c, 0x97, 0x61, 0x5c, 0x35, 0x39, 0x9f, 0xb4, 0x80, 0xe4, 0x1c, + 0xc9, 0x39, 0x92, 0x73, 0x24, 0xe7, 0x48, 0xce, 0x91, 0x9c, 0x23, 0x39, 0xa7, 0x8f, 0xea, 0x39, + 0x38, 0x35, 0x52, 0xbc, 0xae, 0x5c, 0x41, 0xf5, 0xe8, 0xc8, 0xd6, 0xcc, 0x57, 0x26, 0x59, 0x7e, + 0x4f, 0x24, 0xee, 0x4c, 0x63, 0xcd, 0xe0, 0x2a, 0x14, 0xb7, 0x44, 0xc1, 0x3d, 0x45, 0xeb, 0x96, + 0x2f, 0x6e, 0xd9, 0xf7, 0xe2, 0xd7, 0x57, 0x9d, 0x13, 0x28, 0xce, 0x05, 0xae, 0x19, 0xdf, 0x9e, + 0x18, 0x8f, 0xa0, 0x34, 0xda, 0x5c, 0x69, 0xb4, 0xaf, 0xb5, 0x87, 0xab, 0xdf, 0x6b, 0x0f, 0xf5, + 0x76, 0x74, 0xb6, 0x50, 0xf6, 0xcb, 0xa3, 0xdd, 0x5c, 0xdf, 0xd5, 0x2f, 0x6b, 0x0f, 0x57, 0x59, + 0xae, 0x6b, 0xd5, 0xb8, 0xff, 0xbd, 0xfe, 0xd0, 0x6e, 0x7e, 0x6b, 0x34, 0x6e, 0xfe, 0xc8, 0xf2, + 0x73, 0x7c, 0xae, 0x5d, 0x3c, 0x5c, 0x5f, 0x66, 0xba, 0xd0, 0x5b, 0xe3, 0x5b, 0x96, 0x6f, 0xff, + 0xfa, 0xae, 0x55, 0xff, 0xf2, 0x50, 0x6b, 0xd5, 0xaf, 0xda, 0x97, 0xd7, 0x0f, 0x97, 0xdf, 0xae, + 0x5b, 0x59, 0x7e, 0x9a, 0xfb, 0xc6, 0xb0, 0xe8, 0x5e, 0xfb, 0xf2, 0x6b, 0xed, 0xee, 0xae, 0x9e, + 0xe9, 0xe2, 0x7b, 0x17, 0xb5, 0xcb, 0xdf, 0x1a, 0x37, 0xb5, 0xbb, 0x7a, 0x96, 0x1f, 0xa2, 0xf5, + 0x50, 0xbb, 0x6b, 0x5e, 0xd6, 0xaf, 0xff, 0x59, 0x7f, 0xc8, 0xb6, 0x97, 0xca, 0x74, 0x31, 0xcd, + 0xcb, 0xaf, 0xb5, 0x66, 0xf3, 0xba, 0x99, 0xe5, 0x47, 0x68, 0xd6, 0xef, 0x9a, 0xd9, 0x2e, 0x08, + 0xfa, 0xf9, 0x21, 0xd3, 0x71, 0xe2, 0xf2, 0xfe, 0xae, 0xf5, 0x70, 0x7f, 0x73, 0x53, 0x7f, 0x68, + 0x67, 0x9f, 0x9d, 0x1e, 0x32, 0x1d, 0xe4, 0x9a, 0xad, 0xfb, 0x87, 0xda, 0x97, 0x7a, 0xee, 0xaa, + 0x9a, 0x7e, 0x40, 0xa2, 0x26, 0x9f, 0xa8, 0x35, 0xef, 0x3f, 0xb7, 0xf2, 0x96, 0xa8, 0xdd, 0x37, + 0xea, 0x0f, 0xb5, 0xd6, 0xf5, 0xdd, 0x97, 0x76, 0xf3, 0x8f, 0x66, 0xab, 0x7e, 0x9b, 0x6d, 0x32, + 0x9d, 0x7f, 0x96, 0xf6, 0xb7, 0xc6, 0x55, 0xad, 0x55, 0xdf, 0xdf, 0xd2, 0xc4, 0x4f, 0x09, 0xca, + 0xa4, 0xfd, 0x90, 0xd9, 0x46, 0xcf, 0xff, 0x8b, 0x05, 0xe2, 0x62, 0xe9, 0xcc, 0xb5, 0x90, 0x4c, + 0x21, 0x99, 0xaa, 0x39, 0x18, 0x15, 0xc9, 0x54, 0xb4, 0xe2, 0xa8, 0x44, 0xa5, 0x51, 0xc9, 0x35, + 0x5c, 0x89, 0x50, 0xac, 0xb2, 0x66, 0xab, 0xb8, 0xa0, 0xa8, 0xba, 0x46, 0x4b, 0xb1, 0x5a, 0x28, + 0x11, 0x8f, 0x94, 0xd6, 0x62, 0xa9, 0xba, 0x4c, 0xb5, 0x32, 0x28, 0x49, 0xdf, 0xa5, 0x3d, 0x20, + 0x1d, 0x28, 0x8c, 0xbc, 0xe8, 0x8a, 0xa9, 0xda, 0x4a, 0x69, 0x31, 0xce, 0xb9, 0x7a, 0xf2, 0xab, + 0xa2, 0x9b, 0x9d, 0xec, 0xfa, 0x7e, 0xda, 0xd0, 0x47, 0xc5, 0x90, 0xfb, 0x81, 0xf9, 0xb2, 0xdd, + 0x87, 0xce, 0x14, 0xa5, 0x18, 0x5d, 0xb0, 0xa5, 0xdf, 0xe3, 0x1d, 0x2c, 0x16, 0x3b, 0x58, 0x8b, + 0x04, 0x69, 0xc9, 0xe0, 0x2c, 0x1a, 0x94, 0xa5, 0x83, 0xb1, 0x74, 0x10, 0x96, 0x0f, 0xbe, 0x6a, + 0x36, 0x14, 0xf7, 0x20, 0xb0, 0xa2, 0x35, 0x19, 0x4d, 0x41, 0x26, 0x1c, 0x5f, 0x87, 0x33, 0xeb, + 0xc0, 0x83, 0x8a, 0x3c, 0x98, 0xfc, 0x06, 0x99, 0xa1, 0x37, 0x3c, 0x14, 0x9a, 0xc1, 0x4a, 0x71, + 0x60, 0xf8, 0x7d, 0xed, 0xf1, 0xa4, 0x4e, 0xf2, 0x3c, 0xd8, 0x61, 0x04, 0x12, 0x3f, 0x04, 0x36, + 0x66, 0x5c, 0x54, 0xb2, 0xec, 0x0a, 0x2c, 0x1b, 0x96, 0xad, 0xc9, 0xb2, 0x45, 0x26, 0x30, 0x81, + 0x61, 0xc7, 0x00, 0xbd, 0xfc, 0xa1, 0x73, 0x1c, 0xa2, 0x54, 0xef, 0x5b, 0x2d, 0xf8, 0xdc, 0x7f, + 0x9e, 0x3e, 0x93, 0x00, 0x44, 0xcf, 0x5d, 0x06, 0x94, 0x06, 0x4a, 0x6f, 0x9a, 0x58, 0x12, 0x51, + 0x77, 0xf6, 0x6a, 0x60, 0x35, 0x82, 0xaf, 0x62, 0xf0, 0x15, 0x3e, 0x0a, 0x5a, 0x30, 0x13, 0x54, + 0xcb, 0x08, 0x25, 0xa7, 0xb0, 0xf4, 0x54, 0x56, 0x99, 0xd2, 0x44, 0x53, 0x5b, 0x75, 0x8a, 0x93, + 0x4d, 0x75, 0xb2, 0x29, 0x4f, 0x37, 0xf5, 0x25, 0x85, 0x4d, 0xc1, 0xb1, 0x17, 0x35, 0x89, 0xe8, + 0xc2, 0x31, 0xbd, 0x28, 0x2e, 0x55, 0x0f, 0x5b, 0xf9, 0xb0, 0x13, 0xf1, 0x5a, 0xd6, 0x5c, 0x28, + 0xcc, 0x86, 0xd8, 0x7c, 0xa8, 0xcc, 0x88, 0xdc, 0x9c, 0xc8, 0xcd, 0x8a, 0xde, 0xbc, 0xe4, 0xcc, + 0x4c, 0xd2, 0xdc, 0xa2, 0xdb, 0x97, 0x7e, 0x33, 0x74, 0x69, 0xe6, 0xb8, 0xcc, 0xec, 0xc8, 0xed, + 0x58, 0x59, 0x8a, 0x37, 0xa7, 0x0a, 0x6d, 0x34, 0xc6, 0xf9, 0xd2, 0xc7, 0x8f, 0x87, 0xb3, 0xff, + 0x9b, 0xa6, 0x47, 0xa3, 0x50, 0x78, 0x38, 0x34, 0xf8, 0x84, 0x5e, 0x86, 0xd3, 0xeb, 0x39, 0x25, + 0x33, 0x79, 0xf5, 0x3c, 0x73, 0x36, 0xe9, 0x9a, 0xfb, 0xdb, 0xa1, 0x14, 0x6e, 0xa8, 0x64, 0xa4, + 0xb3, 0xb7, 0x32, 0xf7, 0x37, 0x21, 0x65, 0x4f, 0x7c, 0xbc, 0x44, 0x8a, 0x0c, 0x48, 0x05, 0x2a, + 0x95, 0x00, 0x85, 0x33, 0x6b, 0xc1, 0x6f, 0x89, 0x79, 0x21, 0xf5, 0x12, 0x03, 0xf2, 0x01, 0x44, + 0x25, 0x70, 0xcc, 0x06, 0x0c, 0xe9, 0xd0, 0xa0, 0xc7, 0x61, 0x88, 0x2d, 0x11, 0x2c, 0x8b, 0x16, + 0x82, 0x4a, 0x2b, 0x49, 0xca, 0x57, 0x81, 0xcb, 0x80, 0xcb, 0x40, 0xca, 0x87, 0x94, 0x0f, 0x29, + 0x1f, 0x52, 0x3e, 0xa4, 0x7c, 0xfb, 0x93, 0xf2, 0xc9, 0xd0, 0x86, 0x9e, 0x8c, 0x4f, 0x60, 0xc9, + 0x57, 0x82, 0xdf, 0x48, 0xd7, 0x01, 0x7e, 0x63, 0xef, 0x82, 0x91, 0xa8, 0x78, 0xe3, 0x84, 0xbc, + 0xc6, 0xb9, 0xe0, 0xfa, 0xc1, 0xad, 0xe3, 0xd5, 0x5d, 0xd6, 0x1d, 0xaf, 0xaa, 0x7a, 0x7d, 0xd7, + 0x15, 0xe0, 0xd0, 0x5b, 0xf3, 0x87, 0xfc, 0xc5, 0xf7, 0x81, 0xcd, 0x02, 0x66, 0x5f, 0xbc, 0x8f, + 0x2f, 0xcd, 0xf6, 0x26, 0x86, 0xb5, 0xf3, 0x3f, 0x81, 0x1d, 0x0d, 0x6b, 0x67, 0xfc, 0x9e, 0x6d, + 0x6f, 0x10, 0x58, 0xeb, 0xa7, 0xea, 0x6e, 0x1d, 0x5b, 0x1d, 0x78, 0x60, 0x7a, 0xa1, 0xc5, 0x9c, + 0xb7, 0x18, 0x6f, 0xfd, 0x4c, 0x4b, 0x23, 0xcd, 0x5c, 0x94, 0x8d, 0x6d, 0x0e, 0xf1, 0xef, 0xb8, + 0x90, 0xc9, 0x9d, 0x0e, 0xb3, 0xcf, 0x87, 0x7d, 0xc3, 0x84, 0x39, 0x8f, 0xea, 0x06, 0x07, 0xb1, + 0x89, 0xa7, 0x9a, 0xc6, 0xa4, 0x6f, 0x8f, 0x83, 0xd0, 0xc4, 0xd4, 0x83, 0x37, 0xc2, 0xdb, 0x1c, + 0x98, 0x67, 0x3e, 0xbb, 0xcc, 0x96, 0xd7, 0xbc, 0x26, 0x0d, 0xec, 0x49, 0x15, 0x5e, 0xa9, 0x29, + 0xbe, 0x3f, 0xc2, 0x97, 0x94, 0x09, 0x64, 0x45, 0x2e, 0x7f, 0xf6, 0x7d, 0x97, 0x99, 0x9e, 0x8a, + 0x5c, 0x5e, 0x4e, 0x81, 0xc8, 0xcd, 0xf8, 0x2b, 0x0b, 0x3c, 0xc6, 0x8d, 0x5e, 0xd7, 0x36, 0x7a, + 0x01, 0x1b, 0xc4, 0x20, 0x05, 0xfb, 0x5f, 0xd5, 0x1a, 0x9c, 0x01, 0x9c, 0x41, 0xce, 0x9d, 0x41, + 0x6e, 0x4a, 0x86, 0xd4, 0x5b, 0x5f, 0xeb, 0x0f, 0x77, 0xf5, 0x56, 0xbb, 0x71, 0x7b, 0xd5, 0x6e, + 0xfd, 0xd1, 0xa8, 0x67, 0xbf, 0x4c, 0x48, 0xbd, 0xf5, 0xb5, 0x5d, 0x2e, 0x95, 0xbe, 0x5c, 0xd4, + 0x9a, 0xf5, 0x76, 0xf3, 0xa1, 0x9a, 0xe5, 0x32, 0x21, 0xa3, 0x67, 0x19, 0x3d, 0xca, 0xcd, 0x43, + 0xd6, 0x9f, 0xa4, 0x3a, 0x7e, 0x92, 0x46, 0xf3, 0x36, 0x07, 0xa3, 0x12, 0x0d, 0x4b, 0xe6, 0x9f, + 0xe5, 0xdb, 0xdd, 0x55, 0xfd, 0xf3, 0xf5, 0x5d, 0xfd, 0x2a, 0x0f, 0x83, 0xd2, 0xae, 0xdd, 0x5f, + 0x66, 0xde, 0x50, 0xfe, 0x2b, 0x3f, 0x46, 0x3f, 0xe3, 0x8a, 0xcb, 0xa5, 0xbc, 0xf8, 0xe2, 0x7f, + 0x3d, 0xe4, 0xe5, 0x49, 0x9a, 0x0f, 0xf9, 0x31, 0x96, 0x66, 0x7e, 0x8c, 0xe5, 0xf2, 0xf7, 0xab, + 0xec, 0xc7, 0xc8, 0x6a, 0x9e, 0x20, 0x6c, 0xfc, 0x2c, 0xf5, 0x3c, 0x01, 0xe5, 0x6d, 0x6e, 0x86, + 0x25, 0x57, 0x48, 0x79, 0x79, 0x93, 0x0f, 0x83, 0x69, 0xd7, 0x2e, 0x2f, 0xf3, 0x33, 0x28, 0x0f, + 0xb9, 0xf1, 0xc7, 0x39, 0xf2, 0x61, 0xf5, 0xdc, 0x24, 0xc5, 0x37, 0xf9, 0x99, 0x5f, 0x6a, 0xa6, + 0x92, 0xf1, 0x42, 0xa6, 0x22, 0x62, 0x7c, 0x87, 0x59, 0x46, 0xd7, 0xb7, 0x15, 0x36, 0x9d, 0x47, + 0x2d, 0x40, 0x74, 0x8f, 0xd1, 0x12, 0x44, 0x77, 0x42, 0x8b, 0x80, 0xe8, 0x2e, 0xfb, 0x20, 0x9f, + 0xeb, 0x97, 0xed, 0xdb, 0xfb, 0xab, 0x7a, 0x4e, 0x04, 0xf7, 0xc1, 0xe3, 0xd4, 0xbe, 0xb5, 0xee, + 0x33, 0x7d, 0x1c, 0x43, 0xfd, 0xb2, 0x5d, 0xbf, 0xab, 0x5d, 0xdc, 0x64, 0x5b, 0x04, 0x1d, 0x3c, + 0xc6, 0xd5, 0x75, 0x53, 0xf5, 0x39, 0xf6, 0x29, 0x04, 0xfb, 0x41, 0xd7, 0xe8, 0x98, 0x16, 0xf7, + 0x03, 0xf5, 0xe5, 0xf0, 0x55, 0x8d, 0x21, 0x30, 0x23, 0x30, 0x23, 0x30, 0x67, 0x23, 0x30, 0xcf, + 0x9c, 0x4f, 0xd5, 0xfe, 0x7c, 0xff, 0x70, 0xdb, 0xfe, 0x5c, 0xbb, 0x6c, 0xdd, 0x3f, 0xe4, 0x24, + 0x4e, 0xff, 0x9f, 0xe6, 0xe7, 0x46, 0xbb, 0x71, 0xf3, 0x2d, 0xd3, 0x27, 0x3f, 0x0d, 0x1e, 0xa2, + 0x72, 0x96, 0xe9, 0xa3, 0x93, 0x3e, 0x37, 0xb2, 0x7c, 0xfb, 0xff, 0x55, 0xc9, 0x78, 0xe7, 0x67, + 0x5a, 0x66, 0xf9, 0xaf, 0x6c, 0x4f, 0x9e, 0xcb, 0xcf, 0x8d, 0x4a, 0xbb, 0x76, 0x99, 0xe9, 0x54, + 0xe1, 0xbe, 0xf5, 0x35, 0xdb, 0xaa, 0x63, 0x33, 0xdb, 0x73, 0xe8, 0xee, 0xfe, 0x6e, 0x10, 0xc5, + 0xbe, 0x7c, 0x19, 0x64, 0x39, 0xd9, 0x3e, 0x2a, 0xb6, 0xf6, 0x5b, 0xd6, 0x8d, 0x39, 0xeb, 0x28, + 0x91, 0x71, 0x3b, 0x56, 0xc5, 0xb9, 0xac, 0x27, 0xfa, 0x99, 0x7e, 0xbb, 0x75, 0x26, 0x27, 0x4c, + 0xac, 0x00, 0x7f, 0x6b, 0xfa, 0x9d, 0x3b, 0x28, 0xc2, 0xdf, 0x7b, 0x7d, 0x0f, 0x1d, 0xcb, 0x74, + 0x0d, 0xeb, 0xd5, 0xf4, 0x3c, 0xe6, 0x86, 0xe2, 0xef, 0xcc, 0x2d, 0x37, 0x81, 0xd7, 0xe7, 0xf0, + 0xfa, 0x1c, 0x89, 0xfd, 0x8b, 0x57, 0x09, 0x1e, 0x4d, 0x41, 0x85, 0x32, 0xc1, 0xe3, 0x06, 0xf6, + 0xa3, 0x4e, 0x30, 0x34, 0xc2, 0xcc, 0x6a, 0x84, 0xd2, 0xa5, 0xa3, 0x24, 0x0b, 0x69, 0x2f, 0x5b, + 0x8a, 0x6c, 0x85, 0x4b, 0x05, 0x83, 0x51, 0x36, 0x1c, 0x0a, 0x03, 0xa2, 0x37, 0x24, 0x2a, 0x83, + 0x22, 0x37, 0x2c, 0x72, 0x03, 0xd3, 0x62, 0x68, 0x6a, 0xec, 0x2c, 0x5b, 0x44, 0x4a, 0xd6, 0x00, + 0xa3, 0x06, 0x6c, 0x16, 0x5a, 0x81, 0xd3, 0x93, 0xae, 0x61, 0xb4, 0x72, 0x2e, 0xce, 0x36, 0xaa, + 0x38, 0x44, 0x6a, 0x15, 0xde, 0xc8, 0x4c, 0x95, 0xd2, 0x64, 0xf5, 0x99, 0x2e, 0xb5, 0x09, 0x6b, + 0x33, 0x65, 0x6d, 0x26, 0xad, 0xd5, 0xb4, 0xd5, 0x4c, 0x9c, 0x40, 0x20, 0x28, 0x90, 0xd4, 0x8d, + 0x5b, 0x9a, 0x7f, 0x21, 0x0f, 0x1c, 0xef, 0x85, 0x62, 0xde, 0x4d, 0x02, 0xea, 0xd9, 0xc1, 0x6e, + 0xfa, 0x57, 0xa1, 0x6f, 0x8b, 0x8e, 0x67, 0xb3, 0x1f, 0x74, 0x3e, 0x70, 0xd4, 0x1c, 0xbc, 0x1f, + 0xbc, 0x1f, 0xbc, 0x5f, 0xaa, 0xbd, 0x5f, 0xdf, 0xf1, 0x78, 0xf9, 0x84, 0xd0, 0xfb, 0x9d, 0x10, + 0x34, 0x25, 0x77, 0xc2, 0xfa, 0xba, 0xff, 0x68, 0xec, 0xa0, 0xa0, 0x7a, 0x22, 0xbb, 0x66, 0x37, + 0xb7, 0xd4, 0xac, 0xe2, 0x09, 0xee, 0x6b, 0xdb, 0x25, 0x38, 0x9d, 0x5c, 0x93, 0x79, 0xcc, 0x0f, + 0x95, 0xf9, 0x43, 0xdb, 0x50, 0x1d, 0x61, 0xa8, 0x7e, 0x1e, 0xa4, 0xa3, 0x95, 0xa7, 0x0c, 0xb2, + 0x16, 0x37, 0x83, 0x17, 0xc6, 0x0d, 0xbf, 0xcf, 0x7b, 0x7d, 0x6e, 0xf4, 0xfc, 0xbf, 0x58, 0x40, + 0x47, 0x5e, 0xab, 0x1a, 0x07, 0x87, 0x81, 0xc3, 0xc0, 0x61, 0xa9, 0xe6, 0x30, 0x9b, 0x59, 0x4e, + 0xd7, 0x74, 0x4f, 0xaa, 0x94, 0x89, 0x68, 0x85, 0xa0, 0xad, 0xa5, 0x18, 0x52, 0x01, 0xe0, 0xc9, + 0x0d, 0x47, 0x05, 0xd4, 0x00, 0xc0, 0x03, 0xe0, 0xed, 0x03, 0xe0, 0xfd, 0x30, 0x5c, 0x33, 0x24, + 0xa5, 0xba, 0x49, 0x8b, 0x40, 0x39, 0xa0, 0x1c, 0x50, 0x2e, 0xd5, 0x28, 0x27, 0x5f, 0x13, 0x77, + 0x2d, 0xc8, 0x95, 0x77, 0xe5, 0x04, 0x13, 0x5d, 0xce, 0x55, 0x3c, 0x50, 0x26, 0x6a, 0x87, 0x62, + 0xeb, 0xe1, 0xd2, 0x8e, 0xba, 0xc3, 0xf1, 0x0f, 0x87, 0x4a, 0x9b, 0x2e, 0x0a, 0x34, 0x9b, 0x14, + 0x1b, 0xe3, 0xbb, 0xbb, 0x1c, 0xdf, 0x5c, 0x7b, 0xfc, 0x83, 0xd4, 0x41, 0xa3, 0xf2, 0x83, 0x2d, + 0x31, 0xd0, 0x8a, 0x0b, 0x4d, 0x24, 0x0b, 0x4c, 0x79, 0x3b, 0x38, 0x0d, 0x3b, 0x5f, 0x52, 0x10, + 0xcd, 0x70, 0x7c, 0x1a, 0xd5, 0xf1, 0x69, 0xe3, 0x83, 0xd2, 0x46, 0x16, 0x9e, 0x62, 0x4f, 0x26, + 0x77, 0x32, 0xea, 0xd2, 0x00, 0xc8, 0x9e, 0x59, 0x56, 0xa0, 0xdc, 0xc3, 0x57, 0x81, 0x27, 0x83, + 0x27, 0xdb, 0x89, 0x27, 0xc3, 0x1e, 0x3e, 0xa4, 0xdc, 0x48, 0xb9, 0x91, 0x72, 0x2b, 0xc6, 0x50, + 0xec, 0xe1, 0xc3, 0x1e, 0x3e, 0x78, 0x3f, 0x78, 0xbf, 0x7d, 0xf4, 0x7e, 0xd8, 0xc3, 0x27, 0x72, + 0x63, 0xd8, 0xc3, 0x87, 0x25, 0x5e, 0x2c, 0xf1, 0x16, 0xb0, 0xc4, 0xab, 0xc8, 0x5a, 0x1a, 0xf6, + 0xee, 0xcd, 0x36, 0x4a, 0xc3, 0x5d, 0x65, 0x70, 0x17, 0xb8, 0x0b, 0xdc, 0x45, 0x21, 0x34, 0x45, + 0x0d, 0x99, 0x6f, 0x2f, 0x74, 0x33, 0x64, 0x32, 0x97, 0x07, 0x8d, 0x12, 0x0d, 0x21, 0x2d, 0x8b, + 0x90, 0xb9, 0x00, 0x1d, 0xae, 0x60, 0xa5, 0x4b, 0x78, 0xef, 0xb1, 0xb0, 0x48, 0x48, 0x21, 0xc4, + 0x4e, 0x41, 0xbb, 0x73, 0xd0, 0xee, 0x24, 0xd6, 0x3a, 0x8b, 0x61, 0xcf, 0xa7, 0x0d, 0x4f, 0x88, + 0x66, 0x2d, 0x59, 0xda, 0xb6, 0x34, 0x67, 0x29, 0xb7, 0xfe, 0x2e, 0xc5, 0x7f, 0xc2, 0x4d, 0xa7, + 0x5a, 0xb6, 0x02, 0x6b, 0xca, 0x17, 0xe9, 0xf3, 0x46, 0xad, 0xf9, 0xe3, 0xe2, 0xb0, 0x11, 0x6f, + 0x15, 0xd6, 0x9d, 0xa4, 0x24, 0x91, 0xac, 0x68, 0xc8, 0x2f, 0xb5, 0xe6, 0x99, 0x9a, 0xf3, 0xcd, + 0x5c, 0x0d, 0xe9, 0x41, 0x3a, 0x5b, 0x7b, 0x4a, 0x49, 0x7e, 0x4c, 0x30, 0xe5, 0x8b, 0x8e, 0x17, + 0x72, 0x73, 0x18, 0xa9, 0x89, 0xc1, 0x75, 0xd2, 0x30, 0xe0, 0x15, 0xf0, 0x0a, 0x78, 0x05, 0xbc, + 0x02, 0x5e, 0x01, 0xaf, 0x20, 0x1d, 0xc0, 0x2b, 0xe0, 0x15, 0xf0, 0x4a, 0x07, 0xaf, 0x9c, 0x05, + 0x6f, 0xa6, 0xab, 0x83, 0x5e, 0xc7, 0x2d, 0x03, 0x5f, 0x81, 0xaf, 0xc0, 0xd7, 0xbd, 0xc3, 0xd7, + 0x90, 0x9b, 0xdc, 0x20, 0x76, 0x02, 0xb3, 0x8e, 0xe0, 0x8c, 0xb0, 0xc9, 0x6f, 0xde, 0x28, 0x86, + 0x15, 0x3d, 0xd3, 0xf3, 0x43, 0x66, 0xf9, 0x9e, 0x4d, 0x6a, 0x6b, 0x80, 0x58, 0x7d, 0x3b, 0x79, + 0x00, 0xb1, 0xbb, 0x87, 0x58, 0xdd, 0x43, 0x5a, 0x3e, 0xab, 0x56, 0x4f, 0x4e, 0xab, 0xd5, 0xd2, + 0xe9, 0xd1, 0x69, 0xe9, 0xfc, 0xf8, 0xb8, 0x7c, 0x22, 0x73, 0x78, 0x1f, 0xb8, 0x76, 0x7f, 0xb8, + 0xb6, 0x4b, 0x38, 0xeb, 0xa3, 0x90, 0x36, 0x68, 0x14, 0x34, 0x0b, 0x9a, 0x05, 0xcd, 0xee, 0x1d, + 0xcd, 0x42, 0x8c, 0x05, 0xc7, 0x2e, 0x0c, 0x1b, 0xc4, 0xd8, 0xdc, 0x71, 0x2c, 0xc4, 0x58, 0x40, + 0xeb, 0x6e, 0xa1, 0xd5, 0xe0, 0x4e, 0x97, 0x69, 0x21, 0xd7, 0x51, 0xcb, 0xc0, 0x57, 0xe0, 0x2b, + 0xf0, 0x75, 0xef, 0xf0, 0x75, 0x60, 0xfb, 0xdc, 0xb1, 0xbe, 0x87, 0x5a, 0x00, 0x16, 0x52, 0x2c, + 0xa4, 0x58, 0x20, 0x6c, 0x3a, 0x10, 0x16, 0x52, 0x2c, 0xa8, 0x36, 0x65, 0x54, 0x4b, 0xe8, 0xc8, + 0xa6, 0x40, 0xeb, 0x78, 0x60, 0x59, 0xb0, 0x2c, 0x58, 0x76, 0xff, 0x58, 0x16, 0x52, 0x2c, 0x38, + 0x76, 0x61, 0xd8, 0x20, 0xc5, 0xe6, 0x8e, 0x63, 0x21, 0xc5, 0x02, 0x5a, 0x77, 0x0b, 0xad, 0xba, + 0xa4, 0xd8, 0x49, 0xcb, 0xc0, 0x57, 0xe0, 0x2b, 0xf0, 0x75, 0xef, 0xf0, 0x15, 0x52, 0x2c, 0x10, + 0x56, 0x9f, 0xff, 0x06, 0xc2, 0xa6, 0x07, 0x61, 0x21, 0xc5, 0x82, 0x6a, 0x09, 0xa9, 0x76, 0xa7, + 0x25, 0xbe, 0x88, 0x0e, 0x10, 0x8a, 0xda, 0xd3, 0x7b, 0x90, 0xd0, 0xf0, 0xe0, 0x87, 0x43, 0xba, + 0x9a, 0x7f, 0x05, 0xcd, 0x67, 0x0b, 0x35, 0x07, 0xf7, 0xdb, 0xbe, 0x1e, 0xdc, 0x6f, 0x63, 0x78, + 0xbb, 0x19, 0x2c, 0xdb, 0x38, 0x3c, 0x44, 0xcf, 0x78, 0x76, 0xcc, 0xd0, 0xb0, 0xfa, 0x41, 0xc0, + 0x08, 0x2a, 0x62, 0x4c, 0x4f, 0x52, 0x59, 0x6e, 0x1b, 0x45, 0x1c, 0x63, 0x65, 0x47, 0x28, 0xe2, + 0x88, 0x22, 0x8e, 0xf1, 0x9e, 0x0c, 0x45, 0x1c, 0x21, 0x98, 0x40, 0x30, 0x81, 0x60, 0x92, 0x3a, + 0xc1, 0x04, 0xeb, 0x7d, 0x10, 0x4b, 0x16, 0x86, 0x0d, 0xeb, 0x7d, 0xb9, 0x13, 0x4b, 0xb0, 0xde, + 0x07, 0x65, 0x64, 0x77, 0x53, 0x1e, 0x45, 0x1c, 0x01, 0xaf, 0x80, 0x57, 0xc0, 0x2b, 0xe0, 0x15, + 0xf0, 0x0a, 0x78, 0x05, 0xbc, 0x02, 0x5e, 0x01, 0xaf, 0x59, 0x82, 0x57, 0x14, 0x71, 0x04, 0xbe, + 0x02, 0x5f, 0x81, 0xaf, 0xd4, 0x73, 0x16, 0x45, 0x1c, 0x01, 0xb1, 0x3a, 0x3d, 0x38, 0x20, 0x36, + 0x3d, 0x10, 0x8b, 0xed, 0x6a, 0xe0, 0xda, 0x74, 0x71, 0x2d, 0x8a, 0x38, 0x82, 0x66, 0x41, 0xb3, + 0xa0, 0x59, 0xaa, 0x39, 0x0b, 0x31, 0x16, 0x1c, 0xbb, 0x30, 0x6c, 0x10, 0x63, 0x73, 0xc7, 0xb1, + 0x10, 0x63, 0x01, 0xad, 0xbb, 0x85, 0x56, 0x14, 0x71, 0x04, 0xbe, 0x02, 0x5f, 0x81, 0xaf, 0xc4, + 0x73, 0x16, 0x6f, 0x0e, 0x03, 0x61, 0xf5, 0xf9, 0x6f, 0x20, 0x6c, 0x7a, 0x10, 0x16, 0x52, 0x2c, + 0xa8, 0x36, 0x65, 0x54, 0x8b, 0x22, 0x8e, 0x60, 0x59, 0xb0, 0x2c, 0x58, 0x96, 0x68, 0xce, 0x42, + 0x8a, 0x05, 0xc7, 0x2e, 0x0c, 0x1b, 0xa4, 0xd8, 0xdc, 0x71, 0x2c, 0xa4, 0x58, 0x40, 0xeb, 0x6e, + 0xa1, 0x15, 0x45, 0x1c, 0x81, 0xaf, 0xc0, 0x57, 0xe0, 0x2b, 0xf1, 0x9c, 0x85, 0x14, 0x0b, 0x84, + 0xd5, 0xe7, 0xbf, 0x81, 0xb0, 0xe9, 0x41, 0x58, 0x48, 0xb1, 0xa0, 0x5a, 0x42, 0xaa, 0x45, 0x11, + 0x47, 0xc1, 0x22, 0x8e, 0xe4, 0xa5, 0xff, 0x0a, 0x89, 0xd4, 0x72, 0xbc, 0x19, 0xdc, 0xf6, 0x85, + 0x63, 0x86, 0x97, 0xe3, 0x9b, 0xce, 0x60, 0x45, 0x47, 0xbf, 0xcf, 0x7b, 0x7d, 0x6e, 0x74, 0x02, + 0xf6, 0x3f, 0x7d, 0xe6, 0x59, 0xef, 0x74, 0xf5, 0x1c, 0x97, 0x5a, 0xa6, 0xa9, 0xe6, 0x58, 0x42, + 0x35, 0xc7, 0x1d, 0x26, 0x49, 0xa8, 0xe6, 0x98, 0x22, 0x57, 0x4f, 0x96, 0xfa, 0x44, 0xf3, 0x2f, + 0x32, 0xd6, 0x61, 0xce, 0x48, 0x31, 0xff, 0xe8, 0xb2, 0x9d, 0x69, 0x96, 0x73, 0xfb, 0xf5, 0xdf, + 0x14, 0xb7, 0x46, 0x9b, 0xd5, 0x10, 0x26, 0xa0, 0x3a, 0xb2, 0x18, 0x4d, 0xa8, 0xab, 0x2b, 0x6b, + 0xd1, 0xc9, 0xb1, 0x84, 0x59, 0x8a, 0x96, 0xec, 0x44, 0xf7, 0x50, 0xe9, 0xcf, 0x46, 0xb4, 0x8e, + 0x5e, 0x4a, 0x28, 0xff, 0x29, 0xbb, 0xb0, 0x37, 0xaa, 0x96, 0x4e, 0x0d, 0x7a, 0x14, 0x35, 0xd8, + 0x51, 0xb2, 0x1b, 0x90, 0x07, 0xc8, 0x9b, 0x7b, 0x32, 0x94, 0xec, 0xde, 0xad, 0x0b, 0xd0, 0xe1, + 0x0a, 0x56, 0xba, 0x04, 0x2c, 0x8f, 0x69, 0x76, 0x12, 0x6b, 0x9d, 0x05, 0x96, 0xc7, 0x64, 0xe6, + 0x2c, 0x76, 0x77, 0x61, 0x69, 0x6c, 0x61, 0xd8, 0xb0, 0xbb, 0x2b, 0x89, 0xa4, 0x53, 0x6b, 0xf2, + 0xb9, 0x38, 0xa4, 0xd8, 0xdd, 0xa5, 0xd9, 0xd1, 0xd3, 0xb7, 0x86, 0x92, 0xdd, 0x31, 0xa2, 0x17, + 0x4a, 0x76, 0x03, 0x5e, 0x01, 0xaf, 0x80, 0x57, 0xc0, 0x2b, 0xe0, 0x15, 0xf0, 0x0a, 0x78, 0x05, + 0xbc, 0x02, 0x5e, 0xe9, 0xe1, 0x15, 0x25, 0xbb, 0x81, 0xaf, 0xc0, 0x57, 0xe0, 0x2b, 0xf5, 0x9c, + 0x45, 0xc9, 0x6e, 0x40, 0xac, 0x4e, 0x0f, 0x0e, 0x88, 0x4d, 0x0f, 0xc4, 0xe2, 0xe5, 0x04, 0x70, + 0x6d, 0xba, 0xb8, 0x16, 0x25, 0xbb, 0x41, 0xb3, 0xa0, 0x59, 0xd0, 0x2c, 0xd5, 0x9c, 0x85, 0x18, + 0x0b, 0x8e, 0x5d, 0x18, 0x36, 0x88, 0xb1, 0xb9, 0xe3, 0x58, 0x88, 0xb1, 0x80, 0xd6, 0xdd, 0x42, + 0x2b, 0x4a, 0x76, 0x03, 0x5f, 0x81, 0xaf, 0xc0, 0x57, 0xe2, 0x39, 0x8b, 0x3a, 0x31, 0x40, 0x58, + 0x7d, 0xfe, 0x1b, 0x08, 0x9b, 0x1e, 0x84, 0x85, 0x14, 0x0b, 0xaa, 0x4d, 0x19, 0xd5, 0xa2, 0x64, + 0x37, 0x58, 0x16, 0x2c, 0x0b, 0x96, 0x25, 0x9a, 0xb3, 0x90, 0x62, 0xc1, 0xb1, 0x0b, 0xc3, 0x06, + 0x29, 0x36, 0x77, 0x1c, 0x0b, 0x29, 0x16, 0xd0, 0xba, 0x5b, 0x68, 0x45, 0xc9, 0x6e, 0xe0, 0x2b, + 0xf0, 0x15, 0xf8, 0x4a, 0x3c, 0x67, 0x21, 0xc5, 0x02, 0x61, 0xf5, 0xf9, 0x6f, 0x20, 0x6c, 0x7a, + 0x10, 0x16, 0x52, 0x2c, 0xa8, 0x96, 0x90, 0x6a, 0x51, 0xb2, 0x5b, 0xb0, 0x64, 0x37, 0x61, 0xd1, + 0xbf, 0x42, 0x22, 0xc5, 0xba, 0xef, 0x87, 0x37, 0xdc, 0x18, 0xde, 0x6f, 0x06, 0x4b, 0x37, 0x72, + 0x33, 0x78, 0x61, 0xdc, 0xd0, 0x53, 0xc1, 0x71, 0x55, 0xe3, 0xa8, 0xd6, 0x1d, 0x2b, 0x43, 0x42, + 0x21, 0x47, 0x14, 0x72, 0x4c, 0x38, 0xeb, 0xd1, 0x22, 0xd6, 0x53, 0x8a, 0xf4, 0x5a, 0xc4, 0xf9, + 0xfd, 0x2c, 0xd7, 0x5d, 0x41, 0xb9, 0xee, 0xac, 0x94, 0xeb, 0x3e, 0xc2, 0x50, 0xa1, 0x36, 0xb7, + 0x02, 0xe0, 0xfd, 0x30, 0x86, 0xc7, 0xe0, 0x10, 0x52, 0xdd, 0xa4, 0x45, 0xa0, 0x1c, 0x50, 0x0e, + 0x28, 0x97, 0x6a, 0x94, 0x7b, 0xf6, 0x7d, 0x97, 0x99, 0x1e, 0x25, 0xc8, 0x95, 0x77, 0xe5, 0x04, + 0x0f, 0x12, 0x1c, 0x12, 0x2a, 0xed, 0x24, 0x09, 0xcd, 0x44, 0x61, 0x70, 0xb5, 0xcb, 0x23, 0x72, + 0x16, 0x29, 0x3e, 0xd4, 0x62, 0x57, 0x08, 0x4e, 0x8a, 0x81, 0x8f, 0x1c, 0x55, 0x47, 0xb2, 0x99, + 0xa8, 0x7b, 0x2c, 0xde, 0x38, 0x21, 0xaf, 0x71, 0x2e, 0x17, 0x7f, 0x07, 0x39, 0x40, 0xdd, 0x65, + 0x03, 0x6f, 0x37, 0x20, 0x2a, 0xaf, 0xef, 0xba, 0x1f, 0x0e, 0x64, 0xe8, 0x54, 0xbd, 0x91, 0xfb, + 0xc0, 0x66, 0x01, 0xb3, 0x2f, 0xde, 0xc7, 0x4d, 0x68, 0xed, 0x70, 0x45, 0xeb, 0xd3, 0x6b, 0x75, + 0x12, 0xf6, 0xa6, 0xd1, 0xce, 0xc4, 0x2c, 0x2c, 0xbe, 0x9d, 0xc4, 0xfb, 0x64, 0xcc, 0x81, 0x95, + 0x1d, 0x50, 0x3d, 0x03, 0x29, 0x30, 0x80, 0x1a, 0x06, 0x2e, 0xde, 0x80, 0x6d, 0xef, 0xfe, 0x18, + 0x5d, 0x5f, 0x1c, 0xc5, 0x87, 0xb8, 0x3d, 0x3e, 0x57, 0x06, 0x2a, 0x6e, 0x58, 0x11, 0x3c, 0x5a, + 0x67, 0x8a, 0xeb, 0x31, 0x25, 0x08, 0x19, 0x2c, 0x57, 0xc7, 0x6f, 0x59, 0xcc, 0x56, 0xc6, 0x69, + 0x65, 0x6c, 0x26, 0xc1, 0x63, 0x5a, 0xe3, 0x17, 0x3d, 0x6a, 0xa6, 0x68, 0xf9, 0x9e, 0xc7, 0x2c, + 0xee, 0x07, 0xa3, 0xe3, 0x02, 0x85, 0x07, 0x61, 0x32, 0xfc, 0x0b, 0xed, 0x88, 0x46, 0x7d, 0xa9, + 0xfc, 0x54, 0x3a, 0x1f, 0x55, 0xc9, 0x3f, 0xe9, 0xf2, 0x4d, 0xd5, 0xfc, 0x92, 0x2c, 0x9f, 0x24, + 0xcb, 0x1f, 0x49, 0xf3, 0x45, 0xbd, 0x9c, 0x29, 0x9d, 0xff, 0x4d, 0x0b, 0x78, 0xda, 0xcc, 0xe3, + 0x0e, 0x7f, 0x0f, 0x58, 0x47, 0x66, 0xf0, 0x27, 0xbe, 0x5c, 0x62, 0x4b, 0x42, 0xf1, 0x7a, 0xfc, + 0xd5, 0x17, 0x66, 0xa8, 0x30, 0x7d, 0x26, 0x0f, 0xf2, 0xf9, 0xfa, 0xa2, 0xfe, 0xd0, 0xbe, 0xbc, + 0xbf, 0xbb, 0xab, 0x5f, 0xb6, 0xee, 0x1f, 0xda, 0xad, 0x3f, 0x1a, 0x75, 0xd9, 0x99, 0x34, 0x54, + 0x3c, 0x43, 0x25, 0x89, 0x9f, 0x48, 0x3a, 0xbb, 0xb9, 0x9c, 0x3e, 0x52, 0x71, 0x17, 0x72, 0x20, + 0xd1, 0x73, 0x34, 0x73, 0xf2, 0x1c, 0xb7, 0x8d, 0x7b, 0x92, 0x07, 0x39, 0x48, 0x46, 0x4d, 0xfe, + 0xa9, 0x8b, 0xf5, 0x05, 0xc0, 0xc8, 0x36, 0x39, 0x33, 0x2c, 0xdf, 0x56, 0x08, 0xcb, 0xd3, 0x26, + 0x10, 0x91, 0x11, 0x91, 0x73, 0x1e, 0x91, 0x87, 0x93, 0xdd, 0xf4, 0x6c, 0xd9, 0xf7, 0x07, 0xa2, + 0x98, 0x2c, 0xb1, 0x4b, 0xb8, 0xd8, 0x30, 0x39, 0x67, 0x81, 0x27, 0x1d, 0xfa, 0x8a, 0xff, 0xfd, + 0x67, 0xc9, 0x38, 0x7f, 0xfa, 0xbb, 0xfa, 0xf3, 0xf1, 0xd1, 0x18, 0xfd, 0x58, 0x99, 0xfd, 0xb1, + 0x35, 0xf9, 0xe1, 0xd3, 0xd2, 0x0f, 0xbf, 0x3c, 0x3e, 0x7e, 0x1c, 0xfe, 0xfc, 0x8f, 0x5f, 0xff, + 0xf3, 0x5f, 0x7f, 0xfe, 0xc3, 0x78, 0x5a, 0xfa, 0xc4, 0x7f, 0x88, 0x0f, 0xf6, 0x53, 0x0a, 0x1c, + 0x20, 0xf3, 0xcc, 0x67, 0x97, 0xd9, 0xf2, 0xee, 0x6f, 0xd2, 0x00, 0x9c, 0x1f, 0x9c, 0x5f, 0xce, + 0x9d, 0x9f, 0xfc, 0xf2, 0x93, 0xe4, 0x72, 0x93, 0x26, 0x93, 0xe7, 0xaf, 0x2c, 0xf0, 0x18, 0x37, + 0x7a, 0x5d, 0x15, 0xbb, 0x9f, 0x6d, 0x05, 0xc6, 0x0f, 0xe3, 0x87, 0x16, 0x91, 0x0d, 0x2d, 0xa2, + 0xde, 0xfa, 0x5a, 0x7f, 0xb8, 0xab, 0xb7, 0xda, 0x8d, 0xdb, 0xab, 0x9c, 0x08, 0x11, 0xf5, 0xd6, + 0xd7, 0x76, 0xb9, 0x54, 0xfa, 0x72, 0x51, 0x6b, 0xd6, 0xdb, 0xcd, 0x87, 0x6a, 0x96, 0x93, 0xf8, + 0xd1, 0xb3, 0x8c, 0x1e, 0xe5, 0xe6, 0x21, 0xeb, 0x4f, 0x52, 0x1d, 0x3f, 0x49, 0xa3, 0x79, 0x9b, + 0x83, 0x51, 0x89, 0x86, 0x25, 0xf3, 0xcf, 0xf2, 0xed, 0xee, 0xaa, 0xfe, 0xf9, 0xfa, 0xae, 0x7e, + 0x95, 0x87, 0x41, 0x69, 0xd7, 0xee, 0x2f, 0x33, 0x6f, 0x28, 0xff, 0x95, 0x1f, 0xa3, 0x9f, 0x71, + 0xc5, 0xe5, 0x52, 0x5e, 0x7c, 0xf1, 0xbf, 0x1e, 0xf2, 0xf2, 0x24, 0xcd, 0x87, 0xfc, 0x18, 0x4b, + 0x33, 0x3f, 0xc6, 0x72, 0xf9, 0xfb, 0x55, 0xf6, 0x63, 0x64, 0x35, 0x4f, 0x10, 0x36, 0x7e, 0x96, + 0x7a, 0x9e, 0x80, 0xf2, 0x36, 0x37, 0xc3, 0x92, 0x2b, 0xa4, 0xbc, 0xbc, 0xc9, 0x87, 0xc1, 0xb4, + 0x6b, 0x97, 0x97, 0xf9, 0x19, 0x94, 0x87, 0xdc, 0xf8, 0xe3, 0x1c, 0xf9, 0xb0, 0x7a, 0x6e, 0x92, + 0xe2, 0x9b, 0xfc, 0xcc, 0x2f, 0x35, 0x53, 0xd9, 0xa3, 0x0d, 0x07, 0xb3, 0xb2, 0xb9, 0xd1, 0x0b, + 0x98, 0xe5, 0x7b, 0x1d, 0x1a, 0x11, 0x3e, 0x6a, 0x0d, 0x62, 0x7c, 0x8c, 0x96, 0x20, 0xc6, 0x13, + 0x5a, 0x0a, 0xc4, 0x78, 0x05, 0x1f, 0x0a, 0x31, 0x3e, 0x2b, 0xb9, 0x13, 0xc4, 0xf8, 0x02, 0xc4, + 0x78, 0x0d, 0xcf, 0x02, 0x31, 0x3e, 0xb5, 0xfa, 0x22, 0xc4, 0xf8, 0x54, 0xfa, 0x62, 0x88, 0xf1, + 0x05, 0x88, 0xf1, 0x5a, 0xa5, 0x1f, 0x88, 0xf1, 0xe9, 0x1c, 0x18, 0x88, 0xf1, 0xa9, 0x1c, 0x16, + 0x88, 0xf1, 0xa9, 0x44, 0x31, 0x88, 0xf1, 0x69, 0xf4, 0xc7, 0x10, 0xe3, 0x53, 0x38, 0x28, 0x10, + 0xe3, 0x65, 0xa4, 0xbf, 0xc9, 0x7f, 0xd9, 0x14, 0xe3, 0x3b, 0x66, 0xdf, 0xe5, 0x86, 0xe5, 0x7b, + 0xb6, 0x23, 0x55, 0x9d, 0x25, 0xea, 0xfd, 0xc5, 0x86, 0x20, 0xc1, 0xc7, 0x68, 0x09, 0x12, 0x3c, + 0xa1, 0x7d, 0xe0, 0x65, 0x18, 0x49, 0x17, 0xc0, 0x2c, 0xc3, 0xf2, 0x83, 0x80, 0x59, 0x9c, 0xd9, + 0xc6, 0xf3, 0xa8, 0xd6, 0xa7, 0xac, 0x17, 0x58, 0x6e, 0x0b, 0x8e, 0x00, 0x8e, 0x20, 0xe7, 0x8e, + 0xc0, 0xf2, 0xfb, 0x1e, 0x67, 0x81, 0x54, 0x7d, 0x6d, 0x85, 0x33, 0x83, 0x14, 0x2b, 0x5d, 0x2b, + 0x14, 0x41, 0xa4, 0xa8, 0x64, 0x4d, 0x55, 0x2e, 0x96, 0xa8, 0xfc, 0x31, 0x65, 0xb9, 0x63, 0x95, + 0xf2, 0xbe, 0x14, 0x95, 0xa7, 0xa9, 0xbb, 0x96, 0xfe, 0x8c, 0x1b, 0xd2, 0xde, 0x4e, 0xa8, 0x24, + 0xe5, 0x53, 0xfa, 0x62, 0xf5, 0x3b, 0x67, 0x74, 0xc1, 0x7a, 0xd8, 0x18, 0xa2, 0x35, 0xa2, 0x35, + 0xa2, 0x35, 0xa2, 0x35, 0xa2, 0x35, 0xa2, 0x35, 0xa2, 0x35, 0x41, 0xb4, 0xee, 0x2a, 0x55, 0xd6, + 0x8a, 0x5a, 0x40, 0x5c, 0x46, 0x5c, 0xc6, 0x8e, 0xd6, 0x38, 0x92, 0x5a, 0x0a, 0x4a, 0x5d, 0xd6, + 0x2f, 0xdb, 0xb7, 0xf7, 0x57, 0xf5, 0x9c, 0xec, 0x66, 0x1d, 0x3c, 0x4e, 0xed, 0x5b, 0xeb, 0x3e, + 0xcb, 0x6b, 0x43, 0x83, 0x67, 0xa8, 0xdf, 0xd5, 0x2e, 0x6e, 0xb2, 0xbd, 0xc3, 0x70, 0xf0, 0x18, + 0x57, 0xd7, 0x4d, 0xd5, 0xe7, 0xd8, 0xa7, 0xf5, 0x2d, 0x66, 0x19, 0x21, 0x37, 0x79, 0x5f, 0x31, + 0x4f, 0x1e, 0xb7, 0x81, 0x30, 0x8c, 0x30, 0x8c, 0x30, 0x9c, 0x9d, 0x30, 0xdc, 0x6c, 0xd5, 0x5a, + 0xdf, 0x9a, 0x39, 0x0a, 0xc4, 0xe3, 0x07, 0xfa, 0x76, 0x77, 0x73, 0x7f, 0xf9, 0x5b, 0xf6, 0x83, + 0xd9, 0xf8, 0x71, 0x94, 0x1f, 0x66, 0xcf, 0x22, 0x5a, 0xdf, 0x1b, 0xeb, 0xb6, 0xe6, 0xb3, 0xcb, + 0x8c, 0x67, 0xd7, 0xb7, 0xbe, 0x2b, 0xc6, 0xb7, 0x95, 0x2d, 0x22, 0xda, 0x21, 0xda, 0x41, 0x0c, + 0xde, 0x3a, 0xe1, 0x21, 0x06, 0x2b, 0x2a, 0x96, 0x10, 0x83, 0xb5, 0x75, 0x2d, 0xc4, 0xe0, 0x42, + 0x8a, 0xc4, 0xe0, 0xf9, 0x28, 0x3b, 0x70, 0xfb, 0xa4, 0x61, 0x7b, 0xd4, 0x20, 0xa2, 0x36, 0xa2, + 0x36, 0xa2, 0x36, 0xa2, 0x36, 0xa2, 0x36, 0xa2, 0x36, 0xa2, 0xb6, 0x6a, 0xd4, 0xf6, 0x83, 0xae, + 0xd1, 0x31, 0x2d, 0xee, 0x07, 0x0a, 0x91, 0x7a, 0xa6, 0x11, 0x44, 0x67, 0x44, 0x67, 0x28, 0xc8, + 0x31, 0xa6, 0x7c, 0x0a, 0x14, 0xe4, 0xd6, 0x43, 0xed, 0xae, 0x79, 0x59, 0xbf, 0xfe, 0x67, 0xfd, + 0xa1, 0xfd, 0xf9, 0xfe, 0xe1, 0xb6, 0xfd, 0xb9, 0x96, 0xa3, 0xb3, 0x0b, 0xff, 0x4f, 0xf3, 0x73, + 0xa3, 0xdd, 0xb8, 0xf9, 0xd6, 0xcc, 0xb2, 0x88, 0x3c, 0x78, 0x88, 0xca, 0x59, 0x96, 0x9f, 0xe0, + 0xf2, 0x73, 0x23, 0xcb, 0xb7, 0xff, 0x5f, 0x95, 0x8c, 0x77, 0x7e, 0xa6, 0xdf, 0x79, 0xfd, 0xaf, + 0x6c, 0x4f, 0x9e, 0xcb, 0xcf, 0x8d, 0x4a, 0xbb, 0x76, 0x99, 0xe9, 0xad, 0x25, 0xf7, 0xad, 0xaf, + 0xd9, 0x7e, 0x05, 0xbc, 0x99, 0xed, 0x39, 0x74, 0x77, 0x7f, 0x37, 0x88, 0x62, 0x5f, 0xbe, 0xd4, + 0x2e, 0x6e, 0xea, 0x99, 0x36, 0x86, 0x46, 0xed, 0xb7, 0xac, 0x1b, 0x73, 0xd6, 0x51, 0x22, 0xe3, + 0x76, 0xac, 0x8a, 0x73, 0xfb, 0xb4, 0x8c, 0x3e, 0xcd, 0xc9, 0xd5, 0x8b, 0x10, 0xaf, 0x6a, 0x0c, + 0x89, 0x3e, 0x12, 0x7d, 0x24, 0xfa, 0x48, 0xf4, 0x91, 0xe8, 0x23, 0xd1, 0x47, 0xa2, 0x8f, 0x44, + 0x1f, 0x89, 0x3e, 0x12, 0x7d, 0x24, 0xfa, 0x48, 0xf4, 0x91, 0xe8, 0x23, 0xd1, 0x47, 0xa2, 0x9f, + 0x5c, 0xa2, 0xef, 0x78, 0xbd, 0x3e, 0x37, 0x7a, 0xfe, 0x5f, 0x4c, 0x61, 0x05, 0x7f, 0xb6, 0x11, + 0xb9, 0xc4, 0xbe, 0x8c, 0xc4, 0x1e, 0x89, 0x7d, 0x32, 0x89, 0xfd, 0x95, 0x13, 0xc8, 0x0d, 0xbf, + 0xf9, 0xf6, 0xa2, 0x9e, 0x4b, 0x0f, 0x1a, 0x91, 0xec, 0x62, 0xb5, 0x5d, 0x54, 0xd2, 0x26, 0x43, + 0x61, 0x3a, 0x2b, 0x4d, 0xe8, 0xbd, 0x27, 0x5c, 0x51, 0x89, 0xd2, 0x88, 0xc8, 0x8d, 0x89, 0xdc, + 0xa8, 0xd6, 0x1a, 0xd7, 0xb0, 0xe7, 0x92, 0xde, 0xa0, 0x26, 0x39, 0x6b, 0xa4, 0x75, 0xb4, 0xa5, + 0x39, 0x63, 0x33, 0xcb, 0xe9, 0x9a, 0xae, 0xd4, 0xb6, 0xd6, 0xa5, 0x78, 0x53, 0x51, 0x68, 0x63, + 0x69, 0xb3, 0xa0, 0x4a, 0x63, 0x6a, 0x9b, 0x66, 0x69, 0xd8, 0xa9, 0x40, 0xb5, 0x89, 0x76, 0xb1, + 0x9b, 0x2b, 0x1f, 0x68, 0x9a, 0x23, 0xda, 0x54, 0xbb, 0x7e, 0x04, 0x4b, 0xca, 0xed, 0xfe, 0xfc, + 0x40, 0x30, 0x04, 0x04, 0x9b, 0x6d, 0x17, 0x87, 0xe0, 0x68, 0x8f, 0x86, 0xe0, 0x60, 0x37, 0x57, + 0x3f, 0x25, 0xb4, 0xe3, 0x57, 0x62, 0x8a, 0x15, 0x1d, 0x2f, 0xe4, 0xe6, 0x30, 0x72, 0x28, 0x82, + 0xcb, 0xa4, 0x21, 0xc0, 0x0b, 0xe0, 0x05, 0xf0, 0x02, 0x78, 0x01, 0xbc, 0x00, 0x5e, 0x00, 0x2f, + 0x80, 0x17, 0xbd, 0xf0, 0xc2, 0x59, 0xf0, 0x66, 0xba, 0x14, 0xf4, 0x32, 0x6e, 0x09, 0xf8, 0x02, + 0x7c, 0x01, 0xbe, 0x08, 0xcf, 0x99, 0x90, 0x9b, 0xdc, 0x50, 0x34, 0xa2, 0x82, 0xda, 0xeb, 0xc5, + 0x51, 0x13, 0xdf, 0xbc, 0x91, 0xcf, 0x2d, 0x7a, 0xa6, 0xe7, 0x87, 0xcc, 0xf2, 0x3d, 0x5b, 0x69, + 0x2e, 0xe7, 0x1a, 0x62, 0x4a, 0x80, 0x98, 0x5d, 0x43, 0x0c, 0xf5, 0x10, 0xd0, 0xbf, 0xfe, 0x0c, + 0xae, 0x49, 0x96, 0x6b, 0xba, 0x0a, 0xb3, 0x2c, 0x72, 0xc9, 0x83, 0x46, 0x40, 0x33, 0xa0, 0x19, + 0xd0, 0x0c, 0xc4, 0x18, 0x88, 0x31, 0xe0, 0x18, 0x88, 0x31, 0x80, 0x16, 0xcd, 0xd0, 0x62, 0x70, + 0xa7, 0xcb, 0x48, 0xc8, 0x65, 0xd4, 0x12, 0xf0, 0x05, 0xf8, 0x02, 0x7c, 0x11, 0x9e, 0x33, 0x03, + 0xdb, 0xe1, 0x8e, 0xf5, 0x3d, 0x24, 0x01, 0x18, 0x48, 0x31, 0x90, 0x62, 0x20, 0xc5, 0x40, 0x8a, + 0xd9, 0x53, 0xaa, 0x51, 0x30, 0xf4, 0x29, 0xd0, 0x38, 0x1e, 0x58, 0x06, 0x2c, 0x03, 0x96, 0x81, + 0x14, 0x03, 0x29, 0x06, 0x1c, 0x03, 0x29, 0x06, 0xd0, 0xa2, 0x1b, 0x5a, 0xa8, 0xa4, 0x98, 0x49, + 0x4b, 0xc0, 0x17, 0xe0, 0x0b, 0xf0, 0x05, 0x52, 0x0c, 0xa4, 0x18, 0x20, 0x0c, 0xa4, 0x18, 0x50, + 0x8d, 0x2a, 0xd5, 0x68, 0x7d, 0x85, 0xbb, 0xe6, 0x79, 0x3e, 0x37, 0x07, 0x43, 0x22, 0xf7, 0x26, + 0x77, 0x68, 0xbd, 0xb2, 0xae, 0xd9, 0x33, 0xf9, 0xeb, 0xc0, 0x61, 0x1e, 0xfa, 0x3d, 0xe6, 0x59, + 0x43, 0x12, 0x31, 0x7a, 0xae, 0xc9, 0x3b, 0x7e, 0xd0, 0x3d, 0xb4, 0xfc, 0x6e, 0xcf, 0xf7, 0x98, + 0xc7, 0xc3, 0xe9, 0x8f, 0x87, 0x33, 0x6f, 0xb5, 0x1f, 0x86, 0xdc, 0xe4, 0xec, 0x50, 0xbe, 0xf2, + 0xc1, 0xe8, 0x46, 0x78, 0xd0, 0xb7, 0xb8, 0x37, 0x29, 0xa1, 0x13, 0xdd, 0x47, 0x63, 0x7c, 0x1b, + 0xed, 0xcb, 0xe8, 0x36, 0xa6, 0x3f, 0xb6, 0x5b, 0xd3, 0xdb, 0x68, 0x37, 0x07, 0xb7, 0xd1, 0xbe, + 0x1e, 0xdc, 0x46, 0x63, 0x78, 0x17, 0x29, 0xa8, 0x29, 0xe1, 0x9a, 0x21, 0x0b, 0x8c, 0x67, 0xc7, + 0x0c, 0x0d, 0xab, 0x1f, 0x04, 0x4c, 0xe2, 0xf5, 0xb3, 0x28, 0xc0, 0xae, 0x68, 0x0b, 0x15, 0x26, + 0xf4, 0x83, 0x28, 0x2a, 0x4c, 0x28, 0xb8, 0x27, 0x54, 0x98, 0x40, 0x36, 0x87, 0x6c, 0x2e, 0x83, + 0xd9, 0x1c, 0xc4, 0xe8, 0xcc, 0x65, 0x72, 0x10, 0xa3, 0x77, 0x9e, 0xc9, 0x41, 0x8c, 0xce, 0x4f, + 0xda, 0x86, 0x0a, 0x13, 0x80, 0x17, 0xc0, 0x0b, 0xe0, 0x05, 0xf0, 0x02, 0x78, 0x01, 0xbc, 0x00, + 0x5e, 0xf2, 0x0f, 0x2f, 0xa8, 0x30, 0x01, 0x7c, 0x01, 0xbe, 0xa0, 0xc2, 0xc4, 0x6c, 0x13, 0x58, + 0x4b, 0xd7, 0xef, 0xb1, 0x00, 0x31, 0xe9, 0x1d, 0x02, 0xac, 0xa5, 0x67, 0x9d, 0x6b, 0x50, 0x61, + 0x02, 0x34, 0x03, 0x9a, 0x81, 0x18, 0x03, 0x31, 0x06, 0x62, 0x0c, 0xc4, 0x18, 0x40, 0x4b, 0x56, + 0xa0, 0x05, 0x15, 0x26, 0x80, 0x2f, 0xc0, 0x17, 0xbc, 0xd6, 0x00, 0x29, 0x06, 0x52, 0x0c, 0xa4, + 0x18, 0x48, 0x31, 0x79, 0xa0, 0x1a, 0x54, 0x98, 0x00, 0xcb, 0x80, 0x65, 0x20, 0xc5, 0x40, 0x8a, + 0x81, 0x14, 0x03, 0x29, 0x06, 0xd0, 0x92, 0x11, 0x68, 0x41, 0x85, 0x09, 0xe0, 0x0b, 0xf0, 0x05, + 0x52, 0x0c, 0xa4, 0x18, 0x48, 0x31, 0x90, 0x62, 0x20, 0xc5, 0xa4, 0x8d, 0x6a, 0xf6, 0xa4, 0xc2, + 0x84, 0x72, 0x01, 0x84, 0x02, 0x65, 0xa1, 0x89, 0x9b, 0xc1, 0xdd, 0x5c, 0x38, 0x66, 0x78, 0x39, + 0xbe, 0x97, 0x14, 0x94, 0x9b, 0xf0, 0xb9, 0x67, 0x0c, 0x7a, 0xd0, 0x75, 0x4c, 0xcf, 0x62, 0x86, + 0xe5, 0xdb, 0x4c, 0xbe, 0xde, 0xc4, 0xaa, 0xc6, 0xe4, 0x0a, 0x4e, 0x94, 0x50, 0x70, 0x62, 0x17, + 0x3c, 0xba, 0x8f, 0x05, 0x27, 0xa4, 0x69, 0x73, 0xfa, 0xf6, 0x82, 0xcd, 0x3c, 0xee, 0xf0, 0xf7, + 0x80, 0x75, 0x64, 0x06, 0x7f, 0x22, 0x8f, 0x49, 0xc4, 0xc3, 0xe2, 0xf5, 0xf8, 0xab, 0x2f, 0xcc, + 0x90, 0x20, 0xdd, 0xbc, 0x6f, 0xdd, 0xb5, 0x6b, 0x8d, 0xc6, 0xcd, 0xf5, 0x65, 0xad, 0x75, 0x7d, + 0x7f, 0xd7, 0xbe, 0xbc, 0xbf, 0xaa, 0xcb, 0xce, 0xa4, 0x61, 0xe0, 0x0f, 0x95, 0x08, 0x55, 0x31, + 0x49, 0x9b, 0x3c, 0x55, 0xa3, 0x7c, 0x53, 0x6e, 0x57, 0xae, 0x2a, 0x0a, 0xe9, 0xcf, 0x87, 0x5d, + 0x3f, 0xc3, 0x60, 0x64, 0xbe, 0xdd, 0x5d, 0xd5, 0x3f, 0x5f, 0xdf, 0xd5, 0xaf, 0xb2, 0xfc, 0x20, + 0xe3, 0xc1, 0x28, 0x67, 0xfb, 0x19, 0x9a, 0xaa, 0x13, 0xea, 0x20, 0x19, 0x3a, 0xfc, 0x99, 0x06, + 0xc2, 0xe8, 0xf3, 0x69, 0x99, 0x2f, 0x79, 0xb4, 0x98, 0x6d, 0x05, 0x45, 0xac, 0xc0, 0x14, 0x28, + 0x62, 0xb5, 0x76, 0xee, 0xa0, 0x88, 0x15, 0x04, 0x63, 0x65, 0xe3, 0xc2, 0x7a, 0xb7, 0xaa, 0x84, + 0x86, 0xf5, 0xee, 0x65, 0xa5, 0x12, 0xeb, 0xdd, 0x4a, 0xc2, 0x22, 0xd6, 0xbb, 0x77, 0x3e, 0x04, + 0x58, 0xef, 0x5e, 0xea, 0x66, 0x14, 0xb1, 0x02, 0xbc, 0x00, 0x5e, 0x00, 0x2f, 0x80, 0x17, 0xc0, + 0x0b, 0xe0, 0x05, 0xf0, 0x92, 0x31, 0x78, 0x41, 0x11, 0x2b, 0xe0, 0x0b, 0xf0, 0x05, 0x45, 0xac, + 0x66, 0x9b, 0xc0, 0x76, 0x3d, 0xfd, 0x1e, 0x0b, 0x10, 0x93, 0xde, 0x21, 0xc0, 0x76, 0xbd, 0xac, + 0x73, 0x0d, 0x8a, 0x58, 0x81, 0x66, 0x40, 0x33, 0x10, 0x63, 0x20, 0xc6, 0x40, 0x8c, 0x81, 0x18, + 0x03, 0x68, 0xc9, 0x0a, 0xb4, 0xa0, 0x88, 0x15, 0xf0, 0x05, 0xf8, 0x82, 0x37, 0x27, 0x21, 0xc5, + 0x40, 0x8a, 0x81, 0x14, 0x03, 0x29, 0x26, 0x0f, 0x54, 0x83, 0x22, 0x56, 0x60, 0x19, 0xb0, 0x0c, + 0xa4, 0x18, 0x48, 0x31, 0x90, 0x62, 0x20, 0xc5, 0x00, 0x5a, 0x32, 0x02, 0x2d, 0x28, 0x62, 0x05, + 0x7c, 0x01, 0xbe, 0x40, 0x8a, 0x81, 0x14, 0x03, 0x29, 0x06, 0x52, 0x0c, 0xa4, 0x98, 0xb4, 0x51, + 0xcd, 0x9e, 0x14, 0xb1, 0x52, 0x28, 0x7d, 0x50, 0xa0, 0x2c, 0x5f, 0x75, 0x3f, 0xbc, 0x8f, 0xc6, + 0xf0, 0x36, 0x52, 0x50, 0x57, 0xa2, 0xe7, 0x87, 0xdc, 0xe8, 0x30, 0xcb, 0x78, 0x56, 0xa9, 0x2b, + 0x31, 0xd7, 0x0a, 0xea, 0x4a, 0xe8, 0xc7, 0x4f, 0xd4, 0x95, 0x50, 0x70, 0x4a, 0xa8, 0x2b, 0x91, + 0x8e, 0x1c, 0xce, 0xef, 0x71, 0xe4, 0x71, 0xd2, 0x06, 0x36, 0xed, 0x3d, 0x48, 0xd1, 0x0a, 0xc6, + 0x44, 0x2b, 0x45, 0x97, 0xcf, 0x90, 0xc8, 0xad, 0xee, 0x67, 0x68, 0xd1, 0x3b, 0x4f, 0xe4, 0xa0, + 0x45, 0xe7, 0x27, 0x6b, 0x43, 0x81, 0x09, 0x50, 0x0c, 0x28, 0x06, 0x14, 0x03, 0x8a, 0x01, 0xc5, + 0x80, 0x62, 0x40, 0x31, 0x7b, 0x44, 0x31, 0xa8, 0x34, 0xa1, 0x85, 0x63, 0xc0, 0x30, 0xb2, 0x0c, + 0x83, 0x4a, 0x13, 0xa8, 0x34, 0x91, 0x25, 0x88, 0xc1, 0x9a, 0xfa, 0xce, 0x21, 0x06, 0x6b, 0xea, + 0xe0, 0x9a, 0xf9, 0x6e, 0x46, 0xa5, 0x09, 0xa8, 0x32, 0x50, 0x65, 0xa0, 0xca, 0x40, 0x95, 0x81, + 0x2a, 0x03, 0x55, 0x06, 0xaa, 0x4c, 0xe6, 0xe8, 0x05, 0x25, 0x27, 0xa0, 0xca, 0x40, 0x95, 0xc1, + 0x7b, 0x0e, 0xd0, 0x64, 0xa0, 0xc9, 0x40, 0x93, 0x81, 0x26, 0x93, 0x07, 0xaa, 0x41, 0xc9, 0x09, + 0x68, 0x32, 0xd0, 0x64, 0xa0, 0xc9, 0x40, 0x93, 0x81, 0x26, 0x03, 0x4d, 0x06, 0x9a, 0x4c, 0xd6, + 0xe8, 0x05, 0xb5, 0x27, 0xa0, 0xc9, 0x40, 0x93, 0x81, 0x26, 0x03, 0x4d, 0x06, 0x9a, 0x0c, 0x34, + 0x19, 0x68, 0x32, 0x69, 0xa3, 0x9a, 0x3d, 0xa9, 0x3d, 0xa1, 0x50, 0x1e, 0xa1, 0x40, 0x59, 0x7b, + 0xa2, 0xe1, 0x87, 0xfc, 0x33, 0xb3, 0x2e, 0x52, 0x52, 0x7a, 0x22, 0x60, 0x04, 0x95, 0x27, 0x66, + 0x1a, 0x41, 0xe1, 0x09, 0xfd, 0xec, 0x89, 0xc2, 0x13, 0x0a, 0x1e, 0x09, 0x85, 0x27, 0x20, 0x44, + 0x67, 0x3f, 0x89, 0x83, 0x10, 0x0d, 0x21, 0x3a, 0x43, 0x59, 0x1c, 0x84, 0xe8, 0x9d, 0x67, 0x71, + 0x10, 0xa2, 0xf3, 0x93, 0xb2, 0xa1, 0xf0, 0x04, 0x28, 0x06, 0x14, 0x03, 0x8a, 0x01, 0xc5, 0x80, + 0x62, 0x40, 0x31, 0xa0, 0x98, 0x3d, 0xa2, 0x18, 0x14, 0x9e, 0xd0, 0xc2, 0x31, 0x60, 0x18, 0x59, + 0x86, 0x41, 0xe1, 0x09, 0x14, 0x9e, 0xc8, 0x12, 0xc4, 0x60, 0x41, 0x7d, 0xe7, 0x10, 0x83, 0x05, + 0x75, 0x70, 0xcd, 0x7c, 0x37, 0xa3, 0xf0, 0x04, 0x54, 0x19, 0xa8, 0x32, 0x50, 0x65, 0xa0, 0xca, + 0x40, 0x95, 0x81, 0x2a, 0x03, 0x55, 0x26, 0x73, 0xf4, 0x82, 0xc2, 0x13, 0x50, 0x65, 0xa0, 0xca, + 0xe0, 0x25, 0x07, 0x68, 0x32, 0xd0, 0x64, 0xa0, 0xc9, 0x40, 0x93, 0xc9, 0x03, 0xd5, 0xa0, 0xf0, + 0x04, 0x34, 0x19, 0x68, 0x32, 0xd0, 0x64, 0xa0, 0xc9, 0x40, 0x93, 0x81, 0x26, 0x03, 0x4d, 0x26, + 0x6b, 0xf4, 0x82, 0xc2, 0x13, 0xd0, 0x64, 0xa0, 0xc9, 0x40, 0x93, 0x81, 0x26, 0x03, 0x4d, 0x06, + 0x9a, 0x0c, 0x34, 0x99, 0xb4, 0x51, 0xcd, 0xbe, 0x14, 0x9e, 0x90, 0xae, 0x8e, 0x50, 0x20, 0xad, + 0x3b, 0x11, 0xb0, 0x54, 0x95, 0x9d, 0x08, 0x99, 0xc4, 0xdb, 0x68, 0xb3, 0x25, 0x27, 0x86, 0x0d, + 0xc8, 0x95, 0x9b, 0x28, 0xa1, 0xdc, 0xc4, 0x2e, 0x48, 0x73, 0x1f, 0xcb, 0x4d, 0x48, 0x73, 0x64, + 0x34, 0xfe, 0xcc, 0xeb, 0x77, 0x59, 0x30, 0x72, 0x65, 0x12, 0x83, 0x3f, 0x51, 0xbe, 0xaa, 0x12, + 0xd7, 0xd6, 0xbd, 0x7e, 0x77, 0x70, 0xf3, 0x3f, 0x53, 0xe0, 0x32, 0x42, 0x16, 0x38, 0xa6, 0x6b, + 0x78, 0xbe, 0xbc, 0xd3, 0x98, 0x36, 0x01, 0xb7, 0x01, 0xb7, 0x91, 0x73, 0xb7, 0x11, 0xf2, 0xc0, + 0xf1, 0x5e, 0x54, 0x3c, 0x86, 0x44, 0xaa, 0x59, 0xbc, 0x61, 0xde, 0xcb, 0x10, 0x99, 0xe4, 0x72, + 0x42, 0x85, 0x74, 0x9b, 0x22, 0x07, 0x24, 0x4a, 0x3c, 0xa6, 0x09, 0x87, 0x62, 0x3b, 0x84, 0x59, + 0x85, 0x42, 0x8e, 0x47, 0x92, 0xdb, 0x91, 0x77, 0xed, 0x49, 0x8a, 0xfa, 0x36, 0xa1, 0x8c, 0xe9, + 0x29, 0x0d, 0x61, 0xd8, 0xf7, 0x18, 0x37, 0x42, 0xfb, 0xd5, 0x18, 0xe4, 0x3c, 0xae, 0x63, 0x7a, + 0x16, 0x33, 0x2c, 0xdf, 0x66, 0x0a, 0x61, 0x79, 0x6d, 0x93, 0x08, 0xd3, 0x08, 0xd3, 0x39, 0x0f, + 0xd3, 0x8e, 0xcd, 0x3c, 0xee, 0xf0, 0xf7, 0x80, 0x75, 0x54, 0x62, 0xb5, 0x84, 0x8e, 0x55, 0xbc, + 0x1e, 0x7f, 0xf5, 0x85, 0x19, 0x12, 0x2c, 0x13, 0x35, 0xef, 0xef, 0xea, 0xad, 0x76, 0xad, 0xd1, + 0xb8, 0xb9, 0xbe, 0xac, 0xb5, 0xae, 0xef, 0xef, 0xda, 0x97, 0xf7, 0x57, 0x75, 0xd9, 0xb9, 0x34, + 0x74, 0xf3, 0xa1, 0x92, 0xb6, 0xac, 0x18, 0xaf, 0xe6, 0x9f, 0xeb, 0xdb, 0xdd, 0x55, 0xfd, 0xf3, + 0xf5, 0x5d, 0xfd, 0xaa, 0xb8, 0x8b, 0x08, 0x4c, 0xf4, 0x28, 0xff, 0x6c, 0x3e, 0x54, 0x4a, 0xa5, + 0x52, 0xfb, 0xe8, 0xe1, 0x28, 0x1f, 0x8f, 0x71, 0x9c, 0x8f, 0xc7, 0xa8, 0x24, 0xbd, 0x28, 0xf6, + 0xa4, 0xdb, 0x8d, 0x6a, 0x41, 0x8f, 0x37, 0xe6, 0xd9, 0xbe, 0x42, 0x99, 0xda, 0xf1, 0xf5, 0x80, + 0x0a, 0x40, 0x05, 0x72, 0x7f, 0xe4, 0xfe, 0xc8, 0xfd, 0x91, 0xfb, 0x23, 0xf7, 0x17, 0x0f, 0xc0, + 0x46, 0xcf, 0x0c, 0xb8, 0x6a, 0x14, 0x1e, 0x35, 0x82, 0x50, 0x8c, 0x50, 0x8c, 0x50, 0x8c, 0x50, + 0x8c, 0x50, 0x8c, 0x50, 0x8c, 0x50, 0x2c, 0x11, 0x8a, 0x03, 0xf6, 0xa6, 0x1c, 0x89, 0x07, 0x6d, + 0x20, 0x10, 0x23, 0x10, 0x23, 0x10, 0x23, 0x10, 0x23, 0x10, 0x67, 0x35, 0x10, 0x57, 0x10, 0x87, + 0xc9, 0xe2, 0xf0, 0x01, 0xe1, 0x04, 0x92, 0xdd, 0x88, 0x4c, 0xb7, 0x01, 0xb9, 0x28, 0xb2, 0xba, + 0x4f, 0xb3, 0xd9, 0x38, 0x5e, 0xf4, 0xd8, 0xde, 0xcf, 0x9b, 0x3f, 0xb1, 0x65, 0x04, 0x44, 0x7b, + 0x9e, 0xa2, 0xc7, 0x63, 0xf4, 0xb5, 0x7a, 0x1f, 0x6f, 0xee, 0xdd, 0xf5, 0x7d, 0xb6, 0xfa, 0x5f, + 0xd6, 0xf4, 0xe2, 0x80, 0x56, 0x46, 0xaf, 0x0a, 0xad, 0x7d, 0xf3, 0xaf, 0x78, 0xe3, 0x84, 0xbc, + 0xc6, 0xf9, 0xe6, 0x25, 0x99, 0x41, 0x20, 0xaa, 0xbb, 0x6c, 0x80, 0x19, 0x03, 0xb7, 0xe2, 0xf5, + 0x5d, 0xf7, 0xc3, 0xc1, 0x26, 0xd7, 0x1a, 0xff, 0xc3, 0xf7, 0x81, 0xcd, 0x02, 0x66, 0x5f, 0xbc, + 0x8f, 0x3f, 0x2a, 0xf4, 0x7c, 0xb5, 0xfe, 0xcb, 0xe0, 0x6b, 0x98, 0xbd, 0x31, 0x38, 0x6f, 0x9e, + 0x36, 0x11, 0x5c, 0x1c, 0xfa, 0x56, 0x34, 0x49, 0x3e, 0xcd, 0x4c, 0x92, 0x95, 0xbf, 0xde, 0x32, + 0x49, 0x8a, 0x57, 0x2c, 0xb4, 0x02, 0xa7, 0x37, 0x9e, 0xb8, 0xc5, 0x9a, 0x6d, 0x3b, 0xde, 0x4b, + 0xc1, 0xef, 0x71, 0xc7, 0x32, 0xdd, 0x82, 0xf5, 0x6a, 0x7a, 0x1e, 0x73, 0x0b, 0xb6, 0xc9, 0xcd, + 0x02, 0xf7, 0x0b, 0xbd, 0xd7, 0xf7, 0x70, 0xf8, 0x0f, 0x8e, 0xf7, 0xc6, 0x3c, 0xee, 0x07, 0xef, + 0xdb, 0xda, 0x8f, 0x77, 0xe6, 0x62, 0x6c, 0x5a, 0x17, 0xa1, 0xf3, 0xa5, 0x82, 0x10, 0x2c, 0xe8, + 0xc6, 0xb1, 0x19, 0x41, 0xf4, 0x96, 0x46, 0x6d, 0x69, 0xb4, 0x5e, 0x59, 0xaf, 0x61, 0xf0, 0x70, + 0x9a, 0x7d, 0x5c, 0xdc, 0xd3, 0x0c, 0x8b, 0xe3, 0xe9, 0x63, 0x8c, 0xa7, 0x4f, 0xfc, 0xae, 0x8c, + 0x46, 0x6c, 0xa1, 0x81, 0x98, 0xfd, 0xb2, 0x30, 0x99, 0xeb, 0x9e, 0xe5, 0xfa, 0xe1, 0x60, 0x3e, + 0x5b, 0xbe, 0xc7, 0x4d, 0xc7, 0x63, 0x41, 0xa1, 0xe3, 0x07, 0x05, 0xfe, 0xca, 0x0a, 0xae, 0x13, + 0xf2, 0x82, 0xdf, 0x59, 0x9c, 0xe9, 0x71, 0x5f, 0x51, 0x14, 0x3c, 0x4b, 0x54, 0x38, 0x1b, 0x95, + 0xc9, 0x42, 0x25, 0xe7, 0xbb, 0x6a, 0xca, 0xa9, 0x9c, 0x6a, 0x2a, 0xa7, 0x98, 0xf2, 0xf6, 0x20, + 0x48, 0x61, 0xaa, 0xf6, 0x75, 0x20, 0x61, 0x79, 0xe9, 0x09, 0x0a, 0x33, 0xe8, 0x91, 0xfd, 0x80, + 0x20, 0xc8, 0x51, 0x99, 0x8b, 0x09, 0x42, 0xf2, 0x4a, 0x42, 0x61, 0x61, 0xf6, 0x9e, 0x84, 0x43, + 0x82, 0xb8, 0x9e, 0xb6, 0x38, 0x8d, 0x5b, 0x7e, 0xcf, 0x70, 0xd9, 0x1b, 0x73, 0x17, 0xc2, 0x81, + 0xe5, 0x3a, 0xcc, 0xe3, 0x85, 0x9e, 0x1f, 0xf0, 0xa5, 0x39, 0x9e, 0x93, 0x70, 0x20, 0x27, 0x46, + 0xe6, 0x27, 0x22, 0x48, 0x89, 0x8d, 0x3b, 0x0f, 0x0a, 0x2b, 0xff, 0xe5, 0x69, 0x5d, 0x8a, 0x11, + 0x2f, 0x01, 0x95, 0x4d, 0x3c, 0x37, 0x8c, 0xa0, 0x5c, 0x92, 0xb9, 0x7a, 0x1c, 0x96, 0x9f, 0x79, + 0xfe, 0x37, 0x0b, 0xbe, 0x68, 0xdb, 0x53, 0x8b, 0x3d, 0xed, 0x8a, 0x67, 0x14, 0x79, 0xb6, 0xf9, + 0x27, 0x9a, 0xde, 0xf7, 0xcc, 0x3d, 0x8f, 0x4e, 0x82, 0xea, 0x98, 0xd6, 0x70, 0xbb, 0xf1, 0xfc, + 0xfd, 0xce, 0x9f, 0x16, 0x35, 0xfa, 0xcc, 0xc2, 0xd3, 0xae, 0xf6, 0x32, 0x6b, 0xbd, 0xc9, 0x26, + 0xaf, 0x31, 0xeb, 0x1d, 0x9c, 0x55, 0xbb, 0xc1, 0xb7, 0x19, 0x7f, 0x6c, 0x23, 0x8f, 0x6d, 0xcc, + 0x8b, 0x46, 0xeb, 0x74, 0x8a, 0x82, 0xb3, 0x61, 0x5d, 0x24, 0x9a, 0x76, 0xe9, 0xfa, 0xc7, 0x59, + 0xea, 0xfd, 0x75, 0x8f, 0xb3, 0xd9, 0xd5, 0x6f, 0x75, 0xed, 0x71, 0x5c, 0xf9, 0xd6, 0xc1, 0x11, + 0xf5, 0xd0, 0xc2, 0x1e, 0x59, 0xd8, 0x03, 0xc7, 0x19, 0x3c, 0x39, 0x6d, 0x68, 0x1b, 0x5e, 0x14, + 0xad, 0x49, 0x8f, 0xc7, 0x44, 0xe5, 0xf1, 0xe7, 0xb3, 0xc1, 0xa9, 0x4e, 0x27, 0x97, 0x78, 0xba, + 0x69, 0x7a, 0x24, 0x4c, 0xa5, 0xf6, 0x1c, 0x25, 0x0a, 0x52, 0xe9, 0xec, 0xc5, 0x62, 0xa8, 0x58, + 0x4a, 0x29, 0x2a, 0x3a, 0x9d, 0xbd, 0x24, 0xc4, 0x38, 0x13, 0x52, 0xcf, 0x9a, 0x8d, 0xf0, 0x6a, + 0xb3, 0xfc, 0x2a, 0xf3, 0x74, 0x75, 0x99, 0x0a, 0x6d, 0x63, 0xf8, 0x26, 0xe6, 0x99, 0xcf, 0xee, + 0x50, 0xf9, 0x16, 0xb4, 0xad, 0xc9, 0x85, 0xb1, 0xb3, 0xbd, 0x8e, 0xd9, 0x77, 0xf9, 0x28, 0x57, + 0xec, 0x33, 0x98, 0x23, 0xcc, 0x31, 0x59, 0x73, 0x7c, 0xf6, 0x7d, 0x97, 0x99, 0x9e, 0x8c, 0x3d, + 0x96, 0x13, 0xb4, 0x47, 0xd7, 0xf7, 0x7b, 0xcf, 0xa6, 0xf5, 0xdd, 0xe8, 0x8a, 0xbc, 0x48, 0x1d, + 0x3d, 0xe5, 0xfc, 0xe5, 0xe2, 0xb6, 0xd9, 0x31, 0xdd, 0x10, 0xc6, 0x09, 0xe3, 0x84, 0x71, 0xae, + 0xfa, 0xce, 0x2e, 0xef, 0x8b, 0x9b, 0xe4, 0xe0, 0x22, 0x18, 0x14, 0x0c, 0x2a, 0x51, 0x83, 0xea, + 0x3b, 0x1e, 0x2f, 0x9f, 0x48, 0xd8, 0x93, 0xc0, 0x26, 0x6e, 0xc9, 0xa2, 0xaf, 0x12, 0x1b, 0x37, + 0x55, 0x36, 0x30, 0xaa, 0x16, 0x9d, 0x56, 0x2c, 0xda, 0x4a, 0xb1, 0x9b, 0x4e, 0xa6, 0xe8, 0xb7, + 0xca, 0xc6, 0x44, 0xaa, 0x2e, 0x3b, 0x39, 0x3e, 0x3e, 0x3a, 0xde, 0x61, 0xb7, 0x69, 0xda, 0x14, + 0xf8, 0x94, 0x60, 0xc4, 0x19, 0x4b, 0xdb, 0x82, 0x21, 0x67, 0xc3, 0x4e, 0x2d, 0xc4, 0x1c, 0xc4, + 0x9c, 0xbd, 0x16, 0x3c, 0xb8, 0xc8, 0xf3, 0x4d, 0xd7, 0xb7, 0x07, 0x57, 0xc1, 0xa2, 0x60, 0x51, + 0x89, 0x5a, 0x94, 0x5c, 0x45, 0x28, 0x99, 0x4a, 0x50, 0x6a, 0x15, 0xa0, 0x96, 0x97, 0xe7, 0x86, + 0x27, 0x3c, 0xa4, 0x6e, 0x31, 0x7f, 0xcb, 0xa2, 0x44, 0xfd, 0x07, 0x8f, 0x57, 0x67, 0x4a, 0x7c, + 0x1d, 0xc7, 0xb7, 0x0c, 0xf6, 0x83, 0x7f, 0xe2, 0xcc, 0x65, 0x5d, 0xc6, 0x83, 0x77, 0xc3, 0xf7, + 0x86, 0xdb, 0x27, 0x5f, 0x98, 0xdc, 0xda, 0xce, 0x50, 0xa7, 0x91, 0x58, 0xdc, 0x51, 0x5d, 0xd7, + 0x79, 0x4a, 0x6c, 0xa3, 0xfd, 0x74, 0x9d, 0xfd, 0x70, 0xd5, 0x8f, 0x87, 0xb1, 0xd6, 0x09, 0x0b, + 0x9b, 0x36, 0x09, 0x5c, 0x47, 0xcd, 0xb6, 0x57, 0xfd, 0xd8, 0x1e, 0x3b, 0x66, 0xfa, 0x4d, 0x83, + 0x45, 0xc6, 0x5f, 0x59, 0xe0, 0x31, 0x1e, 0x7f, 0x55, 0x34, 0xba, 0x22, 0x1b, 0xeb, 0xa2, 0x8c, + 0xbf, 0xe6, 0x72, 0x61, 0x74, 0xf0, 0x5c, 0x69, 0x59, 0x19, 0x8d, 0xb9, 0xb0, 0xbe, 0x34, 0x3c, + 0xb1, 0x0d, 0xa7, 0x90, 0x81, 0xad, 0x73, 0xf1, 0x26, 0x5a, 0xfe, 0x68, 0x26, 0xd6, 0x44, 0xd4, + 0x83, 0x33, 0x71, 0x27, 0x68, 0x74, 0x81, 0xd9, 0xe7, 0xbe, 0xe1, 0xb1, 0x17, 0x9f, 0x3b, 0x26, + 0x57, 0x80, 0x8b, 0x85, 0x76, 0x04, 0x3b, 0x50, 0x6e, 0x01, 0x52, 0x51, 0x12, 0xd9, 0xf9, 0x7b, + 0xee, 0x62, 0xf6, 0xa1, 0x6a, 0x27, 0x64, 0xf6, 0x42, 0x66, 0x37, 0x24, 0xf6, 0x23, 0x29, 0x28, + 0x25, 0xfe, 0x5e, 0xbb, 0xf8, 0x2a, 0xca, 0x92, 0x9b, 0x2f, 0xa7, 0xa0, 0xa0, 0x85, 0xdd, 0xef, + 0xb9, 0xec, 0x87, 0xd8, 0x02, 0xe8, 0x52, 0x5f, 0xcc, 0x36, 0x02, 0x53, 0x87, 0xa9, 0xe7, 0xcc, + 0xd4, 0x71, 0x12, 0x4c, 0x61, 0xba, 0x7b, 0xc9, 0xe8, 0xb8, 0xfe, 0x5f, 0x86, 0xe5, 0x7b, 0x3c, + 0xf0, 0x5d, 0x79, 0x97, 0xb1, 0xaa, 0x31, 0x79, 0xc8, 0x10, 0xd9, 0x49, 0x01, 0xd7, 0x03, 0xd7, + 0x03, 0xca, 0x48, 0xd6, 0x75, 0x74, 0x4d, 0xcb, 0x30, 0x6d, 0x3b, 0x60, 0x61, 0x28, 0xef, 0x32, + 0x66, 0x1b, 0x81, 0xa9, 0xc3, 0xd4, 0x73, 0x66, 0xea, 0xf2, 0xd3, 0xbb, 0xa0, 0x5a, 0x2d, 0xab, + 0x61, 0x72, 0xce, 0x02, 0x4f, 0xba, 0x5c, 0x56, 0xf1, 0xbf, 0xff, 0x2c, 0x19, 0xe7, 0xa6, 0xd1, + 0xa9, 0x19, 0x9f, 0x9f, 0xfe, 0xae, 0xfc, 0xfc, 0xe5, 0xd3, 0xfc, 0xdf, 0x7f, 0xfd, 0xfb, 0xf8, + 0xe7, 0x7f, 0x14, 0x33, 0x59, 0xf0, 0xaf, 0xe7, 0x07, 0xdc, 0x08, 0x7b, 0x4c, 0x60, 0xd7, 0xf6, + 0xd2, 0xc8, 0xce, 0xb4, 0x01, 0xbf, 0x05, 0xbf, 0x95, 0x33, 0xbf, 0x95, 0x9b, 0x93, 0x74, 0xea, + 0xad, 0xaf, 0xf5, 0x87, 0xbb, 0x7a, 0xab, 0xdd, 0x6c, 0xd4, 0xeb, 0x57, 0x39, 0x38, 0x41, 0x67, + 0xf0, 0x18, 0xed, 0x72, 0xa9, 0xf4, 0xe5, 0x22, 0xcb, 0xe7, 0xb5, 0x8c, 0x1e, 0xe3, 0x38, 0x17, + 0x4f, 0x51, 0x2e, 0x95, 0x6e, 0xf3, 0xf0, 0x18, 0x79, 0x18, 0x8b, 0xca, 0x71, 0x3e, 0x66, 0x54, + 0x2e, 0x26, 0x54, 0x2e, 0xac, 0xfb, 0xdb, 0xdd, 0x6f, 0x77, 0xf7, 0xbf, 0xdf, 0xe5, 0xc0, 0xd9, + 0xe6, 0xc3, 0xbe, 0xf3, 0xe1, 0x6c, 0xab, 0x6a, 0xb6, 0x91, 0xf5, 0x83, 0xca, 0x52, 0x5e, 0x14, + 0x76, 0xdb, 0xce, 0xa9, 0xc9, 0x5e, 0xa2, 0x43, 0xa1, 0x9d, 0x20, 0x05, 0x95, 0xad, 0x54, 0xf5, + 0xf1, 0x57, 0xc6, 0xda, 0x53, 0x15, 0xbf, 0x9f, 0x7f, 0xc6, 0xda, 0xfd, 0x25, 0xb2, 0xe9, 0x60, + 0x66, 0x33, 0x73, 0xfc, 0x3d, 0x06, 0xd2, 0x9b, 0x64, 0x2a, 0xd8, 0x24, 0x43, 0x99, 0xe3, 0x62, + 0x93, 0x0c, 0x36, 0xc9, 0x40, 0x1b, 0x82, 0x36, 0xb4, 0x71, 0xbc, 0x73, 0xb2, 0x7c, 0x65, 0xf9, + 0xfd, 0x41, 0x74, 0x55, 0x58, 0xbb, 0x8a, 0x5a, 0x90, 0x33, 0xf2, 0x32, 0x8c, 0x1c, 0x46, 0xae, + 0xc7, 0xc8, 0x45, 0x83, 0x67, 0x74, 0xa1, 0xe3, 0x19, 0x67, 0xa5, 0x4a, 0xf9, 0x7f, 0x8c, 0x4e, + 0x60, 0x76, 0x59, 0xa8, 0xae, 0xbf, 0x2e, 0x36, 0xf8, 0x61, 0x27, 0xef, 0xd3, 0xca, 0x9a, 0x0e, + 0x85, 0x09, 0xd1, 0x99, 0x12, 0x95, 0x49, 0x91, 0x9b, 0x16, 0xb9, 0x89, 0x91, 0x9a, 0x9a, 0x5a, + 0xd6, 0x2c, 0xa9, 0x18, 0xc8, 0xc7, 0xd9, 0x75, 0x61, 0xe6, 0xa4, 0xaa, 0x32, 0x65, 0xc6, 0x06, + 0x74, 0xa6, 0xd0, 0x84, 0x5c, 0xb1, 0x02, 0x5a, 0x19, 0xa5, 0x40, 0x75, 0x1a, 0x13, 0x91, 0x67, + 0x59, 0x6a, 0x4e, 0xb1, 0xd8, 0xc1, 0x52, 0x7b, 0x84, 0x47, 0x09, 0x11, 0x68, 0x60, 0xd3, 0x21, + 0x20, 0x38, 0xb5, 0x49, 0xf7, 0x10, 0x94, 0xcf, 0xaa, 0xd5, 0x93, 0xd3, 0x6a, 0xb5, 0x74, 0x7a, + 0x74, 0x5a, 0x3a, 0x3f, 0x3e, 0x2e, 0x9f, 0x94, 0x8f, 0x53, 0x3c, 0x2a, 0x07, 0xbb, 0xb9, 0xfa, + 0x29, 0xa1, 0x03, 0xa6, 0x64, 0x4a, 0x70, 0x38, 0x9e, 0xf1, 0xec, 0xfa, 0xd6, 0x77, 0x83, 0x05, + 0x81, 0x1f, 0xd0, 0xd0, 0xc8, 0x5c, 0x83, 0xa0, 0x11, 0xd0, 0x08, 0x68, 0x04, 0x34, 0x02, 0x1a, + 0x01, 0x8d, 0x80, 0x46, 0x40, 0x23, 0xdb, 0x68, 0xc4, 0x0a, 0x2c, 0x4a, 0x16, 0x99, 0x69, 0x0e, + 0x24, 0x02, 0x12, 0x01, 0x89, 0x80, 0x44, 0x40, 0x22, 0x20, 0x11, 0x90, 0x08, 0x48, 0x64, 0x1b, + 0x89, 0x74, 0x02, 0x73, 0x78, 0xe4, 0x2e, 0xe5, 0x42, 0xcd, 0x62, 0x9b, 0x60, 0x12, 0x30, 0x09, + 0x98, 0x04, 0x4c, 0x02, 0x26, 0x01, 0x93, 0x80, 0x49, 0xc0, 0x24, 0xdb, 0x98, 0xe4, 0xff, 0x9a, + 0xcf, 0xcf, 0x2c, 0xa0, 0x24, 0x92, 0xf9, 0x16, 0xc1, 0x23, 0xe0, 0x11, 0xf0, 0x08, 0x78, 0x04, + 0x3c, 0x02, 0x1e, 0x01, 0x8f, 0x80, 0x47, 0xb6, 0xf1, 0x48, 0xd7, 0xb4, 0x26, 0x65, 0xc8, 0x28, + 0xa1, 0x64, 0x45, 0xb3, 0x20, 0x13, 0x90, 0x09, 0xc8, 0x04, 0x64, 0x02, 0x32, 0x01, 0x99, 0x80, + 0x4c, 0x40, 0x26, 0x71, 0xc8, 0xa4, 0x67, 0xf6, 0x43, 0x46, 0xcd, 0x25, 0x73, 0x8d, 0x82, 0x4a, + 0x40, 0x25, 0xa0, 0x12, 0x50, 0x09, 0xa8, 0x04, 0x54, 0x02, 0x2a, 0x01, 0x95, 0x6c, 0xa3, 0x12, + 0xff, 0x8d, 0x05, 0xa1, 0xf3, 0x6f, 0x52, 0x28, 0x59, 0x6c, 0x13, 0x4c, 0x02, 0x26, 0x01, 0x93, + 0x80, 0x49, 0xc0, 0x24, 0x60, 0x12, 0x30, 0x09, 0x98, 0x64, 0x1b, 0x93, 0xf4, 0x3d, 0x9b, 0x1e, + 0x4a, 0x96, 0x1a, 0x05, 0x95, 0x80, 0x4a, 0x40, 0x25, 0xa0, 0x12, 0x50, 0x09, 0xa8, 0x04, 0x54, + 0x02, 0x2a, 0xd9, 0xd8, 0xcd, 0x7e, 0x9f, 0x13, 0x17, 0x49, 0x5b, 0x6a, 0x11, 0x3c, 0x02, 0x1e, + 0x01, 0x8f, 0x80, 0x47, 0xc0, 0x23, 0xe0, 0x11, 0xf0, 0x08, 0x78, 0x64, 0x2b, 0x8f, 0xe8, 0xd8, + 0xea, 0xba, 0xa6, 0x5d, 0xb0, 0x09, 0xd8, 0x04, 0x6c, 0x02, 0x36, 0x01, 0x9b, 0x80, 0x4d, 0xc0, + 0x26, 0x60, 0x93, 0x58, 0x6c, 0x42, 0xbb, 0xd9, 0x75, 0x65, 0xab, 0xe0, 0x12, 0x70, 0x09, 0xb8, + 0x04, 0x5c, 0x02, 0x2e, 0x01, 0x97, 0x80, 0x4b, 0xf6, 0x89, 0x4b, 0xb4, 0x1e, 0xa5, 0x23, 0x79, + 0xba, 0x64, 0x74, 0x3d, 0xc1, 0x29, 0x93, 0xc3, 0x93, 0x14, 0x0f, 0x25, 0x4f, 0x9b, 0x2a, 0x90, + 0x9c, 0x3a, 0xd9, 0x1c, 0xdc, 0x42, 0xfb, 0x72, 0x72, 0x0b, 0x29, 0x38, 0xbe, 0xcb, 0xee, 0xf7, + 0x5c, 0xf6, 0xc3, 0xe8, 0xfa, 0xb6, 0xc2, 0x59, 0x7f, 0xb3, 0x8d, 0xe0, 0xa4, 0x3e, 0x7d, 0x5c, + 0x88, 0x43, 0xbc, 0x76, 0x72, 0x52, 0x1f, 0xf3, 0xfa, 0x5d, 0x16, 0x8c, 0x9c, 0x97, 0xc2, 0x69, + 0x7d, 0x55, 0x89, 0x6b, 0xeb, 0x5e, 0xbf, 0x3b, 0xb8, 0xf9, 0x9f, 0x29, 0x70, 0x15, 0xcc, 0x33, + 0x9f, 0x5d, 0x66, 0x74, 0x5c, 0xff, 0xaf, 0x89, 0x98, 0x2d, 0xef, 0x32, 0x56, 0x35, 0x26, 0x7f, + 0x46, 0x68, 0xc7, 0x74, 0x43, 0xb8, 0x1e, 0xb8, 0x1e, 0x1c, 0x12, 0xba, 0xec, 0x76, 0xd2, 0x70, + 0x48, 0xe8, 0xeb, 0x5f, 0x43, 0xa1, 0xc9, 0xb4, 0xed, 0x80, 0x85, 0x0a, 0x47, 0x85, 0x2e, 0xb4, + 0x03, 0x83, 0x87, 0xc1, 0xe7, 0xcc, 0xe0, 0xe5, 0xa7, 0xf7, 0x9c, 0xd1, 0x4b, 0xc8, 0x48, 0xc5, + 0x86, 0xc9, 0x39, 0x0b, 0x3c, 0x69, 0x01, 0xa9, 0xf8, 0xdf, 0x7f, 0x96, 0x8c, 0x73, 0xd3, 0xe8, + 0xd4, 0x8c, 0xcf, 0x4f, 0x7f, 0x57, 0x7e, 0xfe, 0xf2, 0x69, 0xfe, 0xef, 0xbf, 0xfe, 0x7d, 0xfc, + 0xf3, 0x3f, 0xc4, 0x47, 0xec, 0x29, 0x05, 0xfe, 0x8b, 0xc4, 0x79, 0xc1, 0x73, 0xc1, 0x73, 0xc1, + 0x73, 0xc1, 0x73, 0x25, 0xea, 0xb9, 0x3c, 0xf6, 0xe2, 0x73, 0xc7, 0xe4, 0xcc, 0x36, 0x48, 0xa4, + 0x9e, 0x35, 0xed, 0xc1, 0x9f, 0xc1, 0x9f, 0x41, 0xf5, 0xc9, 0xa3, 0xea, 0x33, 0x63, 0xf0, 0x3d, + 0x3f, 0xe0, 0x46, 0xd8, 0x63, 0xcc, 0x26, 0xf1, 0x1f, 0x33, 0xcd, 0xc1, 0x7d, 0xc0, 0x7d, 0xe4, + 0xcc, 0x7d, 0x38, 0x36, 0xf3, 0xb8, 0xc3, 0xdf, 0x03, 0xd6, 0x51, 0x71, 0x1f, 0x12, 0x0b, 0xa2, + 0xc5, 0xeb, 0xf1, 0x57, 0x5f, 0x98, 0x21, 0x53, 0xdf, 0x25, 0x54, 0x6f, 0x7d, 0xad, 0x3f, 0xdc, + 0xd5, 0x5b, 0xed, 0x66, 0xa3, 0x5e, 0xbf, 0x92, 0x9d, 0x3b, 0xc3, 0x35, 0xdf, 0x50, 0x69, 0x73, + 0x82, 0xe2, 0x5e, 0x9a, 0xc9, 0xf3, 0x0c, 0x1f, 0xa3, 0x5d, 0x2e, 0x95, 0xbe, 0x5c, 0x28, 0x6c, + 0x55, 0xf9, 0x90, 0x8e, 0xc7, 0x38, 0xce, 0xc5, 0x53, 0x94, 0x4b, 0xa5, 0xdb, 0x3c, 0x3c, 0x46, + 0x1e, 0xc6, 0xa2, 0x72, 0x9c, 0x8f, 0x19, 0x95, 0x8b, 0x09, 0x95, 0x0b, 0xeb, 0xfe, 0x76, 0xf7, + 0xdb, 0xdd, 0xfd, 0xef, 0x77, 0x39, 0x70, 0xb6, 0xf9, 0xb0, 0xef, 0x7c, 0x38, 0xdb, 0xaa, 0x9a, + 0x6d, 0x48, 0x5d, 0xf9, 0xa4, 0x9b, 0x52, 0xb5, 0x64, 0x70, 0x14, 0x69, 0x1b, 0x72, 0x35, 0xe4, + 0x6a, 0xc8, 0xd5, 0x90, 0xab, 0x21, 0x57, 0x43, 0xae, 0x86, 0x5c, 0x0d, 0xb9, 0x1a, 0x72, 0x35, + 0xe4, 0x6a, 0xc8, 0xd5, 0x90, 0xab, 0x21, 0x57, 0xa3, 0xfa, 0x64, 0xcc, 0xb1, 0x92, 0x7d, 0x91, + 0x86, 0xec, 0x05, 0x1a, 0x01, 0xa8, 0x24, 0x7a, 0x5f, 0x26, 0xde, 0xcc, 0xd9, 0xde, 0xcb, 0x9b, + 0x3f, 0xb1, 0xa5, 0xff, 0x45, 0xfb, 0x9d, 0xa0, 0xbf, 0x63, 0xf4, 0xb4, 0x72, 0x0f, 0x6f, 0xee, + 0xdb, 0xf5, 0x3d, 0xb6, 0xa1, 0xb7, 0x8a, 0xaf, 0xbe, 0x6b, 0x1b, 0xdc, 0xe9, 0x6e, 0xcf, 0x67, + 0xa6, 0xfb, 0x7a, 0xa3, 0x4b, 0xb6, 0x8c, 0xc2, 0x24, 0xd5, 0xda, 0xf2, 0xb1, 0xb8, 0xea, 0x81, + 0x88, 0x5a, 0x30, 0xab, 0x0e, 0x38, 0x71, 0xf2, 0x44, 0x51, 0x31, 0x40, 0x3a, 0xf9, 0x97, 0x4e, + 0xf6, 0x17, 0x93, 0x7b, 0xa7, 0x53, 0xd4, 0x6c, 0x45, 0x57, 0x4e, 0x10, 0xaf, 0xb3, 0xad, 0xc9, + 0x08, 0xc6, 0xec, 0xbb, 0xe9, 0xbb, 0xd8, 0xc3, 0xeb, 0x62, 0x3e, 0x7f, 0xbc, 0xe9, 0x24, 0x2d, + 0x4a, 0xc9, 0x88, 0x51, 0xc2, 0xd3, 0x4c, 0x55, 0x7b, 0x52, 0xd6, 0x9c, 0x94, 0xb5, 0x26, 0x99, + 0x69, 0xa8, 0x27, 0xb8, 0xc6, 0x9d, 0x9e, 0xd1, 0x05, 0xb6, 0xff, 0x97, 0xa7, 0xf0, 0xde, 0xe4, + 0xe0, 0x6a, 0xf9, 0xb7, 0x9e, 0x4a, 0x7b, 0xa2, 0xc5, 0x3a, 0x1d, 0x48, 0xb1, 0x8a, 0x66, 0x92, + 0x15, 0x25, 0xb6, 0xef, 0x78, 0xfc, 0xa8, 0xa2, 0x20, 0xc2, 0x9e, 0x4a, 0x5c, 0xaa, 0x56, 0x37, + 0x43, 0xa1, 0x80, 0x08, 0x45, 0x9d, 0x0c, 0xa2, 0xe2, 0x0c, 0x54, 0x75, 0x31, 0x28, 0x2b, 0x2f, + 0x28, 0xa4, 0xaf, 0x24, 0xf5, 0x2f, 0xa8, 0xbb, 0xb6, 0x5a, 0x39, 0xaf, 0x9e, 0x9f, 0x9c, 0x56, + 0xce, 0x8f, 0x53, 0xd4, 0xc7, 0x09, 0x55, 0x97, 0x48, 0xc3, 0x5e, 0xf8, 0x7e, 0x4f, 0x3e, 0x54, + 0xf7, 0x7b, 0x08, 0xd4, 0x08, 0xd4, 0x08, 0xd4, 0x08, 0xd4, 0x08, 0xd4, 0x08, 0xd4, 0x08, 0xd4, + 0xe2, 0x81, 0x9a, 0x34, 0x51, 0xaf, 0xff, 0xe0, 0x62, 0x1b, 0x14, 0xe4, 0x35, 0x11, 0xdf, 0x32, + 0xd8, 0x0f, 0xfe, 0x89, 0x33, 0x97, 0x75, 0x19, 0x0f, 0xde, 0x0d, 0xdf, 0x33, 0xac, 0xd7, 0xa1, + 0x27, 0x52, 0xd2, 0x49, 0x86, 0x35, 0x4b, 0x14, 0x84, 0x12, 0x6a, 0x8d, 0xe4, 0x29, 0xb5, 0x0b, + 0x10, 0x91, 0x3a, 0x7c, 0x28, 0xa4, 0xee, 0x15, 0x54, 0x04, 0xf2, 0xaf, 0xbe, 0x6b, 0xb7, 0x9c, + 0x2e, 0x6b, 0x8f, 0x99, 0x8a, 0x6a, 0x0d, 0x22, 0x96, 0xa6, 0x6f, 0x72, 0x26, 0xae, 0x7c, 0x8a, + 0xac, 0xce, 0x48, 0x0b, 0x9f, 0x15, 0x08, 0x9f, 0x10, 0x3e, 0x21, 0x7c, 0x22, 0x9f, 0x42, 0x3e, + 0x85, 0x7c, 0x0a, 0xf9, 0x14, 0xf2, 0x29, 0xe4, 0x53, 0x10, 0x3e, 0x11, 0xa8, 0x11, 0xa8, 0x11, + 0xa8, 0x11, 0xa8, 0x11, 0xa8, 0x11, 0xa8, 0x11, 0xa8, 0xf5, 0x26, 0xea, 0xbb, 0x54, 0xdf, 0x12, + 0xdb, 0xff, 0x1b, 0x89, 0x6f, 0x7b, 0xb9, 0xff, 0x37, 0xee, 0x66, 0x58, 0x92, 0x2e, 0xd6, 0xb1, + 0x01, 0x78, 0x7c, 0x37, 0x31, 0xf7, 0xfe, 0x0e, 0x3f, 0x1d, 0x6f, 0xdb, 0x6f, 0x09, 0xdb, 0x7e, + 0x29, 0xb0, 0x2d, 0xf9, 0x6d, 0xbf, 0xb1, 0xb1, 0x2b, 0xea, 0x6d, 0x97, 0x99, 0x9d, 0x78, 0xaf, + 0xe3, 0x46, 0x5a, 0x76, 0x0c, 0xb0, 0x2a, 0x36, 0xc6, 0xf6, 0xf8, 0xf1, 0xe3, 0x78, 0x2d, 0xe1, + 0x70, 0x38, 0xfd, 0x34, 0x18, 0x41, 0x3c, 0x15, 0x5f, 0x48, 0xbd, 0x17, 0xde, 0xfd, 0x5e, 0x81, + 0x19, 0xa4, 0xca, 0x0c, 0x62, 0xef, 0x7e, 0x37, 0xed, 0xae, 0xe3, 0x19, 0x83, 0x39, 0xd1, 0x0f, + 0xc5, 0x57, 0x82, 0xe6, 0xae, 0x16, 0x5b, 0x10, 0x2a, 0x61, 0x27, 0x3c, 0x16, 0x84, 0xa4, 0x12, + 0x65, 0xc5, 0xba, 0x99, 0x32, 0xf5, 0x32, 0x05, 0xeb, 0x64, 0x62, 0x6f, 0x41, 0xec, 0xa9, 0x47, + 0xbe, 0xb7, 0x80, 0x64, 0x61, 0x3c, 0x3a, 0xba, 0x4b, 0xe2, 0xad, 0x20, 0xa1, 0x43, 0xbf, 0xf0, + 0x5e, 0x10, 0xbc, 0xa1, 0x54, 0xe0, 0x9e, 0x4e, 0x55, 0x33, 0x08, 0x1c, 0x16, 0x18, 0x3c, 0x30, + 0xbd, 0xd0, 0x19, 0xf8, 0x42, 0x85, 0x83, 0x03, 0x56, 0x35, 0x06, 0x5d, 0x1d, 0xba, 0x7a, 0xae, + 0x74, 0x75, 0x95, 0x43, 0x74, 0x15, 0x0e, 0xcf, 0x85, 0xb4, 0x0e, 0x69, 0x3d, 0x91, 0xae, 0xa5, + 0x3f, 0xec, 0x76, 0x0f, 0x44, 0x76, 0x41, 0x2f, 0x24, 0x4c, 0xee, 0x6a, 0x66, 0xac, 0x85, 0xe4, + 0xe9, 0x88, 0x5e, 0x91, 0xec, 0xe5, 0x06, 0xf9, 0x49, 0xcb, 0x06, 0x06, 0xc7, 0x33, 0x9e, 0x03, + 0xdf, 0xb4, 0x2d, 0x33, 0xe4, 0x46, 0xef, 0x3b, 0x57, 0x80, 0xa9, 0xe5, 0xa6, 0x80, 0x52, 0x40, + 0x29, 0xa0, 0x14, 0x50, 0x0a, 0x28, 0x05, 0x94, 0xc2, 0x7e, 0x05, 0xd1, 0xb8, 0x6c, 0x3b, 0xa1, + 0x65, 0x06, 0xb6, 0x5a, 0x44, 0x8e, 0x1a, 0x41, 0x2c, 0x46, 0x2c, 0x46, 0x2c, 0x46, 0x2c, 0x46, + 0x2c, 0x46, 0x2c, 0x46, 0x2c, 0x16, 0x8d, 0xc5, 0x2c, 0x08, 0xfc, 0x40, 0x2d, 0x12, 0x8f, 0x9b, + 0x40, 0x1c, 0x46, 0x1c, 0x46, 0x1c, 0x46, 0x1c, 0x46, 0x1c, 0x46, 0x1c, 0x46, 0x1c, 0x16, 0x8d, + 0xc3, 0x1d, 0x2b, 0xa4, 0x88, 0xc5, 0x33, 0xcd, 0x20, 0x1e, 0x23, 0x1e, 0x23, 0x1e, 0x23, 0x1e, + 0x23, 0x1e, 0x23, 0x1e, 0x23, 0x1e, 0x8b, 0xc6, 0xe3, 0x6e, 0xdf, 0xe5, 0x0e, 0xcd, 0xda, 0xf1, + 0x42, 0x53, 0x88, 0xcb, 0x88, 0xcb, 0x88, 0xcb, 0x88, 0xcb, 0x88, 0xcb, 0x88, 0xcb, 0x88, 0xcb, + 0xa2, 0x71, 0xd9, 0xb7, 0x38, 0x53, 0x8c, 0xc7, 0xe3, 0x26, 0x10, 0x87, 0x11, 0x87, 0x11, 0x87, + 0x11, 0x87, 0x11, 0x87, 0x11, 0x87, 0x11, 0x87, 0x45, 0xe3, 0xb0, 0x72, 0x56, 0x8c, 0x5c, 0x18, + 0x31, 0x18, 0x31, 0x18, 0x31, 0x18, 0x31, 0x18, 0x31, 0x18, 0x31, 0x58, 0x2a, 0x06, 0xf7, 0x3d, + 0x22, 0x85, 0x7a, 0xae, 0x21, 0xc4, 0x64, 0xc4, 0x64, 0xc4, 0x64, 0xc4, 0x64, 0xc4, 0x64, 0xc4, + 0x64, 0xc4, 0x64, 0xf1, 0x98, 0xfc, 0xdd, 0xf3, 0xff, 0xf2, 0x8c, 0x5e, 0xe0, 0x73, 0x5f, 0x35, + 0x2a, 0xcf, 0x35, 0x85, 0xb8, 0x8c, 0xb8, 0x8c, 0xb8, 0x8c, 0xb8, 0x8c, 0xb8, 0x8c, 0xb8, 0x8c, + 0xb8, 0x2c, 0x14, 0x97, 0xdd, 0x41, 0x72, 0x6b, 0xb9, 0xcc, 0x0c, 0xe4, 0x03, 0xf2, 0x4c, 0x1b, + 0x88, 0xc4, 0x88, 0xc4, 0xb9, 0x8a, 0xc4, 0xdc, 0xe9, 0x32, 0xee, 0x58, 0xdf, 0xc3, 0xc4, 0x63, + 0xf1, 0x37, 0x6f, 0xe4, 0xc7, 0x8a, 0x9e, 0xe9, 0xf9, 0x21, 0xb3, 0x7c, 0x4f, 0xf8, 0x8d, 0x7e, + 0xc4, 0x74, 0xc4, 0x74, 0xc4, 0xf4, 0x34, 0xc7, 0x74, 0x94, 0x64, 0x43, 0x49, 0xb6, 0xc1, 0x13, + 0xf8, 0x7d, 0x4e, 0x56, 0x93, 0x6d, 0x45, 0x5b, 0xc0, 0x32, 0x60, 0x19, 0x04, 0x12, 0x08, 0x24, + 0x80, 0x29, 0xc0, 0x14, 0x04, 0x12, 0xe1, 0xc8, 0xac, 0x5e, 0x95, 0x6d, 0xae, 0x15, 0x44, 0x63, + 0x44, 0x63, 0x44, 0x63, 0x44, 0x63, 0x44, 0x63, 0x44, 0x63, 0x44, 0x63, 0xe1, 0x68, 0xac, 0x5a, + 0x0b, 0x66, 0xa6, 0x0d, 0x44, 0x62, 0x44, 0x62, 0x44, 0x62, 0x44, 0x62, 0x44, 0x62, 0x44, 0x62, + 0x44, 0x62, 0xe1, 0x48, 0x4c, 0x55, 0x09, 0x66, 0x45, 0x5b, 0x88, 0xcc, 0x88, 0xcc, 0x88, 0xcc, + 0x88, 0xcc, 0x88, 0xcc, 0x88, 0xcc, 0x88, 0xcc, 0xc2, 0x91, 0x59, 0xb5, 0x16, 0xcc, 0x4c, 0x1b, + 0x88, 0xc4, 0x88, 0xc4, 0x88, 0xc4, 0x88, 0xc4, 0x88, 0xc4, 0x88, 0xc4, 0x88, 0xc4, 0xc2, 0x91, + 0x58, 0x3d, 0x33, 0x46, 0x3e, 0x8c, 0x28, 0x8c, 0x28, 0x8c, 0x28, 0x8c, 0x28, 0x8c, 0x28, 0x8c, + 0x28, 0x2c, 0x17, 0x85, 0x69, 0xea, 0xc1, 0x2c, 0xb5, 0x84, 0xa8, 0x8c, 0xa8, 0x8c, 0xa8, 0x8c, + 0xa8, 0x8c, 0xa8, 0x8c, 0xa8, 0x8c, 0xa8, 0x1c, 0xf3, 0x93, 0x31, 0xe7, 0x54, 0xb1, 0xe6, 0x79, + 0x3e, 0x37, 0x07, 0x5d, 0x2b, 0x34, 0x8d, 0x8a, 0xa1, 0xf5, 0xca, 0xba, 0x66, 0xcf, 0xe4, 0xaf, + 0x03, 0x8f, 0x76, 0xe8, 0xf7, 0x98, 0x67, 0x0d, 0x23, 0xa8, 0xe1, 0x0c, 0x7c, 0x5b, 0xc7, 0xb4, + 0x58, 0x78, 0xb8, 0xea, 0xc7, 0xc3, 0x90, 0x9b, 0x9c, 0x1d, 0x8e, 0x7d, 0xa0, 0x48, 0x74, 0x2f, + 0x86, 0x3c, 0xe8, 0x5b, 0xdc, 0x1b, 0x7b, 0xd1, 0xfb, 0xe8, 0x2b, 0xaf, 0xa3, 0xaf, 0x69, 0xaf, + 0xfa, 0xb1, 0xdd, 0x1c, 0x7c, 0x63, 0xfb, 0x72, 0xf2, 0x8d, 0x07, 0x34, 0xbd, 0x1c, 0xa3, 0x87, + 0x8b, 0x36, 0x0b, 0xad, 0xc0, 0xe9, 0x09, 0x75, 0x6f, 0x14, 0x26, 0x66, 0x2f, 0x8e, 0x39, 0x9a, + 0x62, 0x86, 0x2c, 0xcc, 0x3c, 0x32, 0xac, 0x23, 0xcd, 0x38, 0xb2, 0x6c, 0xa3, 0xcc, 0x34, 0xca, + 0x2c, 0xa3, 0xc2, 0x30, 0xb4, 0xd6, 0x2d, 0xcc, 0x2a, 0xd1, 0x68, 0x85, 0x3c, 0x70, 0xbc, 0x17, + 0x91, 0xe1, 0x1a, 0xcf, 0xbd, 0xf2, 0x59, 0x82, 0xf6, 0xc5, 0x3c, 0xf3, 0xd9, 0x65, 0xb6, 0xb8, + 0x6d, 0x4d, 0x2e, 0x8c, 0xd9, 0x8f, 0x57, 0xac, 0x63, 0xf6, 0xdd, 0xe1, 0x78, 0x0e, 0xa6, 0x03, + 0xcc, 0x11, 0xe6, 0x98, 0xac, 0x39, 0x3e, 0xfb, 0xbe, 0xcb, 0x4c, 0x4f, 0xc6, 0x1e, 0xcb, 0x09, + 0xda, 0xe3, 0xab, 0x19, 0xd8, 0x7f, 0x99, 0x01, 0x33, 0x7a, 0x7e, 0xc0, 0xc5, 0xad, 0x72, 0xfe, + 0xf2, 0x7c, 0x18, 0x99, 0xc0, 0xa3, 0xe4, 0xcb, 0xcc, 0x86, 0x0f, 0x9e, 0x39, 0x43, 0x73, 0x99, + 0xd9, 0x09, 0x58, 0x47, 0xc6, 0xd0, 0x4e, 0x05, 0xae, 0x69, 0x44, 0xe0, 0x6c, 0x19, 0x3d, 0xd7, + 0xe4, 0x1d, 0x3f, 0xe8, 0x7e, 0xb2, 0xfc, 0x6e, 0xcf, 0xf7, 0x98, 0xc7, 0xc3, 0xd5, 0xbf, 0x9e, + 0xfb, 0xed, 0x10, 0x83, 0x13, 0x34, 0x6d, 0xa7, 0xe3, 0x78, 0x36, 0xfb, 0x21, 0x6e, 0xd4, 0x93, + 0x0b, 0x11, 0x33, 0x11, 0x33, 0x13, 0x35, 0xe5, 0xbe, 0xe3, 0xf1, 0xa3, 0x8a, 0x84, 0x25, 0x8b, + 0x18, 0xb2, 0x9c, 0xa6, 0x26, 0x21, 0x1e, 0xaa, 0x68, 0x68, 0x8a, 0x02, 0x8f, 0xaa, 0x66, 0x46, + 0xa1, 0xde, 0x48, 0x68, 0x64, 0x4a, 0xda, 0x18, 0x55, 0x97, 0x55, 0x2b, 0xe7, 0xd5, 0xf3, 0x93, + 0xd3, 0xca, 0xf9, 0xf1, 0x0e, 0xfb, 0x4e, 0x93, 0x12, 0xf5, 0x44, 0x6a, 0xe8, 0xc2, 0x65, 0x97, + 0xe4, 0x7d, 0x2a, 0x59, 0x99, 0x25, 0xf5, 0xf2, 0x4a, 0x92, 0x65, 0x95, 0xe2, 0x0d, 0xd2, 0x13, + 0x49, 0xe4, 0x1f, 0x55, 0x9e, 0x7c, 0x1d, 0x3b, 0x3a, 0xc1, 0xe8, 0x3f, 0x7b, 0x31, 0x08, 0x00, + 0x04, 0x90, 0x28, 0x01, 0xc8, 0xd5, 0x95, 0x94, 0x58, 0x62, 0x53, 0xad, 0x23, 0x09, 0x8c, 0x00, + 0x46, 0x6c, 0xec, 0x32, 0xba, 0x25, 0x35, 0x00, 0x05, 0x80, 0x62, 0xd7, 0x40, 0xe1, 0xbf, 0x38, + 0x96, 0xe9, 0x4a, 0xc0, 0xc4, 0xf8, 0x42, 0x80, 0x04, 0x40, 0x22, 0x51, 0x90, 0xd0, 0x2f, 0xbf, + 0xc3, 0xa7, 0x65, 0xdd, 0xa7, 0xf9, 0xbd, 0x67, 0xd3, 0xfa, 0x6e, 0x74, 0x7d, 0x5b, 0x26, 0x4d, + 0x9a, 0xbb, 0x5c, 0x7c, 0x55, 0x72, 0xd8, 0xa9, 0xf0, 0x8b, 0xf0, 0x8b, 0x79, 0xf3, 0x8b, 0x24, + 0xc6, 0xd9, 0xe5, 0x7d, 0x71, 0x93, 0x1c, 0x5c, 0x04, 0x83, 0x82, 0x41, 0x25, 0x6a, 0x50, 0x7d, + 0xc7, 0xe3, 0xe5, 0x13, 0x09, 0x7b, 0x3a, 0x81, 0xd8, 0x00, 0xb1, 0x81, 0xa8, 0xcb, 0x4e, 0x8e, + 0x8f, 0x8f, 0xf6, 0x57, 0x5d, 0x20, 0x89, 0x38, 0xe3, 0x4d, 0xaa, 0x82, 0x21, 0x67, 0x78, 0x15, + 0x62, 0x0e, 0x62, 0x4e, 0xa2, 0x31, 0x27, 0x1b, 0x5b, 0x3d, 0xfd, 0x1e, 0x0b, 0x8c, 0x90, 0x9b, + 0xbc, 0x1f, 0x8a, 0x1b, 0xd6, 0xec, 0xc5, 0xb0, 0x2f, 0xd8, 0x57, 0xa2, 0xf6, 0xc5, 0xbc, 0x7e, + 0x97, 0x05, 0xa6, 0xc0, 0x3e, 0xfe, 0x39, 0x23, 0xab, 0x0a, 0x5c, 0x53, 0xf7, 0xfa, 0xdd, 0xc1, + 0x4d, 0xfe, 0x84, 0xe8, 0xb4, 0x0f, 0xa2, 0x53, 0xef, 0xf5, 0x3d, 0x74, 0x2c, 0xd3, 0x1d, 0x76, + 0x91, 0xc7, 0x24, 0x14, 0xf5, 0xa5, 0x16, 0xf2, 0xe1, 0x1d, 0x79, 0x60, 0x7a, 0xa1, 0xc5, 0x9c, + 0x37, 0x16, 0xec, 0xa5, 0x9b, 0x9c, 0x7d, 0x7e, 0x6c, 0xc1, 0x5d, 0x33, 0xc5, 0x64, 0xb6, 0xe0, + 0xfe, 0xb9, 0xb8, 0x05, 0xf7, 0xff, 0xb5, 0xfa, 0x41, 0xc0, 0x3c, 0xfe, 0xcb, 0xaf, 0x87, 0x1f, + 0x3f, 0x1e, 0xce, 0x77, 0xfd, 0xa7, 0x99, 0x9f, 0x9f, 0x36, 0xfc, 0xdb, 0xe2, 0x3f, 0x2d, 0x1a, + 0x65, 0xb8, 0xf8, 0x81, 0xf1, 0xef, 0x17, 0x7f, 0x3d, 0xda, 0x67, 0x4b, 0x3a, 0x8a, 0x37, 0x4e, + 0xc8, 0x6b, 0x9c, 0x8b, 0x9d, 0x5b, 0x3b, 0xc8, 0xfb, 0xeb, 0x03, 0x07, 0xee, 0x0d, 0xe3, 0x86, + 0xd7, 0x77, 0x5d, 0x81, 0x71, 0xb9, 0x35, 0x7f, 0xc8, 0x5f, 0x7c, 0x1f, 0xd8, 0x2c, 0x60, 0xf6, + 0xc5, 0xfb, 0xf8, 0xd2, 0x04, 0x01, 0x75, 0xd6, 0xe6, 0x84, 0xfd, 0xb0, 0xb8, 0xc3, 0x82, 0x0b, + 0x86, 0x0b, 0x86, 0x0b, 0x5e, 0xe9, 0x82, 0x7b, 0x7e, 0xc0, 0x3f, 0xcd, 0xbd, 0x4b, 0xf4, 0x34, + 0xd7, 0x54, 0xd8, 0x7f, 0x5e, 0xf3, 0x25, 0xb3, 0xff, 0xb2, 0xd3, 0xb7, 0x2d, 0xb8, 0xc8, 0xd0, + 0x4d, 0xbd, 0xc8, 0xe0, 0x2a, 0xe4, 0xb7, 0xc8, 0x6f, 0x13, 0x75, 0x16, 0x8e, 0xcd, 0x3c, 0xee, + 0xf0, 0x77, 0x49, 0x87, 0x21, 0xa0, 0x34, 0x17, 0xaf, 0xc7, 0x5f, 0x75, 0x61, 0x86, 0x4c, 0xbe, + 0xc2, 0x50, 0x54, 0x8b, 0xc0, 0x18, 0x1a, 0x0c, 0x75, 0x87, 0x1f, 0xa8, 0x7d, 0x62, 0xcb, 0x80, + 0x15, 0x6b, 0xfd, 0x97, 0xc1, 0x84, 0x19, 0xbe, 0xf5, 0xbc, 0x3d, 0x25, 0x17, 0xf4, 0x20, 0x87, + 0xc3, 0x39, 0xf8, 0x69, 0xa6, 0x70, 0xc3, 0xc2, 0x2f, 0xc6, 0x7f, 0x1f, 0x16, 0x71, 0x88, 0xbf, + 0x4f, 0x61, 0xb6, 0x0a, 0x42, 0xb1, 0x66, 0xdb, 0x61, 0xc1, 0x2c, 0x04, 0xac, 0xc3, 0x02, 0xe6, + 0x59, 0xac, 0xd0, 0x09, 0xfc, 0x6e, 0x81, 0xbf, 0xb2, 0xc2, 0xb3, 0x19, 0xb2, 0x42, 0xf4, 0x55, + 0x05, 0xee, 0x0f, 0x7f, 0x6b, 0xf9, 0x41, 0xc0, 0xc2, 0x9e, 0xef, 0xd9, 0x8e, 0xf7, 0xf2, 0xe8, + 0x0d, 0xfc, 0x79, 0x21, 0xf2, 0xd2, 0x05, 0xc7, 0x1b, 0x7e, 0xc8, 0x66, 0x6f, 0x8e, 0x35, 0xb8, + 0xf8, 0x8d, 0x79, 0xdc, 0x0f, 0xde, 0x3f, 0x0a, 0xfa, 0xc1, 0x32, 0x5e, 0x1f, 0xc5, 0xeb, 0xa3, + 0xd1, 0x84, 0x75, 0x04, 0x13, 0x1e, 0xb9, 0xf7, 0x9e, 0x97, 0xc6, 0x5b, 0xe6, 0xfd, 0xe7, 0x75, + 0x56, 0xf6, 0xd9, 0x0f, 0x0a, 0xde, 0x58, 0x3d, 0xf3, 0x98, 0xeb, 0xfc, 0x9b, 0xd9, 0x53, 0xd3, + 0x0a, 0x3f, 0x4c, 0xcd, 0x2f, 0x1c, 0xda, 0xcf, 0xe4, 0xab, 0x0b, 0x83, 0xaf, 0x7e, 0xf4, 0xe6, + 0x6c, 0x6e, 0x62, 0x88, 0xf3, 0xe6, 0xf9, 0x71, 0x4f, 0x0a, 0xb3, 0x49, 0x8c, 0x45, 0x61, 0x2f, + 0x4a, 0xb3, 0x89, 0x59, 0xa8, 0x98, 0xa5, 0x0a, 0x5a, 0xac, 0x3c, 0xc5, 0x10, 0xa4, 0x3e, 0x2a, + 0x29, 0x90, 0x5a, 0x2a, 0x24, 0x99, 0xa2, 0x88, 0x0f, 0xc5, 0xcf, 0xe4, 0x52, 0x9f, 0xcc, 0x00, + 0x8b, 0xe9, 0x6d, 0x45, 0x95, 0x19, 0x0d, 0x60, 0x4a, 0x2c, 0x79, 0x21, 0x13, 0x08, 0x3c, 0x3b, + 0x17, 0x78, 0x84, 0x39, 0x45, 0x46, 0xa3, 0x24, 0xd0, 0x2a, 0xd7, 0x19, 0x56, 0x23, 0xf0, 0xdf, + 0x1c, 0x9b, 0xcd, 0x1b, 0xd7, 0xd8, 0x94, 0x66, 0x6d, 0x67, 0x56, 0x96, 0x29, 0xf0, 0x57, 0x73, + 0x0e, 0x50, 0xc2, 0xc9, 0x15, 0x13, 0xd9, 0xbc, 0xb0, 0x90, 0x21, 0x74, 0xfc, 0xa0, 0xc0, 0x5f, + 0x9d, 0x70, 0x06, 0x5d, 0x1e, 0xbd, 0xd6, 0x34, 0x67, 0xe8, 0xf6, 0x43, 0x5e, 0xf0, 0x3d, 0xf7, + 0xbd, 0xd0, 0xf3, 0x7b, 0x7d, 0xd7, 0xe4, 0x6c, 0xf4, 0xf1, 0x41, 0x24, 0x28, 0xfc, 0xe5, 0xf0, + 0xd7, 0x85, 0xdb, 0x7b, 0xf4, 0xcc, 0x99, 0xd6, 0xfd, 0x4e, 0x61, 0x90, 0x45, 0x16, 0x5a, 0x0f, + 0xb5, 0xbb, 0xe6, 0x65, 0xfd, 0xfa, 0x9f, 0xf5, 0x87, 0x7d, 0x21, 0x23, 0xf9, 0x89, 0xb0, 0x1f, + 0x80, 0x24, 0xe5, 0x21, 0xc0, 0x49, 0x7b, 0x27, 0x19, 0x83, 0xc7, 0xf4, 0x09, 0x48, 0x0e, 0x0f, + 0x97, 0x04, 0xa4, 0x49, 0x9c, 0x98, 0x2c, 0xaf, 0x82, 0xc8, 0x40, 0x64, 0xbb, 0x22, 0x32, 0xe9, + 0x2d, 0x3c, 0x4b, 0x13, 0x40, 0x72, 0x2b, 0xcf, 0x26, 0xfd, 0xc8, 0x2c, 0xac, 0x54, 0x8f, 0x3e, + 0x14, 0x5c, 0x27, 0x1c, 0x92, 0xcf, 0xac, 0x88, 0x34, 0x84, 0xb0, 0x15, 0xd6, 0x55, 0xf8, 0xc5, + 0x35, 0x3d, 0x16, 0xfe, 0x5a, 0x58, 0xa9, 0x29, 0x2d, 0x32, 0xd9, 0xf2, 0xe5, 0x66, 0xc0, 0x0a, + 0x6c, 0xbc, 0x21, 0x60, 0xf0, 0x9d, 0x66, 0x61, 0x65, 0x5a, 0xf5, 0xe8, 0x8d, 0x95, 0xe0, 0x89, + 0x03, 0x2e, 0x74, 0x7d, 0x9b, 0xb9, 0x60, 0x31, 0xb0, 0x18, 0x58, 0x2c, 0x53, 0x2c, 0x96, 0x8d, + 0x1d, 0x54, 0xb2, 0xa3, 0x2d, 0xb5, 0xa3, 0x2a, 0xba, 0x5a, 0x65, 0x67, 0xd5, 0xb4, 0x11, 0x85, + 0x1d, 0x56, 0x51, 0x23, 0x52, 0x3b, 0xad, 0x76, 0x48, 0xba, 0x1b, 0x3f, 0xf1, 0xb4, 0x6d, 0xcd, + 0x55, 0xac, 0x4a, 0xbe, 0x6a, 0x75, 0xfc, 0x18, 0x86, 0xac, 0x56, 0x0c, 0x7f, 0xf3, 0x14, 0x5f, + 0xdf, 0x57, 0x1b, 0x26, 0x7b, 0x31, 0xec, 0x3f, 0x4f, 0x9f, 0x68, 0x6b, 0x37, 0x4d, 0xdf, 0x3e, + 0x99, 0xbb, 0x6c, 0xcb, 0x38, 0xc4, 0x03, 0xf0, 0xd8, 0xc1, 0x58, 0x24, 0xf8, 0x0a, 0x6f, 0x4e, + 0x11, 0x8d, 0xa9, 0xd2, 0x31, 0x54, 0x3a, 0x66, 0xca, 0x6c, 0x3e, 0x51, 0xdb, 0xbb, 0x10, 0x17, + 0x8f, 0xe7, 0x66, 0x85, 0xf8, 0x3e, 0xa8, 0xb9, 0xab, 0xf3, 0x91, 0xdb, 0x61, 0x3f, 0x54, 0xda, + 0x33, 0x39, 0x6b, 0x32, 0x23, 0x24, 0xf3, 0xb7, 0xf1, 0xf5, 0x72, 0xe9, 0x4a, 0x19, 0xa7, 0x9d, + 0xe5, 0x21, 0x4b, 0x49, 0xdf, 0x69, 0x67, 0xa2, 0x66, 0x10, 0x5d, 0x28, 0x73, 0xf4, 0xcd, 0xda, + 0x19, 0x23, 0x7e, 0x14, 0x0e, 0x51, 0x5e, 0xaf, 0x6c, 0x30, 0x14, 0x86, 0x43, 0x66, 0x40, 0x54, + 0x86, 0x44, 0x6e, 0x50, 0xe4, 0x86, 0x45, 0x69, 0x60, 0x72, 0x86, 0x26, 0x69, 0x70, 0xea, 0xaa, + 0xc0, 0x32, 0x0d, 0x89, 0xbe, 0xdf, 0xbd, 0x36, 0xc8, 0x9c, 0x25, 0x74, 0x74, 0x9a, 0x4c, 0xe1, + 0x0c, 0xd1, 0xa3, 0x80, 0xd6, 0x76, 0x97, 0xd8, 0xd1, 0x40, 0x2b, 0x64, 0x54, 0x99, 0xa3, 0x82, + 0xe0, 0xae, 0xe0, 0xae, 0xe0, 0xae, 0x24, 0x6b, 0x8a, 0xad, 0xf5, 0x57, 0xe5, 0x14, 0xfb, 0x2b, + 0xb1, 0xd3, 0x54, 0xd6, 0xf6, 0x96, 0xc8, 0xd9, 0x2a, 0x9b, 0x7c, 0x55, 0x09, 0x8e, 0x0a, 0x8e, + 0x0a, 0x8e, 0x4a, 0x64, 0xb6, 0x08, 0x9f, 0x2f, 0xb3, 0xce, 0x76, 0x4e, 0x15, 0x9a, 0x50, 0x3b, + 0xd3, 0x79, 0xf2, 0x9f, 0xda, 0x74, 0x2d, 0x50, 0x9d, 0xf1, 0x4c, 0xe4, 0x54, 0x96, 0x9a, 0x23, + 0x3a, 0xf3, 0x39, 0x6a, 0x8f, 0xf0, 0x34, 0x62, 0xc5, 0xe9, 0x3c, 0x3f, 0x04, 0x04, 0x67, 0x41, + 0xeb, 0x1e, 0x02, 0xd5, 0xf3, 0x70, 0x12, 0x19, 0x8b, 0x83, 0xdd, 0x5c, 0xfd, 0x94, 0x14, 0xae, + 0x68, 0x55, 0x8c, 0x84, 0xab, 0x05, 0xa9, 0x39, 0x21, 0x2d, 0xd5, 0x83, 0xd6, 0xc4, 0x4d, 0x89, + 0x2a, 0x42, 0x2b, 0x03, 0xa6, 0x6e, 0x91, 0xef, 0x49, 0x54, 0x74, 0x97, 0x3b, 0x04, 0x3c, 0xba, + 0x5e, 0x61, 0xb9, 0x73, 0x76, 0xf5, 0x6f, 0xee, 0x6f, 0x87, 0x52, 0x7a, 0x78, 0x41, 0x69, 0x69, + 0x74, 0xf6, 0x66, 0xe6, 0xfe, 0xd6, 0x1e, 0x63, 0xaa, 0xae, 0x45, 0x6e, 0x81, 0xa5, 0x1d, 0xb9, + 0xbc, 0x41, 0x29, 0x5f, 0xc8, 0xea, 0x9e, 0x28, 0x2c, 0x32, 0x90, 0xb1, 0x3a, 0x76, 0x40, 0xad, + 0x9e, 0xa8, 0x63, 0x97, 0xf7, 0xf1, 0xe3, 0xd8, 0x5d, 0x1d, 0xca, 0xec, 0x20, 0xd2, 0xe2, 0x27, + 0x46, 0x1b, 0x49, 0xa4, 0xfd, 0x84, 0xc8, 0xfe, 0xec, 0xa5, 0xae, 0x94, 0xf5, 0x13, 0x15, 0xf8, + 0x09, 0xf8, 0x89, 0x4d, 0x7a, 0x95, 0xec, 0x62, 0xa4, 0x69, 0x77, 0x1d, 0x4f, 0xb4, 0x7a, 0xec, + 0xda, 0x29, 0x33, 0xd7, 0x1a, 0x64, 0x33, 0xc8, 0x66, 0x90, 0xcd, 0x04, 0x66, 0x8b, 0x5c, 0x39, + 0xdc, 0xb5, 0xb1, 0xa6, 0xaa, 0xd0, 0x86, 0x58, 0xb9, 0x5c, 0xaa, 0xae, 0x94, 0x4e, 0x90, 0x69, + 0xd4, 0x3a, 0xad, 0x09, 0x33, 0x7d, 0xe2, 0x4c, 0x94, 0x40, 0xab, 0x59, 0xcd, 0x53, 0x22, 0x4b, + 0x42, 0x96, 0xdf, 0x1f, 0x24, 0x9c, 0x04, 0x11, 0x2a, 0x6a, 0x49, 0x2d, 0x3a, 0x95, 0x11, 0x9d, + 0x10, 0x9d, 0xb2, 0x10, 0x9d, 0x64, 0xc1, 0x70, 0x6a, 0x7a, 0x66, 0x10, 0x38, 0x2c, 0x18, 0xbd, + 0x0c, 0xe2, 0x0c, 0x62, 0x53, 0xa8, 0x3e, 0xe0, 0x91, 0x35, 0xae, 0x68, 0x5c, 0x71, 0xa4, 0x68, + 0xd4, 0x79, 0x65, 0x43, 0xa5, 0x34, 0x58, 0x72, 0xc3, 0xa5, 0x36, 0x60, 0x6d, 0x86, 0xac, 0xcd, + 0xa0, 0x75, 0x18, 0xb6, 0x9a, 0x81, 0x2b, 0x1a, 0x3a, 0x1d, 0x8e, 0xae, 0x0b, 0x99, 0x42, 0x27, + 0x85, 0x6f, 0x33, 0xcf, 0x33, 0x82, 0xa6, 0x68, 0x16, 0x78, 0x69, 0xd0, 0x71, 0xee, 0xc6, 0x28, + 0x17, 0x7c, 0x89, 0xfd, 0xda, 0x52, 0xb3, 0xc4, 0x0b, 0xc0, 0x51, 0xbb, 0x1a, 0x16, 0x1f, 0x89, + 0x2c, 0x64, 0x7e, 0xa8, 0x08, 0x17, 0x86, 0x93, 0x1a, 0x2a, 0xba, 0x13, 0xcf, 0x77, 0x32, 0x7a, + 0x07, 0xe9, 0x68, 0xe5, 0x69, 0xa7, 0x5e, 0x5a, 0x39, 0xd3, 0xa5, 0x75, 0x5b, 0x89, 0x64, 0xbe, + 0xfa, 0x32, 0x60, 0xe2, 0x4c, 0x98, 0x66, 0x92, 0xc9, 0x4f, 0x30, 0x85, 0xc9, 0x55, 0x74, 0x3c, + 0xe3, 0x39, 0xf0, 0x4d, 0xdb, 0x32, 0x43, 0x6e, 0xf4, 0xbe, 0x73, 0x42, 0x58, 0x5f, 0x6e, 0x1a, + 0xa8, 0x0e, 0x54, 0x07, 0xaa, 0x03, 0xd5, 0x81, 0xea, 0x40, 0x75, 0xa0, 0x3a, 0x50, 0x3d, 0x9d, + 0xa8, 0xbe, 0x2b, 0x0e, 0xb3, 0x9d, 0xd0, 0x32, 0x03, 0x9b, 0x96, 0xc0, 0xa2, 0x46, 0xc1, 0x5e, + 0x60, 0x2f, 0xb0, 0x17, 0xd8, 0x0b, 0xec, 0x05, 0xf6, 0x02, 0x7b, 0x81, 0xbd, 0xc0, 0x5e, 0xb3, + 0xec, 0xc5, 0x82, 0xc0, 0x0f, 0x68, 0xc9, 0x6b, 0xdc, 0x24, 0xb8, 0x0b, 0xdc, 0x05, 0xee, 0x02, + 0x77, 0x81, 0xbb, 0xc0, 0x5d, 0xe0, 0x2e, 0x70, 0x17, 0xb8, 0x6b, 0x96, 0xbb, 0x3a, 0x56, 0xa8, + 0x83, 0xbd, 0x66, 0x9a, 0x05, 0x7f, 0x81, 0xbf, 0xc0, 0x5f, 0xe0, 0x2f, 0xf0, 0x17, 0xf8, 0x0b, + 0xfc, 0x05, 0xfe, 0x02, 0x7f, 0xcd, 0xf2, 0x57, 0xb7, 0xef, 0x72, 0x47, 0xcf, 0xde, 0xaf, 0x85, + 0xa6, 0xc1, 0x61, 0xe0, 0x30, 0x70, 0x18, 0x38, 0x0c, 0x1c, 0x06, 0x0e, 0x03, 0x87, 0x81, 0xc3, + 0xc0, 0x61, 0xb3, 0x1c, 0xe6, 0x5b, 0x9c, 0x11, 0xf3, 0xd7, 0xb8, 0x49, 0x70, 0x17, 0xb8, 0x0b, + 0xdc, 0x05, 0xee, 0x02, 0x77, 0x81, 0xbb, 0xc0, 0x5d, 0xe0, 0x2e, 0x70, 0xd7, 0x2c, 0x77, 0x91, + 0xab, 0x5e, 0xd0, 0xba, 0xc0, 0x5c, 0x60, 0x2e, 0x30, 0x17, 0x98, 0x0b, 0xcc, 0x05, 0xe6, 0x02, + 0x73, 0x81, 0xb9, 0x96, 0x98, 0xab, 0xef, 0x69, 0x5a, 0x71, 0x9c, 0x6b, 0x18, 0x0c, 0x06, 0x06, + 0x03, 0x83, 0x81, 0xc1, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x36, 0xcf, 0x60, + 0xdf, 0x3d, 0xff, 0x2f, 0xcf, 0xe8, 0x05, 0x3e, 0xf7, 0xa9, 0x29, 0x6c, 0xae, 0x69, 0x70, 0x18, + 0x38, 0x0c, 0x1c, 0x06, 0x0e, 0x03, 0x87, 0x81, 0xc3, 0xc0, 0x61, 0xe0, 0x30, 0x70, 0x58, 0x34, + 0x2c, 0xae, 0x19, 0x72, 0xc3, 0x72, 0x99, 0x19, 0xd0, 0x01, 0xd8, 0x4c, 0x9b, 0x20, 0x2f, 0x90, + 0x17, 0xc8, 0x2b, 0x45, 0xe4, 0xc5, 0x9d, 0x2e, 0xe3, 0x8e, 0xf5, 0x3d, 0x4c, 0x1d, 0x7b, 0x7d, + 0xf3, 0x46, 0x71, 0xa1, 0xe8, 0x99, 0x9e, 0x1f, 0x32, 0xcb, 0xf7, 0x94, 0x2b, 0x06, 0x82, 0xe9, + 0xc0, 0x74, 0x60, 0x3a, 0x30, 0xdd, 0xee, 0x98, 0x0e, 0x47, 0x2e, 0x50, 0x61, 0x02, 0x8e, 0x5c, + 0xa0, 0xc4, 0x7e, 0xbf, 0xcf, 0xb5, 0x9d, 0xb9, 0xb0, 0xa2, 0x6d, 0xa4, 0x01, 0x48, 0x03, 0x90, + 0x06, 0xa4, 0x28, 0x0d, 0x80, 0x00, 0x0b, 0x58, 0x07, 0xac, 0x03, 0xd6, 0x01, 0xeb, 0x14, 0xdf, + 0xaf, 0x4a, 0x62, 0xf4, 0xa7, 0x2e, 0xcc, 0xb5, 0x0a, 0xfa, 0x02, 0x7d, 0x81, 0xbe, 0x40, 0x5f, + 0xa0, 0x2f, 0xd0, 0x17, 0xe8, 0x0b, 0xf4, 0x05, 0xfa, 0x9a, 0xa3, 0x2f, 0xea, 0xda, 0xbf, 0x33, + 0x6d, 0x82, 0xbc, 0x40, 0x5e, 0x20, 0x2f, 0x90, 0x17, 0xc8, 0x0b, 0xe4, 0x05, 0xf2, 0x02, 0x79, + 0x81, 0xbc, 0xe6, 0xc8, 0x4b, 0x57, 0xe5, 0xdf, 0x15, 0x6d, 0x83, 0xc4, 0x40, 0x62, 0x20, 0x31, + 0x90, 0x18, 0x48, 0x0c, 0x24, 0x06, 0x12, 0x03, 0x89, 0x81, 0xc4, 0xe6, 0x48, 0x8c, 0xba, 0xf6, + 0xef, 0x4c, 0x9b, 0x20, 0x2f, 0x90, 0x17, 0xc8, 0x0b, 0xe4, 0x05, 0xf2, 0x02, 0x79, 0x81, 0xbc, + 0x40, 0x5e, 0x20, 0xaf, 0x39, 0xf2, 0xa2, 0x57, 0xbe, 0xa0, 0x77, 0x81, 0xba, 0x40, 0x5d, 0xa0, + 0x2e, 0x50, 0x17, 0xa8, 0x0b, 0xd4, 0x05, 0xea, 0x02, 0x75, 0x2d, 0x53, 0x97, 0x9e, 0xfa, 0xbf, + 0x4b, 0x2d, 0x83, 0xc2, 0x40, 0x61, 0xa0, 0x30, 0x50, 0x18, 0x28, 0x0c, 0x14, 0x06, 0x0a, 0x03, + 0x85, 0xe5, 0x8d, 0xc2, 0x0e, 0x12, 0x9c, 0xf3, 0xc5, 0x9a, 0xe7, 0xf9, 0xdc, 0x1c, 0x0c, 0xa5, + 0xd2, 0x34, 0x2f, 0x86, 0xd6, 0x2b, 0xeb, 0x9a, 0x3d, 0x93, 0xbf, 0x0e, 0x22, 0xc2, 0xa1, 0xdf, + 0x63, 0x9e, 0x35, 0x24, 0x24, 0xc3, 0x19, 0xc4, 0x86, 0x8e, 0x69, 0xb1, 0xf0, 0x70, 0xd5, 0x8f, + 0x87, 0x61, 0xff, 0x79, 0xe6, 0xf7, 0xb3, 0x7f, 0x3b, 0x0c, 0xb9, 0xc9, 0xd9, 0xe1, 0x38, 0xbc, + 0xa8, 0x80, 0x5f, 0x31, 0xe4, 0x41, 0xdf, 0xe2, 0xde, 0x38, 0x60, 0xdd, 0x47, 0x77, 0x77, 0x1d, + 0x7d, 0x73, 0x7b, 0xd5, 0x8f, 0xed, 0xe6, 0xec, 0xcd, 0xcd, 0xfd, 0xad, 0xdd, 0x1c, 0xdc, 0x5c, + 0xfb, 0x72, 0x72, 0x73, 0x07, 0xc9, 0x8c, 0xb5, 0xc4, 0x38, 0x17, 0x6d, 0x16, 0x5a, 0x81, 0xd3, + 0x53, 0x1a, 0xe4, 0x28, 0xd8, 0xcf, 0x36, 0x26, 0x39, 0xe7, 0xd4, 0xdc, 0x9f, 0x32, 0x79, 0x53, + 0x10, 0x37, 0x19, 0x69, 0x53, 0x11, 0x36, 0x39, 0x59, 0x93, 0x13, 0x35, 0x25, 0x49, 0x27, 0xeb, + 0x23, 0x95, 0x89, 0x39, 0x9a, 0x2d, 0x21, 0x0f, 0x1c, 0xef, 0x45, 0x65, 0xba, 0x8c, 0x6d, 0xa7, + 0x7c, 0x96, 0x62, 0x7f, 0xc3, 0x3c, 0xf3, 0xd9, 0x65, 0xb6, 0xba, 0xaf, 0x99, 0x34, 0x24, 0x39, + 0x6e, 0x57, 0xac, 0x63, 0xf6, 0xdd, 0xe1, 0x7c, 0x1b, 0x4c, 0x5f, 0xb8, 0x2b, 0xb8, 0x2b, 0xb8, + 0x2b, 0x91, 0xd9, 0xf2, 0xec, 0xfb, 0x2e, 0x33, 0x3d, 0x0a, 0x7f, 0x55, 0x4e, 0xb1, 0xbf, 0x72, + 0x3a, 0x8e, 0x67, 0xb3, 0x1f, 0xea, 0xfe, 0x6a, 0xd2, 0x10, 0x1c, 0x0d, 0x1c, 0x0d, 0x1c, 0x8d, + 0xc0, 0x6c, 0xe9, 0x3b, 0x1e, 0x3f, 0xaa, 0x10, 0xf8, 0x99, 0x53, 0x85, 0x26, 0x68, 0xe4, 0x42, + 0x02, 0x5d, 0x95, 0x52, 0x1e, 0x24, 0xd6, 0x9a, 0xa8, 0xe5, 0x40, 0x1d, 0x42, 0x12, 0x81, 0xfc, + 0x47, 0x2a, 0xfb, 0xe9, 0x1a, 0x82, 0x6a, 0xe5, 0xbc, 0x7a, 0x7e, 0x72, 0x5a, 0x39, 0x3f, 0x4e, + 0xf1, 0x58, 0xec, 0x48, 0x44, 0x7b, 0x4a, 0xd4, 0x11, 0x2a, 0x57, 0x14, 0xa6, 0x8b, 0x71, 0xda, + 0x2a, 0x08, 0xd3, 0x57, 0x0e, 0x26, 0xaa, 0x18, 0x2c, 0x37, 0x49, 0x9e, 0x92, 0x21, 0x4b, 0x22, + 0xae, 0x54, 0xa1, 0xca, 0x99, 0x2c, 0xb8, 0x04, 0x32, 0x05, 0x99, 0x82, 0x4c, 0x41, 0xa6, 0x20, + 0x53, 0x90, 0x29, 0xc8, 0x34, 0x4b, 0x64, 0x9a, 0x08, 0xae, 0x8c, 0xce, 0x18, 0x7b, 0x1d, 0x7b, + 0x1b, 0x45, 0x68, 0x99, 0x6d, 0x0c, 0xd8, 0x01, 0xec, 0x00, 0x76, 0x08, 0xcc, 0x16, 0x9a, 0x13, + 0xc5, 0x08, 0x36, 0xd3, 0x51, 0x9f, 0x20, 0x06, 0x96, 0x01, 0xcb, 0x64, 0x8a, 0x65, 0xf4, 0x6d, + 0xa6, 0x03, 0xd5, 0x40, 0x6f, 0x83, 0xde, 0x46, 0x0b, 0xb0, 0xfe, 0x8b, 0x63, 0x99, 0x2e, 0x01, + 0xbc, 0x8e, 0x1b, 0x02, 0xb8, 0x02, 0x5c, 0x01, 0xae, 0x02, 0xb3, 0x65, 0xf7, 0x5b, 0x46, 0x10, + 0x53, 0x10, 0x53, 0x28, 0x63, 0xca, 0x78, 0xd3, 0xb8, 0x62, 0x40, 0x19, 0xb6, 0x82, 0x68, 0x82, + 0x68, 0x82, 0x68, 0x22, 0x30, 0x5b, 0x76, 0xbe, 0x5f, 0x1a, 0xc1, 0x04, 0xc1, 0x84, 0x32, 0x98, + 0xf8, 0x3d, 0x16, 0x18, 0x21, 0x37, 0x79, 0x3f, 0x54, 0x8f, 0x29, 0xb3, 0x8d, 0x21, 0xb4, 0x20, + 0xb4, 0x20, 0xb4, 0x08, 0xcc, 0x16, 0xe6, 0xf5, 0xbb, 0x2c, 0x30, 0x15, 0xde, 0x63, 0x9b, 0x8b, + 0x2f, 0x55, 0x85, 0x36, 0xea, 0x5e, 0xbf, 0x3b, 0x78, 0xa8, 0x9f, 0x88, 0x51, 0x88, 0x51, 0xc4, + 0x31, 0xea, 0x40, 0xe3, 0x54, 0x52, 0x7d, 0x79, 0x58, 0xe3, 0x4b, 0xc3, 0x12, 0xf3, 0x46, 0xdb, + 0x3b, 0xc2, 0x62, 0xb3, 0x24, 0xfe, 0x88, 0xc5, 0xfb, 0x64, 0xcc, 0x31, 0x1d, 0x98, 0xa3, 0xe8, + 0x56, 0xc3, 0xe2, 0x8d, 0x13, 0xf2, 0x1a, 0xe7, 0x81, 0xd0, 0xe8, 0x17, 0x6f, 0x1d, 0xaf, 0x3e, + 0x30, 0x74, 0x6f, 0xe8, 0x7f, 0xbc, 0xbe, 0xeb, 0x7e, 0x10, 0xb8, 0xd8, 0xfc, 0x21, 0x7f, 0xf1, + 0x7d, 0x60, 0xb3, 0x80, 0xd9, 0x17, 0xef, 0xe3, 0x4b, 0x49, 0x3b, 0x50, 0xd2, 0x18, 0xb4, 0x18, + 0x81, 0xc0, 0xf4, 0xd7, 0x30, 0xed, 0xe3, 0x4d, 0xf8, 0xed, 0xd3, 0x77, 0xf3, 0x27, 0xb6, 0x8c, + 0x8b, 0xe8, 0x78, 0x50, 0x8d, 0x43, 0x8c, 0xae, 0xa7, 0xe9, 0xf2, 0xcd, 0xbd, 0xbc, 0xbe, 0xef, + 0x56, 0xff, 0xcb, 0x9a, 0xde, 0x9c, 0xb8, 0x85, 0x0d, 0xf2, 0x55, 0x3c, 0x2f, 0x20, 0x64, 0xf5, + 0x42, 0x56, 0x1e, 0xcf, 0xaa, 0xd7, 0x3d, 0x5f, 0xad, 0xff, 0x32, 0xf8, 0x9a, 0xe1, 0xdb, 0xca, + 0xeb, 0x51, 0x68, 0xf3, 0xf4, 0x89, 0x98, 0xf2, 0x70, 0xc8, 0xd2, 0x9f, 0x66, 0x26, 0xc9, 0xc2, + 0x2f, 0xb6, 0x4c, 0x8e, 0xe2, 0xd5, 0x5c, 0xa5, 0x86, 0x62, 0xcd, 0xb6, 0xc3, 0x82, 0x69, 0xdb, + 0x83, 0xbf, 0x9b, 0x6e, 0xa1, 0xce, 0x5f, 0x59, 0xe0, 0x31, 0x6e, 0x84, 0x3d, 0x66, 0x39, 0x1d, + 0xc7, 0x2a, 0x8c, 0xa6, 0x4d, 0x7f, 0x84, 0xb1, 0x05, 0xee, 0x3f, 0x7a, 0xd3, 0xef, 0x2e, 0x74, + 0x7d, 0x9b, 0x6d, 0x5b, 0xc1, 0x8a, 0xf8, 0x75, 0xcb, 0xc7, 0xe2, 0x26, 0x7a, 0x22, 0x09, 0xdd, + 0x6c, 0xe2, 0xc6, 0xf8, 0x6b, 0x1c, 0xc3, 0x11, 0xcc, 0xd0, 0xa4, 0x33, 0x31, 0xe9, 0x8c, 0x6b, + 0x31, 0xb3, 0x1a, 0x3c, 0x97, 0x66, 0x3f, 0x77, 0xe5, 0xc4, 0x8b, 0xbf, 0x45, 0x36, 0x9e, 0x3e, + 0xf1, 0xbb, 0x2f, 0xca, 0x95, 0x26, 0x57, 0xc6, 0xec, 0x84, 0x85, 0x69, 0xdc, 0xf2, 0x7b, 0x86, + 0xcb, 0xde, 0x98, 0x3b, 0x98, 0xaf, 0xdc, 0x74, 0x3c, 0x16, 0x14, 0x3a, 0x7e, 0x50, 0x98, 0x34, + 0x3b, 0x3f, 0x8d, 0x1f, 0x3d, 0xd3, 0xb3, 0x0b, 0x22, 0x14, 0x17, 0x73, 0x12, 0x4b, 0xab, 0x16, + 0x32, 0x2a, 0x85, 0xf8, 0xe4, 0x56, 0x95, 0x21, 0x94, 0x65, 0x07, 0x65, 0x99, 0x41, 0x6a, 0xf2, + 0x0b, 0xd2, 0xac, 0xaa, 0x31, 0x09, 0x86, 0xc5, 0xa7, 0x75, 0x61, 0x23, 0x1e, 0x5c, 0xc8, 0x43, + 0xc5, 0x86, 0xb1, 0x93, 0xc5, 0x87, 0xd5, 0x63, 0xb1, 0xfc, 0xdc, 0xf3, 0xbf, 0x59, 0x70, 0x3f, + 0xdb, 0x9e, 0x5c, 0xf4, 0x89, 0x57, 0x3c, 0xa7, 0xd8, 0xf3, 0xcd, 0x3f, 0xd5, 0xf4, 0xde, 0x67, + 0xee, 0xbb, 0x38, 0xfd, 0x3a, 0x63, 0xe4, 0x57, 0x16, 0xef, 0x7c, 0xe6, 0x4d, 0xab, 0x85, 0x4f, + 0x2e, 0x3c, 0xfd, 0x6a, 0x4f, 0x33, 0xf5, 0x28, 0x95, 0x85, 0x7f, 0xd8, 0xe0, 0x39, 0x66, 0xaa, + 0x06, 0xac, 0xea, 0x84, 0x2d, 0x5e, 0x20, 0xb6, 0xb5, 0xc7, 0xb6, 0xea, 0x39, 0xeb, 0x5d, 0xa5, + 0x08, 0x6e, 0x9e, 0x17, 0xeb, 0xc2, 0xd0, 0xb4, 0x4b, 0xd7, 0x3f, 0xcb, 0x52, 0xef, 0xaf, 0x7b, + 0x96, 0xcd, 0x8e, 0x7e, 0xab, 0x63, 0x8f, 0xe3, 0xc8, 0x37, 0x0f, 0x8b, 0xa8, 0x93, 0x16, 0x76, + 0xca, 0xc2, 0x4e, 0x78, 0xeb, 0xb0, 0xc9, 0x71, 0xff, 0x36, 0xaa, 0x28, 0x9a, 0x76, 0xd7, 0xf1, + 0xe2, 0x2e, 0x65, 0x44, 0x9d, 0x3a, 0x77, 0x55, 0x3c, 0x34, 0x2d, 0xed, 0x12, 0x4d, 0x63, 0x2d, + 0x28, 0x64, 0x0c, 0x4b, 0xe3, 0xa8, 0xfd, 0x6a, 0x48, 0x1a, 0x5b, 0xa5, 0x97, 0x54, 0xe3, 0x45, + 0x54, 0xf7, 0x98, 0xea, 0xfa, 0x06, 0x30, 0xd8, 0xe0, 0x05, 0x5e, 0x9d, 0x97, 0x57, 0x16, 0x18, + 0xae, 0xf9, 0xce, 0x02, 0xc3, 0xe9, 0xc4, 0xb7, 0x83, 0xc5, 0x0b, 0x61, 0x0a, 0x30, 0x85, 0xc5, + 0x20, 0x38, 0x22, 0x10, 0x23, 0x60, 0x1d, 0x11, 0x93, 0x88, 0xf1, 0x9e, 0x69, 0xb1, 0x31, 0xa1, + 0xb3, 0x39, 0xb1, 0x62, 0xf4, 0x7d, 0x73, 0xbf, 0x1b, 0xfc, 0x65, 0xc8, 0x61, 0x4a, 0x7d, 0x20, + 0x24, 0x13, 0x4b, 0xc9, 0xc3, 0x52, 0xb2, 0xb0, 0x98, 0x1c, 0x2c, 0xe7, 0x20, 0x9c, 0x8e, 0x11, + 0xaf, 0x06, 0xc0, 0x8c, 0x99, 0x19, 0x71, 0x34, 0x78, 0xb8, 0x84, 0xfd, 0x72, 0x09, 0xb1, 0xde, + 0x41, 0x9f, 0x4c, 0x8a, 0xa3, 0x18, 0x1f, 0x15, 0x7b, 0x0f, 0x4b, 0x6c, 0x79, 0x47, 0x42, 0xbb, + 0x90, 0xda, 0x87, 0x32, 0x7d, 0x49, 0x47, 0xf0, 0x3a, 0x85, 0x37, 0x6f, 0x7e, 0x8a, 0x2d, 0x56, + 0x25, 0xde, 0x15, 0x95, 0x72, 0xf5, 0xb4, 0x7a, 0x76, 0x74, 0x52, 0x3d, 0x4d, 0xb0, 0x4f, 0x88, + 0xb4, 0x9b, 0x27, 0x0d, 0x1e, 0x58, 0xe4, 0x9d, 0x66, 0x89, 0x77, 0x97, 0xe1, 0x87, 0xf7, 0xc8, + 0x0f, 0xdb, 0x03, 0x1e, 0x33, 0x3d, 0xdb, 0xe0, 0x4e, 0xac, 0xdd, 0xdc, 0xd3, 0xdd, 0xa7, 0xf1, + 0xa0, 0x8c, 0xb3, 0xc0, 0x8b, 0xed, 0x92, 0x8b, 0x8f, 0x8f, 0xf6, 0xdf, 0xd5, 0x9f, 0xc6, 0xe0, + 0x8f, 0xca, 0xe4, 0x8f, 0xd6, 0xe8, 0x8f, 0x4f, 0x73, 0x7f, 0xfc, 0xf2, 0xf8, 0xf8, 0xf1, 0xf1, + 0xd1, 0xfe, 0xc7, 0xaf, 0xff, 0xf9, 0xcb, 0xbf, 0xfe, 0xf7, 0xcf, 0xc7, 0xc7, 0x7f, 0x3c, 0x3e, + 0x1a, 0x4f, 0x73, 0x9f, 0xf8, 0xb5, 0xb8, 0x1b, 0xdb, 0xf4, 0xff, 0x92, 0xca, 0x9e, 0x16, 0xae, + 0x83, 0x85, 0xc2, 0x42, 0x91, 0x3c, 0xe5, 0x2f, 0x79, 0x8a, 0xf5, 0xe6, 0x8d, 0xc8, 0x1b, 0x36, + 0x70, 0x05, 0x7b, 0xe4, 0x0a, 0x62, 0xbf, 0x3b, 0x12, 0xf3, 0x1d, 0x11, 0xb9, 0x39, 0x2c, 0xb2, + 0xe1, 0x5f, 0x62, 0x63, 0x3f, 0x66, 0x34, 0x44, 0xf2, 0xb4, 0x8b, 0xe4, 0xbd, 0xd7, 0xf7, 0xd0, + 0x30, 0x6d, 0x3b, 0x60, 0xa1, 0x80, 0x0d, 0xcc, 0x5d, 0x05, 0x23, 0x80, 0x11, 0x88, 0xcf, 0x0b, + 0xfd, 0x29, 0xd8, 0x2f, 0x7f, 0x96, 0x8c, 0x73, 0xd3, 0xe8, 0xd4, 0x8c, 0xcf, 0x4f, 0x83, 0x44, + 0xeb, 0xd3, 0xfc, 0xdf, 0x7f, 0xfd, 0x7f, 0x7e, 0xfd, 0xcf, 0xdd, 0x64, 0x56, 0x61, 0x8f, 0xc5, + 0x38, 0x80, 0x65, 0x1a, 0x2b, 0x87, 0x1f, 0x87, 0x95, 0xc1, 0xca, 0xc6, 0xfd, 0xfc, 0x62, 0xf6, + 0x5f, 0x58, 0xac, 0xda, 0x63, 0x02, 0x35, 0xc6, 0xf2, 0xa5, 0x39, 0x97, 0xa0, 0x39, 0xd3, 0xd5, + 0xc8, 0xca, 0xab, 0xfa, 0x3c, 0x80, 0x78, 0x27, 0xe4, 0x8e, 0x25, 0x40, 0x3e, 0x33, 0xd7, 0x64, + 0x60, 0xf3, 0x36, 0x3c, 0xb2, 0x8c, 0x47, 0x8e, 0xbd, 0x69, 0xdb, 0x76, 0x42, 0xcb, 0xf7, 0xb8, + 0xe3, 0xf5, 0x1d, 0xfe, 0x3e, 0xd2, 0x9d, 0x85, 0xb7, 0x6f, 0xaf, 0x68, 0x43, 0x6c, 0x63, 0x75, + 0x29, 0x8d, 0x1b, 0xab, 0x85, 0xde, 0xf5, 0xce, 0xc9, 0xa6, 0x6a, 0x91, 0x17, 0xb5, 0x69, 0x5f, + 0x0f, 0x14, 0x7e, 0xf1, 0x5a, 0x7a, 0xd1, 0x44, 0x86, 0xdc, 0xa5, 0x09, 0x3e, 0xba, 0x30, 0xd9, + 0xc5, 0x94, 0x78, 0x21, 0x27, 0xfe, 0x48, 0xc6, 0x18, 0xc5, 0xa2, 0xe3, 0x19, 0xcf, 0x81, 0x6f, + 0xda, 0x96, 0x19, 0x72, 0xa3, 0xf7, 0x9d, 0x87, 0xe2, 0x8e, 0x64, 0xb9, 0x09, 0xf8, 0x11, 0xf8, + 0x91, 0x84, 0xfc, 0xc8, 0xf8, 0x18, 0x68, 0xa1, 0x82, 0xc8, 0x12, 0x05, 0x90, 0x25, 0x0b, 0x14, + 0x4b, 0xbc, 0xfd, 0xae, 0x52, 0x80, 0x58, 0xb5, 0x70, 0x8b, 0x62, 0x81, 0x61, 0x8a, 0xd2, 0xb5, + 0x32, 0xe5, 0x73, 0x54, 0x0a, 0x06, 0x53, 0x75, 0x19, 0x5d, 0x41, 0x60, 0x92, 0x5e, 0xd4, 0x54, + 0x5c, 0x20, 0xe1, 0xc8, 0x34, 0x40, 0x54, 0x33, 0xb0, 0xe5, 0x62, 0x52, 0x74, 0x31, 0xa2, 0x11, + 0xa2, 0x51, 0xb2, 0xd1, 0x48, 0xe8, 0x68, 0x20, 0x89, 0xa3, 0x80, 0x10, 0x8d, 0x10, 0x8d, 0x36, + 0x76, 0x99, 0xea, 0x51, 0x3b, 0x88, 0x41, 0x51, 0x0c, 0x62, 0x41, 0xe0, 0x07, 0x72, 0x11, 0x68, + 0x7c, 0x29, 0xe2, 0x0f, 0xe2, 0x0f, 0xe2, 0x0f, 0xe2, 0x0f, 0xe2, 0x0f, 0xe2, 0x8f, 0x78, 0xfc, + 0xe9, 0xf6, 0x5d, 0xee, 0xa8, 0xa9, 0x73, 0x0b, 0x4d, 0x20, 0x1e, 0x21, 0x1e, 0x41, 0x9d, 0x43, + 0x3c, 0x82, 0x3a, 0x87, 0xc8, 0xa4, 0x12, 0x99, 0x7c, 0x8b, 0x33, 0xc9, 0x88, 0x34, 0xbe, 0x14, + 0x91, 0x08, 0x91, 0x08, 0x91, 0x08, 0x91, 0x08, 0x91, 0x08, 0x91, 0x48, 0x25, 0x12, 0xf5, 0x3d, + 0xc5, 0x0c, 0x69, 0xae, 0x01, 0x44, 0x25, 0x44, 0x25, 0x44, 0x25, 0x44, 0x25, 0x44, 0x25, 0x44, + 0x25, 0xb5, 0xa8, 0xf4, 0xdd, 0xf3, 0xff, 0xf2, 0x8c, 0x5e, 0xe0, 0x73, 0x5f, 0x36, 0x2e, 0xcd, + 0x35, 0x81, 0xc8, 0x84, 0xc8, 0x94, 0x6c, 0x64, 0xc2, 0x4a, 0x12, 0x22, 0x13, 0x56, 0x92, 0x72, + 0x10, 0x8f, 0xfc, 0x3e, 0x57, 0xde, 0xe8, 0xbd, 0xa2, 0x0d, 0x44, 0x24, 0x44, 0x24, 0xe4, 0x4a, + 0x88, 0x48, 0xc8, 0x95, 0x10, 0x9b, 0x94, 0x62, 0x93, 0xfc, 0x56, 0xef, 0xb9, 0xab, 0x11, 0x8f, + 0x10, 0x8f, 0x90, 0x21, 0x21, 0x1e, 0x21, 0x43, 0x42, 0x14, 0x92, 0x88, 0x42, 0xb2, 0x9b, 0xbd, + 0x67, 0xae, 0x45, 0x04, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x92, 0x88, + 0x40, 0xaa, 0xdb, 0xbd, 0x57, 0xb4, 0x81, 0x88, 0x84, 0x88, 0x04, 0x8d, 0x0e, 0x11, 0x09, 0x1a, + 0x1d, 0x62, 0x93, 0x52, 0x6c, 0x92, 0xdd, 0xf0, 0x3d, 0x73, 0x2d, 0x62, 0x11, 0x62, 0x11, 0x62, + 0x11, 0x62, 0x11, 0x62, 0x11, 0x62, 0x91, 0x52, 0x2c, 0x52, 0xdb, 0xf2, 0xbd, 0xd4, 0x02, 0xe2, + 0x12, 0xe2, 0x12, 0xe2, 0x12, 0xe2, 0x12, 0xe2, 0x12, 0xe2, 0x92, 0xc4, 0x27, 0xb6, 0x15, 0x76, + 0xae, 0x79, 0x9e, 0xcf, 0x47, 0x47, 0xb4, 0xc4, 0xaa, 0xef, 0x1c, 0x5a, 0xaf, 0xac, 0x6b, 0xf6, + 0xa2, 0x33, 0xc5, 0x18, 0xef, 0x18, 0xd3, 0x53, 0xc5, 0x0e, 0x97, 0x0f, 0x18, 0x8b, 0x4e, 0x17, + 0x8b, 0x5d, 0x26, 0x7c, 0xf4, 0x3d, 0x3c, 0xe8, 0x5b, 0x7c, 0x7c, 0xa2, 0x56, 0xf1, 0xba, 0xde, + 0xfa, 0x7c, 0x1d, 0x35, 0xdd, 0x9e, 0xfe, 0xd8, 0x1c, 0x7c, 0xc9, 0xf4, 0xef, 0xed, 0xe6, 0xf4, + 0x4b, 0x34, 0x54, 0x47, 0xe7, 0x71, 0x5c, 0x6b, 0xe4, 0x4e, 0x87, 0x9f, 0xc6, 0x19, 0x15, 0x38, + 0xa3, 0x62, 0xd2, 0xcf, 0x36, 0xf3, 0xb8, 0xc3, 0xdf, 0x05, 0xcf, 0xf8, 0x8b, 0xe1, 0xfa, 0x8a, + 0xd7, 0xe3, 0xa6, 0x2f, 0xcc, 0x90, 0xc9, 0xbc, 0xce, 0x31, 0x39, 0x84, 0x70, 0x38, 0x65, 0x55, + 0x3b, 0xee, 0x40, 0xec, 0x5f, 0xd6, 0x74, 0xf4, 0x60, 0x02, 0x6d, 0x39, 0x26, 0x2f, 0xde, 0x59, + 0x83, 0x42, 0x67, 0x0c, 0x0a, 0x9d, 0x2d, 0x18, 0xef, 0x4c, 0xc1, 0x75, 0xcf, 0x17, 0xd3, 0xf3, + 0xca, 0x7b, 0xdc, 0xe2, 0xc6, 0x73, 0x1e, 0x64, 0xdc, 0xeb, 0xea, 0xa9, 0xb1, 0x3c, 0xac, 0xf3, + 0xbf, 0x59, 0xe8, 0x80, 0x6d, 0x0f, 0x2e, 0xfa, 0xc0, 0x2b, 0x1e, 0x53, 0xe8, 0xf1, 0xe6, 0x1f, + 0x6a, 0x7a, 0xeb, 0x33, 0xb7, 0x5d, 0x74, 0x5d, 0xbb, 0xb7, 0x74, 0xb3, 0xd3, 0xe3, 0x5d, 0x07, + 0xff, 0xba, 0xf0, 0x90, 0xab, 0x8f, 0xba, 0x58, 0xeb, 0xc8, 0x37, 0x39, 0xee, 0x69, 0x6e, 0x68, + 0x19, 0x2b, 0xbe, 0x2a, 0x8e, 0x77, 0x8e, 0xed, 0x8d, 0x63, 0x7b, 0xdf, 0x39, 0x6f, 0x3b, 0xb9, + 0x31, 0xc1, 0x89, 0xb0, 0xee, 0x50, 0x89, 0xa2, 0x35, 0xe9, 0xa5, 0x35, 0x4f, 0x33, 0x4d, 0x58, + 0x86, 0x9f, 0x5b, 0xe7, 0x40, 0x36, 0x9e, 0x36, 0xb2, 0x35, 0xa6, 0xc6, 0x89, 0xa5, 0x31, 0x86, + 0x46, 0x34, 0x80, 0x0a, 0x07, 0x4e, 0xe1, 0x80, 0x19, 0x6f, 0xe8, 0xe4, 0x9c, 0xf6, 0xb6, 0x73, + 0x42, 0x8a, 0xd6, 0xab, 0x19, 0x86, 0x4e, 0x68, 0x38, 0x02, 0xa7, 0x7d, 0xcd, 0x5c, 0x93, 0x01, + 0x9c, 0xda, 0x3e, 0x15, 0x32, 0xca, 0x54, 0x5b, 0xa7, 0xca, 0xae, 0xc0, 0x2a, 0x1d, 0x27, 0xa7, + 0x4e, 0x67, 0xa9, 0x21, 0x96, 0x27, 0x2c, 0x5e, 0x88, 0x39, 0x8e, 0x39, 0xae, 0x38, 0x49, 0x0a, + 0x69, 0x3a, 0x4f, 0x95, 0x79, 0xe6, 0xb3, 0x2b, 0x72, 0xba, 0xe3, 0xe4, 0x82, 0x6d, 0x67, 0x52, + 0xb1, 0x8e, 0xd9, 0x77, 0x87, 0xc3, 0x36, 0x18, 0x6d, 0xd8, 0x0d, 0xec, 0x66, 0xb9, 0xc7, 0x9f, + 0x7d, 0xdf, 0x65, 0xa6, 0xd0, 0xf9, 0xc3, 0x65, 0x0d, 0x36, 0xf0, 0xca, 0x5c, 0xd7, 0x1f, 0x9e, + 0x28, 0x15, 0xc4, 0xb7, 0x83, 0xd9, 0x8b, 0x30, 0xb9, 0x31, 0xb9, 0x97, 0x7a, 0xbc, 0xef, 0x78, + 0x1c, 0x87, 0x9e, 0x12, 0xae, 0xbe, 0xe0, 0xd0, 0x53, 0x6d, 0xbd, 0x93, 0xe6, 0x43, 0x4f, 0xfb, + 0xbd, 0x5e, 0xc0, 0xc2, 0xd0, 0xe0, 0xee, 0x9b, 0x61, 0xda, 0x6f, 0x2c, 0xe0, 0x4e, 0xc8, 0xc6, + 0xd6, 0x1f, 0xf7, 0x10, 0xd4, 0xf5, 0x6d, 0xc0, 0x75, 0xc3, 0x75, 0x67, 0x67, 0x31, 0xe0, 0xe6, + 0xe6, 0xaa, 0xd1, 0x6e, 0xdd, 0xfc, 0x33, 0xee, 0x30, 0x0d, 0xdd, 0x4b, 0x28, 0xb4, 0x9a, 0x2f, + 0xe8, 0xf7, 0x26, 0x77, 0xd6, 0xb8, 0x7f, 0x68, 0xb5, 0xaf, 0xea, 0xcd, 0xcb, 0x87, 0xeb, 0x46, + 0xeb, 0xfa, 0xfe, 0xae, 0xa8, 0xc3, 0x35, 0x4b, 0xde, 0x5b, 0xf3, 0x8f, 0x66, 0xab, 0x7e, 0xdb, + 0xbe, 0xac, 0x35, 0x6a, 0x17, 0xd7, 0x37, 0xd7, 0xad, 0xeb, 0x7a, 0x33, 0x85, 0xb7, 0x97, 0xd2, + 0xce, 0xbb, 0xfc, 0x5a, 0x6b, 0x36, 0xaf, 0x9b, 0xed, 0xeb, 0xab, 0x34, 0xdd, 0xd5, 0x6d, 0xed, + 0xae, 0xf6, 0xa5, 0x7e, 0x5b, 0xbf, 0x6b, 0xb5, 0x6b, 0x57, 0x57, 0x0f, 0xf5, 0x66, 0xaa, 0x46, + 0x74, 0x68, 0x0c, 0xe9, 0xea, 0xb0, 0xf1, 0x24, 0xbb, 0xab, 0xdd, 0xd6, 0xa9, 0xf7, 0x3e, 0x3d, + 0x69, 0xf6, 0xdf, 0xb1, 0x16, 0x12, 0x67, 0x41, 0x36, 0xf6, 0x1a, 0xe1, 0x2c, 0xf2, 0x89, 0x5f, + 0x14, 0x6b, 0x81, 0x51, 0x11, 0x7e, 0xde, 0x43, 0xce, 0xba, 0x86, 0xcd, 0x42, 0x2b, 0x70, 0x7a, + 0xb1, 0x36, 0x82, 0x4c, 0xa1, 0x67, 0xf9, 0x5a, 0xc0, 0x0e, 0x60, 0x87, 0x42, 0xa0, 0x8f, 0xf1, + 0xd9, 0x1b, 0xe6, 0xbd, 0x0c, 0xd7, 0x88, 0x91, 0xa9, 0xe6, 0x2b, 0x53, 0xad, 0x1c, 0x23, 0x31, + 0x9d, 0xf5, 0xcd, 0xe3, 0x7d, 0x0c, 0x62, 0x4e, 0x79, 0xc3, 0xbe, 0x19, 0x78, 0x63, 0x78, 0x63, + 0x78, 0x63, 0x78, 0x63, 0x78, 0xe3, 0x98, 0xff, 0x42, 0xbc, 0x85, 0xcf, 0xef, 0x31, 0x6f, 0xb4, + 0x75, 0x69, 0xe8, 0x21, 0x0e, 0x87, 0xff, 0xb7, 0x71, 0x2f, 0x53, 0x61, 0x79, 0x53, 0xdb, 0x7d, + 0xd4, 0xc8, 0x8d, 0x6b, 0xf7, 0xda, 0xc3, 0xff, 0x1b, 0x3b, 0xea, 0xb8, 0xbb, 0xf4, 0x56, 0xec, + 0x23, 0x9b, 0x6e, 0xae, 0xdb, 0xbe, 0xfb, 0x6a, 0xe6, 0xb3, 0xd8, 0x81, 0x95, 0x9d, 0x1d, 0x58, + 0xd3, 0xfd, 0xa1, 0xb1, 0x91, 0x22, 0xce, 0x96, 0xd2, 0x18, 0x03, 0x0e, 0xa0, 0xc8, 0x02, 0x50, + 0x6c, 0x9b, 0x40, 0xd1, 0x07, 0xb7, 0xec, 0xd2, 0x5c, 0x3b, 0x40, 0x5b, 0x3d, 0x9d, 0xc4, 0x94, + 0x12, 0x9e, 0x5a, 0x32, 0x53, 0x4c, 0x61, 0xaa, 0xc9, 0x4e, 0x39, 0xe5, 0xa9, 0xa7, 0x3c, 0x05, + 0xd5, 0xa6, 0xa2, 0x60, 0x5c, 0x8f, 0x39, 0x66, 0x71, 0xa7, 0x68, 0x74, 0x41, 0xdc, 0x2d, 0x48, + 0x6b, 0x47, 0x3a, 0xde, 0x96, 0xa4, 0xe5, 0x1b, 0x15, 0xda, 0xa2, 0x44, 0x45, 0x6e, 0xa2, 0x36, + 0xa0, 0x62, 0x0b, 0x04, 0x36, 0xa1, 0x6a, 0x1b, 0x64, 0x36, 0x42, 0x66, 0x2b, 0x34, 0x36, 0x23, + 0x66, 0x3b, 0x12, 0xe9, 0x44, 0x41, 0xea, 0x75, 0xe1, 0xa5, 0x11, 0x8f, 0xbf, 0xc5, 0x6a, 0xad, + 0x73, 0x2f, 0x6b, 0x7a, 0xc7, 0x52, 0x24, 0xb7, 0x8a, 0xa5, 0xb2, 0xac, 0xed, 0x84, 0x18, 0x72, + 0x0b, 0xcc, 0x1b, 0xe6, 0x9d, 0x45, 0xf3, 0x36, 0x43, 0x36, 0x7d, 0xff, 0xca, 0x88, 0xb7, 0x61, + 0x61, 0xad, 0xa5, 0x9f, 0x4a, 0x5c, 0xdb, 0x88, 0x12, 0x67, 0xcb, 0x70, 0x3a, 0x9f, 0x66, 0xde, + 0x05, 0x5b, 0xf8, 0xc5, 0xf8, 0xef, 0x43, 0x5b, 0xd4, 0xe5, 0x51, 0x48, 0x41, 0x46, 0xf0, 0xed, + 0x6b, 0x21, 0x41, 0x61, 0xd5, 0x2b, 0x73, 0x87, 0x42, 0xec, 0x1d, 0x53, 0x75, 0x58, 0xf5, 0x6a, + 0xdd, 0x46, 0x29, 0x42, 0xbc, 0x4f, 0xe3, 0xd4, 0x5e, 0x11, 0xf2, 0xdf, 0x32, 0x7e, 0x3b, 0xd5, + 0x35, 0x56, 0x90, 0x8a, 0xec, 0xc6, 0x82, 0xe5, 0xab, 0xad, 0xb8, 0xcc, 0xec, 0x88, 0x39, 0x53, + 0x19, 0x27, 0x1a, 0x39, 0xcf, 0x8f, 0x1f, 0xc7, 0xc6, 0x7f, 0x18, 0xdf, 0x3d, 0x12, 0x19, 0x26, + 0x73, 0x5e, 0x5e, 0x9f, 0xa5, 0xaa, 0x97, 0x4f, 0x2f, 0xd5, 0xac, 0x16, 0x54, 0x60, 0xa2, 0x50, + 0x0b, 0x16, 0x27, 0xac, 0x42, 0x36, 0x30, 0x69, 0x41, 0x2e, 0x23, 0x28, 0x23, 0x23, 0x40, 0x46, + 0xa0, 0x2b, 0x23, 0x10, 0x35, 0x87, 0xa9, 0xde, 0x6b, 0xf6, 0xcc, 0x67, 0xc7, 0x75, 0xb8, 0xc3, + 0x42, 0xf9, 0x31, 0x8b, 0x54, 0xe0, 0xd9, 0xd6, 0x3e, 0x28, 0xd5, 0x9b, 0x2a, 0x4b, 0x5e, 0x2e, + 0xea, 0xfd, 0x29, 0xcd, 0x87, 0xd0, 0x8c, 0xa8, 0xcc, 0x89, 0xdc, 0xac, 0xc8, 0xcd, 0x8b, 0xd6, + 0xcc, 0xe4, 0xcc, 0x4d, 0xd2, 0xec, 0x94, 0xcd, 0x6f, 0xd9, 0x0c, 0xdf, 0xd5, 0x47, 0x7a, 0xc9, + 0x18, 0xdf, 0x55, 0x87, 0x5a, 0xcd, 0x24, 0x95, 0x23, 0x9a, 0x0e, 0x13, 0xd5, 0x60, 0xaa, 0xd4, + 0x26, 0xab, 0xcd, 0x74, 0xb5, 0x99, 0xb0, 0x1e, 0x53, 0x56, 0x33, 0x69, 0x45, 0xd3, 0x26, 0x33, + 0xf1, 0xa9, 0xa9, 0x8b, 0xad, 0xb0, 0xc6, 0x37, 0x77, 0x51, 0x15, 0x28, 0x01, 0x93, 0x27, 0x37, + 0x7d, 0x1d, 0x2e, 0x40, 0xa3, 0x2b, 0xd0, 0xe5, 0x12, 0xb4, 0xbb, 0x06, 0xed, 0x2e, 0x42, 0xaf, + 0xab, 0xa0, 0x71, 0x19, 0x44, 0xae, 0x63, 0xfa, 0xa8, 0x72, 0xc2, 0xf0, 0xd6, 0x76, 0xa5, 0x85, + 0xe3, 0x48, 0x89, 0x89, 0x7e, 0x3a, 0x9c, 0x25, 0xf8, 0xe9, 0x5f, 0xde, 0x0f, 0x49, 0xbd, 0x4b, + 0x41, 0x41, 0x83, 0xbe, 0x9b, 0xdc, 0x73, 0xf4, 0x53, 0xfb, 0x72, 0xe6, 0x9e, 0xa7, 0x7f, 0x79, + 0x17, 0x92, 0xab, 0xf5, 0xcf, 0x24, 0x82, 0x59, 0x24, 0xb7, 0x9c, 0xb9, 0x5d, 0xd8, 0x10, 0x5f, + 0xe6, 0xdc, 0x16, 0x37, 0x4a, 0x88, 0x1b, 0x88, 0x1b, 0x88, 0x1b, 0x34, 0x73, 0x56, 0x7a, 0xb9, + 0x77, 0xeb, 0x8c, 0x15, 0x5f, 0xae, 0x88, 0x0d, 0x8e, 0xa7, 0x84, 0x6d, 0xce, 0x2c, 0x77, 0x8c, + 0xca, 0xa1, 0x8a, 0x2f, 0x06, 0xa7, 0xdb, 0xaf, 0x8f, 0x6a, 0x9e, 0x92, 0x3b, 0xf6, 0x75, 0xa5, + 0x54, 0x53, 0x95, 0x11, 0x54, 0xe0, 0xd9, 0xe1, 0xd9, 0xf7, 0xd4, 0xb3, 0x53, 0x89, 0x0a, 0x51, + 0x83, 0xb2, 0x7b, 0x62, 0x63, 0x5b, 0x82, 0xdc, 0x9e, 0xd9, 0x84, 0xb1, 0x51, 0x1b, 0x3e, 0xea, + 0x74, 0x36, 0x09, 0x38, 0x1d, 0xdd, 0xce, 0x27, 0x31, 0x27, 0x94, 0x98, 0x33, 0x4a, 0xc6, 0x29, + 0xd1, 0x3a, 0x27, 0x62, 0x27, 0xa5, 0x0f, 0x43, 0x97, 0x66, 0xbc, 0xfc, 0xa6, 0xe3, 0xd8, 0xf4, + 0x52, 0x3e, 0x48, 0xe7, 0x80, 0x11, 0x0e, 0x16, 0xad, 0x4a, 0xa0, 0x53, 0x2d, 0x80, 0xfb, 0x87, + 0xfb, 0x87, 0xfb, 0x87, 0xfb, 0x97, 0x2a, 0x9f, 0x27, 0x1d, 0x02, 0x8e, 0x35, 0xb4, 0x2d, 0x55, + 0x9e, 0x4f, 0xba, 0xa3, 0x86, 0xe5, 0xfc, 0x16, 0xab, 0xd3, 0xfd, 0xa1, 0xcb, 0xc8, 0x24, 0x8a, + 0x01, 0x8a, 0xfe, 0xf7, 0xb7, 0xb6, 0x96, 0xe7, 0xfa, 0xad, 0x55, 0xbf, 0xa9, 0x37, 0xbe, 0xde, + 0xdf, 0xd5, 0x8b, 0xda, 0xbe, 0xef, 0xe7, 0x87, 0xac, 0x77, 0xd2, 0xc3, 0xfd, 0xb7, 0x56, 0xfd, + 0x01, 0x3d, 0xb4, 0xbe, 0x87, 0xae, 0xee, 0x2f, 0x9b, 0xd7, 0xcd, 0xf6, 0x65, 0xed, 0xe2, 0xa6, + 0xde, 0xbe, 0xaa, 0xff, 0xf3, 0xfa, 0x12, 0x13, 0x6a, 0x43, 0x77, 0x35, 0x5b, 0xb5, 0xd6, 0xf5, + 0xfd, 0x5d, 0xfb, 0xfe, 0xee, 0xe6, 0x0f, 0xf4, 0xd3, 0x86, 0x7e, 0x6a, 0xff, 0xf3, 0xa6, 0x76, + 0x87, 0x1e, 0x5a, 0xdf, 0x43, 0xf7, 0xad, 0xaf, 0xf0, 0x4c, 0x9b, 0x3a, 0xe8, 0x12, 0x53, 0x68, + 0x4b, 0x0f, 0xdd, 0xd6, 0x2e, 0xdb, 0x17, 0x0f, 0xd7, 0x57, 0x5f, 0xe0, 0xb2, 0x37, 0x31, 0x40, + 0xbd, 0x51, 0xaf, 0x81, 0x02, 0x36, 0xc3, 0xe4, 0xef, 0xf7, 0xed, 0x61, 0xc1, 0xde, 0xc1, 0x94, + 0x7a, 0xa8, 0xdf, 0xd4, 0x10, 0xdc, 0x36, 0xf4, 0xd6, 0xef, 0x37, 0xb5, 0xbb, 0x76, 0xed, 0xf2, + 0xb2, 0xde, 0x6c, 0xb6, 0x1b, 0xf7, 0xd7, 0x77, 0x2d, 0x8d, 0x9d, 0xa5, 0xa5, 0xe5, 0xa7, 0xb4, + 0xa7, 0xfb, 0xd8, 0x34, 0x27, 0xd4, 0x6e, 0x12, 0x9b, 0xe6, 0x28, 0xd7, 0xdf, 0x0b, 0xc9, 0xec, + 0x99, 0x5b, 0x71, 0x7a, 0xea, 0xee, 0xe6, 0xd1, 0x6e, 0x77, 0x7c, 0x6f, 0x3f, 0xab, 0x38, 0x76, + 0x53, 0x42, 0xa5, 0xc8, 0xb7, 0xb6, 0x26, 0x53, 0xaa, 0x7c, 0x7b, 0xa3, 0x12, 0xa5, 0xcc, 0xb7, + 0x36, 0x2a, 0x54, 0xea, 0x5c, 0xf7, 0x78, 0x12, 0x7b, 0x92, 0x24, 0x3c, 0x48, 0x91, 0x64, 0x6f, + 0x91, 0x66, 0x9f, 0xa1, 0xe6, 0x2d, 0x7e, 0x66, 0xe4, 0x15, 0x2f, 0xa2, 0xd9, 0xa3, 0x6d, 0xd6, + 0xa8, 0xbc, 0x63, 0xa8, 0x67, 0x8a, 0xc8, 0xcd, 0x0b, 0xf1, 0x51, 0x95, 0x18, 0x51, 0xd5, 0x97, + 0x70, 0x68, 0x5e, 0xba, 0x21, 0x7b, 0xd5, 0xb5, 0x84, 0x57, 0x5d, 0x17, 0x02, 0x37, 0x5e, 0x75, + 0xdd, 0x2b, 0x3f, 0xa8, 0xfa, 0x72, 0x0a, 0xa5, 0x07, 0x54, 0x78, 0xe9, 0x24, 0x21, 0xdf, 0xd7, + 0x0f, 0xb9, 0xdf, 0x35, 0xb8, 0xfb, 0x46, 0xf1, 0xc6, 0xff, 0x4c, 0x63, 0x78, 0xe1, 0x1f, 0x5e, + 0x70, 0x4f, 0xbc, 0xa0, 0xf2, 0x0b, 0xff, 0xdc, 0x7d, 0xa3, 0x7b, 0xd3, 0x7f, 0xd0, 0x18, 0x5e, + 0xf1, 0x4f, 0xc0, 0x38, 0xa9, 0x8d, 0x54, 0x9b, 0xb1, 0x6a, 0x33, 0x5a, 0x3d, 0xc6, 0x9b, 0x0e, + 0xc1, 0x07, 0xaf, 0xf8, 0xa7, 0xc1, 0xf4, 0x75, 0xb8, 0x00, 0x8d, 0xae, 0x40, 0x97, 0x4b, 0xd0, + 0xee, 0x1a, 0xb4, 0xbb, 0x08, 0xbd, 0xae, 0x82, 0xc6, 0x65, 0x10, 0xb9, 0x0e, 0x5d, 0x1a, 0xa3, + 0x9e, 0x6c, 0x69, 0x8a, 0xec, 0x87, 0xdc, 0x7d, 0x4b, 0xf7, 0xab, 0xfd, 0xc3, 0x7b, 0x6d, 0xb9, + 0x6f, 0x61, 0xbb, 0xe5, 0xbe, 0xe5, 0xf0, 0x8d, 0x7e, 0xbf, 0xef, 0xd0, 0xc7, 0x89, 0x41, 0xa3, + 0x78, 0x9f, 0x1f, 0x41, 0x02, 0x41, 0x22, 0x95, 0x41, 0x02, 0xef, 0xf3, 0x2f, 0xbe, 0xcf, 0x3f, + 0x70, 0x58, 0xf9, 0x72, 0xea, 0x46, 0xd8, 0x7f, 0xe6, 0x94, 0xe3, 0x3c, 0xeb, 0xdc, 0xa3, 0xc6, + 0xe1, 0xe4, 0xe1, 0xe4, 0xe1, 0xe4, 0xe1, 0xe4, 0xb3, 0xe2, 0xe4, 0x23, 0xc7, 0x85, 0xda, 0x2d, + 0xdb, 0x46, 0x19, 0xb5, 0x5b, 0xe0, 0xe0, 0xe1, 0xe0, 0x53, 0xec, 0xe0, 0xc9, 0x6b, 0xb7, 0x50, + 0x4a, 0x01, 0x1a, 0x25, 0x01, 0x4d, 0xd4, 0xa8, 0x8d, 0x1e, 0x75, 0x3a, 0x99, 0x04, 0x9c, 0x8d, + 0x6e, 0xa7, 0x93, 0x98, 0xf3, 0x49, 0xcc, 0x09, 0x25, 0xe3, 0x8c, 0x68, 0x9d, 0x12, 0xb1, 0x73, + 0xd2, 0x47, 0xa1, 0x2b, 0x38, 0x25, 0x70, 0xbc, 0x17, 0x9d, 0xef, 0xeb, 0x9f, 0xed, 0x41, 0xc9, + 0x16, 0x1d, 0x8a, 0x41, 0x02, 0xca, 0x01, 0x62, 0x01, 0x62, 0x01, 0x62, 0x01, 0x62, 0x01, 0x62, + 0x01, 0x61, 0x2c, 0xd0, 0x1b, 0x04, 0xe0, 0xfd, 0xe1, 0xfd, 0xe1, 0xfd, 0xe1, 0xfd, 0xe9, 0x67, + 0xbc, 0xe3, 0xf1, 0xa3, 0x8a, 0x46, 0xe7, 0x7f, 0xa4, 0xa1, 0xe9, 0x07, 0xd3, 0x7b, 0x61, 0xda, + 0x4a, 0x5b, 0xe9, 0x7b, 0xb7, 0xbe, 0x78, 0xeb, 0x78, 0xda, 0x1c, 0xc0, 0x52, 0xd4, 0xfd, 0xa0, + 0xf7, 0x6b, 0x86, 0x05, 0xc6, 0x8a, 0x9f, 0x0a, 0x95, 0x72, 0xf5, 0xb4, 0x7a, 0x76, 0x74, 0x52, + 0x3d, 0xd3, 0xfc, 0x85, 0x9f, 0x03, 0xd3, 0xe2, 0x8e, 0xef, 0x5d, 0x39, 0x2f, 0xce, 0xf0, 0x75, + 0xd7, 0x52, 0x16, 0x2b, 0x37, 0x14, 0x6f, 0xcd, 0x1f, 0x89, 0xcd, 0x81, 0x52, 0xd2, 0x73, 0xe0, + 0x34, 0x47, 0x73, 0xe0, 0x20, 0x1b, 0xad, 0x3e, 0xed, 0x01, 0x5c, 0xbf, 0x8d, 0xe7, 0x99, 0x26, + 0xba, 0x1e, 0x35, 0x0f, 0xbc, 0x06, 0x5e, 0x03, 0xaf, 0x81, 0xd7, 0xa4, 0x33, 0xfe, 0xd9, 0xf1, + 0xcc, 0xe0, 0x5d, 0x23, 0x5f, 0x9f, 0xa3, 0x1e, 0x51, 0x9c, 0xb9, 0x9e, 0xc1, 0x1d, 0xfe, 0x69, + 0xae, 0x43, 0x34, 0xbf, 0xc1, 0x3f, 0x5d, 0xe5, 0x87, 0x08, 0x76, 0x07, 0xe9, 0xd9, 0x03, 0x8a, + 0xcd, 0x9f, 0x69, 0xa5, 0x08, 0xec, 0x0d, 0xda, 0x0d, 0x25, 0x60, 0xf3, 0xa7, 0xb2, 0xca, 0xa3, + 0x75, 0xf3, 0x67, 0xaa, 0x76, 0x7d, 0xa6, 0xa1, 0xac, 0xdc, 0xa0, 0x43, 0x0a, 0x7e, 0xdf, 0x29, + 0xd0, 0xad, 0xca, 0xa3, 0xcc, 0x1c, 0xca, 0xcc, 0x09, 0x81, 0x61, 0xca, 0xca, 0xcb, 0xcd, 0xa1, + 0x20, 0xaa, 0xca, 0xa5, 0x60, 0x92, 0xa4, 0xa4, 0xa4, 0x52, 0x34, 0x31, 0xd2, 0x5c, 0x56, 0xc9, + 0xb1, 0xd5, 0xab, 0x29, 0x39, 0xb6, 0x62, 0x11, 0xa5, 0x12, 0x4a, 0xc9, 0x15, 0x50, 0x44, 0x29, + 0x23, 0xce, 0x4f, 0x99, 0x92, 0x09, 0xa9, 0x98, 0x82, 0x82, 0x97, 0xa9, 0xd7, 0xb1, 0xd3, 0xec, + 0xb1, 0xd4, 0xde, 0x5c, 0x22, 0x79, 0x53, 0x09, 0xc5, 0xdf, 0xe0, 0xb7, 0xf6, 0xaf, 0xf8, 0x9b, + 0xf9, 0xc2, 0xe8, 0x8a, 0xbf, 0x0d, 0x1a, 0xa3, 0x29, 0xfe, 0x56, 0x42, 0xf1, 0xb7, 0x5d, 0x48, + 0x7c, 0x28, 0xfe, 0x96, 0x06, 0x59, 0x86, 0x4c, 0xb2, 0x8b, 0x66, 0x5c, 0xdf, 0xf1, 0xf8, 0x49, + 0x95, 0x62, 0xc2, 0x8d, 0xed, 0x93, 0x60, 0x5b, 0x14, 0xf1, 0x86, 0x37, 0x42, 0x81, 0x53, 0xc7, + 0x86, 0x36, 0x5d, 0x3b, 0x27, 0x26, 0x9b, 0x95, 0xa8, 0xdb, 0xd5, 0xb8, 0x27, 0x89, 0x72, 0x0f, + 0x8d, 0x8e, 0x7d, 0x67, 0xba, 0x87, 0xaa, 0x7c, 0x56, 0xad, 0x9e, 0x9c, 0x56, 0xab, 0xa5, 0xd3, + 0xa3, 0xd3, 0xd2, 0xf9, 0xf1, 0x71, 0xf9, 0x84, 0xfa, 0x1c, 0x58, 0xad, 0xa3, 0x97, 0x12, 0xe5, + 0xfc, 0x69, 0x57, 0xa2, 0x9c, 0x02, 0x52, 0x5b, 0xaf, 0x66, 0x18, 0x3a, 0xa1, 0xa1, 0xa0, 0xcf, + 0x2c, 0xb9, 0xf6, 0x99, 0x36, 0x81, 0x5e, 0x40, 0x2f, 0xa0, 0x57, 0xca, 0xd0, 0x8b, 0xec, 0x45, + 0x34, 0xa2, 0x17, 0xcf, 0x76, 0xed, 0xf9, 0x0c, 0x92, 0x6d, 0x28, 0x2b, 0xdc, 0x9f, 0x41, 0xb1, + 0x6c, 0x09, 0x1f, 0x08, 0x1f, 0x08, 0x1f, 0x48, 0xed, 0x03, 0x69, 0x8d, 0x74, 0xce, 0x19, 0x56, + 0x09, 0xda, 0xaa, 0x7b, 0xfd, 0xee, 0xe0, 0x81, 0x7f, 0x66, 0xd0, 0xb1, 0x52, 0xa2, 0x24, 0x10, + 0x12, 0xee, 0x13, 0xee, 0x13, 0x08, 0x99, 0x4e, 0x4f, 0xe7, 0x9a, 0x21, 0x37, 0xfa, 0x3d, 0x9b, + 0xa2, 0xc4, 0xe1, 0x74, 0xb5, 0x76, 0xa6, 0x51, 0xf8, 0x3e, 0xf8, 0x3e, 0xf8, 0xbe, 0x94, 0xf9, + 0x3e, 0xea, 0x85, 0x8b, 0x2a, 0x16, 0x2e, 0x24, 0x63, 0x86, 0x26, 0x35, 0xfc, 0xbc, 0x52, 0x39, + 0x3a, 0x3a, 0xad, 0x94, 0x8e, 0x4e, 0xce, 0x8e, 0xab, 0xa7, 0xa7, 0xc7, 0x67, 0xa5, 0x33, 0x2c, + 0x65, 0x50, 0x0f, 0x5e, 0x29, 0xb1, 0xc1, 0x3b, 0xc5, 0x4a, 0x86, 0xe8, 0x7f, 0x59, 0x5c, 0xc9, + 0xe8, 0x9a, 0x9e, 0xf9, 0x32, 0xdc, 0x3b, 0x6f, 0x98, 0xb6, 0x1d, 0xb0, 0x30, 0xa4, 0x63, 0xb2, + 0x15, 0x6d, 0x03, 0xcd, 0x80, 0x66, 0x40, 0x33, 0xa4, 0xa5, 0x99, 0xf0, 0x84, 0xc4, 0x2b, 0x1c, + 0xeb, 0xbe, 0x00, 0x3e, 0x11, 0x3e, 0x11, 0x3e, 0x11, 0x3e, 0x31, 0x85, 0x3e, 0xb1, 0xe7, 0x07, + 0xdc, 0xb0, 0x59, 0x68, 0x05, 0x4e, 0x8f, 0xe4, 0xed, 0xc3, 0xa8, 0x7f, 0x97, 0x5a, 0x86, 0x17, + 0x84, 0x17, 0x84, 0x17, 0x84, 0x17, 0x4c, 0xab, 0x17, 0xa4, 0x5c, 0x9f, 0x9d, 0x34, 0x08, 0x9f, + 0x07, 0x9f, 0x07, 0x9f, 0x07, 0x9f, 0x97, 0x5e, 0x9f, 0x47, 0x9c, 0x02, 0xcf, 0xb5, 0x0a, 0xef, + 0x07, 0xef, 0x07, 0xef, 0x97, 0x32, 0xef, 0x47, 0x68, 0xa1, 0x05, 0x6c, 0xef, 0x9b, 0xde, 0x7b, + 0xf8, 0x1e, 0x72, 0xd6, 0xd5, 0x93, 0x4b, 0xaf, 0x68, 0x1b, 0xbe, 0x15, 0xbe, 0x15, 0xbe, 0x35, + 0xff, 0x64, 0x49, 0xd0, 0xd6, 0x0d, 0xf3, 0x5e, 0x86, 0x25, 0x46, 0xf0, 0xfa, 0xae, 0x42, 0xb3, + 0x78, 0x7d, 0x37, 0x73, 0x43, 0x55, 0x39, 0xc6, 0xdb, 0xba, 0xc2, 0xff, 0x3d, 0x65, 0x97, 0xbd, + 0xc6, 0x65, 0xe3, 0x68, 0xa1, 0x6b, 0xd8, 0x28, 0x68, 0x0b, 0xb4, 0x05, 0xda, 0x02, 0x6d, 0x81, + 0xb6, 0x40, 0x5b, 0xa0, 0x2d, 0xd0, 0xd6, 0x5e, 0xd3, 0x16, 0xe7, 0x2e, 0x1d, 0x65, 0x0d, 0x1a, + 0x03, 0x5d, 0x81, 0xae, 0x40, 0x57, 0x29, 0xa3, 0xab, 0xbe, 0xe3, 0xf1, 0xf2, 0x09, 0x21, 0x5d, + 0x9d, 0xe0, 0x7d, 0x2e, 0xb0, 0x15, 0xd8, 0x4a, 0x6a, 0xa8, 0x4e, 0x8e, 0x8f, 0x8f, 0x40, 0x57, + 0xd9, 0xa1, 0xab, 0xbd, 0x3f, 0x0e, 0x42, 0xf5, 0xf0, 0x38, 0xc2, 0x83, 0x20, 0x14, 0x4e, 0x87, + 0x93, 0xa8, 0xa8, 0x7e, 0xa0, 0x71, 0xc4, 0x27, 0xa7, 0x00, 0x09, 0x6f, 0x2c, 0x54, 0x3b, 0xe3, + 0x87, 0xe4, 0x4c, 0x1f, 0x92, 0x33, 0x7c, 0xd4, 0xce, 0xec, 0x11, 0xed, 0x6d, 0x45, 0xbb, 0xa2, + 0xb4, 0xa7, 0xa2, 0x54, 0xa1, 0x7e, 0x22, 0x0b, 0x12, 0xb3, 0x9d, 0xf8, 0x16, 0x10, 0xef, 0x93, + 0x31, 0x47, 0x4d, 0x76, 0xb4, 0x08, 0x46, 0x49, 0x60, 0x70, 0x94, 0x07, 0x25, 0xde, 0x58, 0x6c, + 0xef, 0xd9, 0x18, 0xbd, 0x2a, 0x78, 0xd2, 0x83, 0xd4, 0xc9, 0x0e, 0x82, 0x25, 0x0b, 0x84, 0x4f, + 0x6e, 0x90, 0xc9, 0xc5, 0x15, 0x72, 0x6e, 0xd9, 0xdc, 0x5a, 0x39, 0x87, 0x56, 0xce, 0x95, 0xd5, + 0x72, 0x62, 0x5a, 0x4b, 0x16, 0x3d, 0x29, 0xa1, 0x68, 0xf9, 0xfd, 0x81, 0xa5, 0x88, 0xbf, 0xd8, + 0x3e, 0x2d, 0x7b, 0x37, 0x69, 0x41, 0x34, 0x20, 0x4b, 0x55, 0xdc, 0x90, 0x96, 0x9a, 0x54, 0xa4, + 0x25, 0x02, 0x29, 0x49, 0x55, 0x3a, 0x22, 0x93, 0x8a, 0xc8, 0xa4, 0x21, 0x1a, 0x29, 0x48, 0x2f, + 0xf4, 0xc9, 0x1e, 0x1c, 0x52, 0xec, 0x04, 0x66, 0x97, 0x19, 0xb6, 0x13, 0x5a, 0x66, 0x40, 0x70, + 0xcc, 0xd8, 0x7c, 0x73, 0x38, 0x71, 0x0c, 0x27, 0xf7, 0xec, 0x4c, 0x73, 0xcd, 0xea, 0x89, 0x63, + 0xe3, 0x30, 0xa3, 0x54, 0x26, 0x8b, 0xe0, 0x5c, 0x0f, 0x22, 0x19, 0x95, 0xe6, 0xb4, 0x58, 0xc2, + 0x85, 0x08, 0xda, 0x33, 0xc9, 0x89, 0x65, 0x52, 0x1d, 0x7a, 0xdb, 0x4f, 0x9a, 0xb3, 0x75, 0x53, + 0x3f, 0x04, 0xfa, 0xce, 0xe1, 0xd0, 0x32, 0x2a, 0x3b, 0x52, 0x1d, 0x9f, 0x52, 0x7c, 0x6a, 0xe0, + 0x08, 0x1e, 0x58, 0x10, 0xf8, 0x81, 0xa1, 0x60, 0xf3, 0x0b, 0x30, 0x12, 0xb5, 0x07, 0x1a, 0x01, + 0x8d, 0x80, 0x46, 0x40, 0x23, 0xa0, 0x11, 0xd0, 0x08, 0x68, 0x04, 0x34, 0x22, 0x40, 0x23, 0x7e, + 0x9f, 0xd3, 0xe2, 0xc8, 0xa0, 0x41, 0xf0, 0x08, 0x78, 0x04, 0x3c, 0x02, 0x1e, 0x01, 0x8f, 0x80, + 0x47, 0xc0, 0x23, 0xe0, 0x91, 0x58, 0x3c, 0x42, 0xa7, 0x8b, 0x40, 0x11, 0x01, 0x81, 0x80, 0x40, + 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x12, 0x97, 0x40, 0x08, 0xb5, 0x10, 0xa8, + 0x20, 0x60, 0x10, 0x30, 0x08, 0x18, 0x04, 0x0c, 0x02, 0x06, 0x01, 0x83, 0x80, 0x41, 0x62, 0x74, + 0xf3, 0xf0, 0x84, 0x57, 0xcb, 0x65, 0x66, 0xa0, 0x0e, 0x21, 0x33, 0x6d, 0x81, 0x42, 0x40, 0x21, + 0xa0, 0x10, 0xc1, 0x19, 0x63, 0x9b, 0x9c, 0x19, 0xa6, 0x67, 0x1b, 0xdc, 0x51, 0x2a, 0x7f, 0x46, + 0x51, 0x5a, 0xa9, 0xd8, 0x30, 0x39, 0x67, 0x81, 0xa7, 0x0c, 0x23, 0xc5, 0xc7, 0x47, 0xfb, 0xef, + 0xea, 0x4f, 0x63, 0xf0, 0x47, 0x65, 0xf2, 0x47, 0x6b, 0xf4, 0xc7, 0xa7, 0xb9, 0x3f, 0x7e, 0x79, + 0x7c, 0xfc, 0xf8, 0xf8, 0x68, 0xff, 0xe3, 0xd7, 0xff, 0xfc, 0xe5, 0x5f, 0xff, 0xfb, 0xe7, 0xe3, + 0xe3, 0x3f, 0x1e, 0x1f, 0x8d, 0xa7, 0xb9, 0x4f, 0xfc, 0x5a, 0xcc, 0xa5, 0x0f, 0xe6, 0xee, 0x1b, + 0xdd, 0x1b, 0x03, 0xb3, 0x8d, 0xc1, 0x0b, 0xc3, 0x0b, 0xc3, 0x0b, 0x23, 0x17, 0x44, 0x2e, 0x88, + 0x5c, 0x10, 0xb9, 0x20, 0x72, 0xc1, 0x18, 0x1c, 0xd2, 0xf7, 0xbe, 0x7b, 0xfe, 0x5f, 0x1e, 0x0d, + 0x87, 0x4c, 0x1a, 0x03, 0x87, 0x80, 0x43, 0xc0, 0x21, 0xe0, 0x10, 0x70, 0x08, 0x38, 0x04, 0x1c, + 0xb2, 0x5f, 0x1c, 0x92, 0xcf, 0x6a, 0x51, 0xc3, 0x7a, 0x3b, 0x87, 0x92, 0x15, 0x4c, 0x0a, 0x0a, + 0x45, 0x89, 0x86, 0x85, 0xd5, 0xda, 0x97, 0x93, 0x2f, 0xd6, 0x55, 0x25, 0x4a, 0xa0, 0xfc, 0x0e, + 0xf3, 0xcc, 0x67, 0x97, 0xd9, 0xf2, 0x75, 0x60, 0x26, 0x0d, 0x88, 0x96, 0xe8, 0x60, 0x1d, 0xb3, + 0xef, 0x0e, 0x19, 0x61, 0x80, 0x1c, 0x92, 0x55, 0x64, 0x4a, 0xa8, 0x22, 0x93, 0x28, 0x34, 0xee, + 0x55, 0x15, 0x19, 0x69, 0x18, 0x8c, 0x46, 0xfc, 0xd9, 0xf7, 0x5d, 0x66, 0xca, 0x64, 0x50, 0xd1, + 0x22, 0x40, 0x39, 0x05, 0x3e, 0x42, 0xea, 0x90, 0x98, 0xa8, 0x13, 0x24, 0x4e, 0x83, 0x81, 0x79, + 0xc3, 0xbc, 0xb3, 0x60, 0xde, 0x66, 0xc8, 0x8c, 0x88, 0x2a, 0x8c, 0x80, 0x75, 0x54, 0x2c, 0xfd, + 0x54, 0xe2, 0xda, 0x46, 0xc4, 0x3e, 0x96, 0xe1, 0x74, 0x3e, 0xcd, 0xc0, 0xce, 0xc2, 0x2f, 0xc6, + 0x7f, 0x1f, 0xda, 0x22, 0x6a, 0x53, 0xae, 0x65, 0xc2, 0x04, 0xea, 0x52, 0x0a, 0xd4, 0xd6, 0x8d, + 0x51, 0x93, 0xf2, 0x40, 0xa1, 0xaf, 0x27, 0xb5, 0x71, 0x63, 0x38, 0x68, 0xb1, 0x6a, 0xb8, 0x52, + 0xd5, 0x6f, 0xa5, 0xaa, 0xdd, 0x8a, 0x55, 0xb7, 0xdd, 0xd6, 0x1f, 0x82, 0x73, 0x4e, 0x7a, 0xae, + 0x15, 0x63, 0x55, 0x12, 0x95, 0x99, 0x5d, 0x9b, 0xe7, 0xd5, 0xfa, 0xd9, 0xb2, 0xfa, 0x5f, 0xd6, + 0xf4, 0x57, 0xdc, 0x7e, 0x12, 0xec, 0x9f, 0x0d, 0xbd, 0x22, 0xd4, 0x1b, 0xab, 0xfb, 0x60, 0xf9, + 0x09, 0x57, 0x3c, 0xdd, 0x96, 0xfa, 0xad, 0xb1, 0xea, 0xb5, 0x6e, 0x29, 0x70, 0xb9, 0xb5, 0x1e, + 0x6b, 0x1c, 0x16, 0x11, 0x60, 0x8e, 0xb8, 0x6c, 0x21, 0xcc, 0x10, 0xc2, 0xac, 0x20, 0xc6, 0x04, + 0x62, 0x33, 0x72, 0x5b, 0xc1, 0xc7, 0xa2, 0xf5, 0x6a, 0x86, 0xa1, 0x13, 0x1a, 0xce, 0xf6, 0x4c, + 0x77, 0x2a, 0xe1, 0x4e, 0xaf, 0xd9, 0xe6, 0x48, 0x63, 0xe1, 0x6a, 0x6c, 0x3c, 0x15, 0xc1, 0x51, + 0x09, 0xfc, 0x14, 0xc5, 0x4d, 0x69, 0xbc, 0x94, 0xc6, 0x49, 0x39, 0x7c, 0x54, 0x0b, 0x86, 0xb1, + 0x71, 0x50, 0xfc, 0x30, 0xbd, 0xe9, 0x8e, 0x2e, 0x59, 0xf7, 0xfc, 0x21, 0xce, 0xcc, 0x1e, 0x9d, + 0x4f, 0x2f, 0x31, 0xbd, 0xe3, 0x1c, 0x6c, 0x8f, 0x39, 0xbe, 0x97, 0x73, 0x5c, 0x6c, 0x92, 0xcc, + 0x4d, 0xf6, 0x6a, 0x8c, 0xcf, 0xd6, 0xbd, 0x7e, 0x77, 0x70, 0x43, 0x3f, 0x75, 0x18, 0x46, 0xdc, + 0x12, 0xd7, 0xa2, 0x25, 0xad, 0x63, 0x96, 0xb0, 0x86, 0x29, 0xa4, 0xd9, 0x14, 0xe2, 0x96, 0x88, + 0x2e, 0x32, 0x8f, 0x07, 0x0e, 0x0b, 0x0d, 0xf3, 0x85, 0xd9, 0x42, 0x6f, 0xfb, 0xcd, 0x28, 0xe4, + 0x0b, 0x2d, 0x88, 0x15, 0xfa, 0x2f, 0x89, 0x16, 0xfa, 0x2f, 0xa1, 0xd0, 0x3f, 0xa9, 0xa8, 0x95, + 0xa6, 0x42, 0xff, 0xc2, 0xa2, 0x95, 0xd2, 0x86, 0x04, 0x89, 0x0d, 0x08, 0x92, 0x1b, 0x0e, 0xe4, + 0x8e, 0xd8, 0x51, 0x50, 0x4c, 0xd5, 0x36, 0x27, 0x29, 0x6e, 0x18, 0xa0, 0x58, 0x8a, 0xfe, 0x29, + 0x77, 0xa0, 0xd0, 0xce, 0xbb, 0x8c, 0x6e, 0x81, 0x9f, 0xa4, 0x17, 0x35, 0x89, 0xa1, 0x4f, 0x09, + 0x1e, 0x3a, 0x23, 0x77, 0x68, 0x81, 0xd2, 0x21, 0x05, 0x88, 0x4d, 0x88, 0x4d, 0x88, 0x4d, 0x88, + 0x4d, 0x88, 0x4d, 0x88, 0x4d, 0x31, 0x62, 0x93, 0x70, 0x11, 0x7b, 0xb5, 0xa2, 0xf5, 0x88, 0x4e, + 0x88, 0x4e, 0x88, 0x4e, 0x88, 0x4e, 0x88, 0x4e, 0x88, 0x4e, 0x31, 0xa2, 0x93, 0x7c, 0x5c, 0x42, + 0x44, 0x42, 0x44, 0x42, 0x44, 0x42, 0x44, 0x42, 0x44, 0x42, 0x44, 0xa2, 0x8c, 0x48, 0x52, 0xcb, + 0x4c, 0xa2, 0x45, 0x24, 0x11, 0x93, 0x10, 0x93, 0x10, 0x93, 0x10, 0x93, 0x10, 0x93, 0x10, 0x93, + 0x36, 0x76, 0x83, 0x44, 0x91, 0x41, 0xf9, 0xa2, 0x82, 0x88, 0x4a, 0x88, 0x4a, 0x84, 0x51, 0x49, + 0xb6, 0x28, 0x9f, 0x4c, 0x11, 0x3e, 0xe9, 0xa2, 0x7b, 0x3b, 0x2a, 0xb2, 0x97, 0xa4, 0x0f, 0xe1, + 0xee, 0x9b, 0x61, 0x5a, 0x16, 0xeb, 0x71, 0x26, 0xb1, 0x44, 0x3d, 0x77, 0x35, 0xfc, 0x08, 0xfc, + 0x08, 0xe8, 0x16, 0x74, 0x0b, 0xba, 0x05, 0xdd, 0x12, 0x45, 0x26, 0xe9, 0xbd, 0x53, 0xe2, 0xe5, + 0x5a, 0x11, 0x97, 0x10, 0x97, 0x10, 0x97, 0x10, 0x97, 0x10, 0x97, 0x10, 0x97, 0xb6, 0xc6, 0x25, + 0xd1, 0x72, 0x9e, 0x0a, 0xe5, 0x3b, 0x11, 0x97, 0x10, 0x97, 0x10, 0x97, 0x10, 0x97, 0x10, 0x97, + 0xf6, 0x39, 0x2e, 0xa5, 0xae, 0x7c, 0x8a, 0x70, 0xa5, 0xc6, 0x18, 0xa5, 0x42, 0x44, 0x8a, 0x30, + 0xca, 0xbd, 0x7a, 0x1c, 0xb7, 0xa8, 0xa2, 0x60, 0x11, 0x45, 0xc1, 0xa2, 0x89, 0x78, 0x65, 0x9f, + 0x38, 0x44, 0x67, 0xe3, 0x95, 0xfd, 0xf8, 0x45, 0x07, 0x63, 0x16, 0x19, 0x94, 0xb3, 0x81, 0x57, + 0xe6, 0xba, 0xfe, 0x70, 0xd9, 0x25, 0x88, 0x6f, 0x07, 0xb3, 0x17, 0x61, 0x72, 0x63, 0x72, 0x2f, + 0xf5, 0x78, 0xdf, 0xf1, 0x78, 0x2c, 0xa8, 0x14, 0x80, 0x49, 0x41, 0x88, 0x14, 0xa0, 0x61, 0x19, + 0x68, 0x94, 0xad, 0x7d, 0x29, 0x09, 0x89, 0x2a, 0x58, 0x23, 0x52, 0x43, 0x54, 0x06, 0x06, 0x55, + 0xbb, 0x42, 0x1d, 0xfe, 0x94, 0x7a, 0x87, 0x08, 0xca, 0x9e, 0x34, 0x38, 0xe7, 0xb0, 0xdf, 0xeb, + 0x05, 0x2c, 0x0c, 0x8d, 0xe1, 0xca, 0xaa, 0xfd, 0xc6, 0x02, 0xee, 0x84, 0x6c, 0x6c, 0xfd, 0x31, + 0x7d, 0xf5, 0x86, 0x36, 0xe0, 0xba, 0xe1, 0xba, 0x97, 0x7a, 0xdc, 0xb1, 0x99, 0xc7, 0x1d, 0xfe, + 0x1e, 0xaf, 0x4c, 0x6a, 0xc4, 0x26, 0x31, 0x2c, 0xb6, 0x78, 0x3d, 0x6e, 0xfa, 0xc2, 0x0c, 0x99, + 0xb8, 0x58, 0x76, 0x73, 0x73, 0xd5, 0x68, 0xb7, 0x6e, 0xfe, 0x19, 0x77, 0x98, 0x86, 0xee, 0x25, + 0x14, 0x12, 0x1d, 0x24, 0x4b, 0x27, 0x37, 0xee, 0x1f, 0x5a, 0xed, 0xab, 0x7a, 0xf3, 0xf2, 0xe1, + 0xba, 0xd1, 0xba, 0xbe, 0xbf, 0x2b, 0xea, 0x70, 0xcd, 0x92, 0xf7, 0xd6, 0xfc, 0xa3, 0xd9, 0xaa, + 0xdf, 0xb6, 0x2f, 0x6b, 0x8d, 0xda, 0xc5, 0xf5, 0xcd, 0x75, 0xeb, 0xba, 0xde, 0x4c, 0xe1, 0xed, + 0xa5, 0xb4, 0xf3, 0x2e, 0xbf, 0xd6, 0x9a, 0xcd, 0xeb, 0x66, 0xfb, 0xfa, 0x2a, 0x4d, 0x77, 0x75, + 0x5b, 0xbb, 0xab, 0x7d, 0xa9, 0xdf, 0xd6, 0xef, 0x5a, 0xed, 0xda, 0xd5, 0xd5, 0x43, 0xbd, 0x99, + 0xaa, 0x11, 0x1d, 0x1a, 0x43, 0xba, 0x3a, 0x6c, 0x3c, 0xc9, 0xee, 0x6a, 0xb7, 0x75, 0x6a, 0x89, + 0xf6, 0x49, 0xb3, 0xff, 0xce, 0x47, 0x41, 0x5f, 0x39, 0xf8, 0x79, 0x0f, 0x39, 0xeb, 0x1a, 0x36, + 0x0b, 0xad, 0xc0, 0xe9, 0xc5, 0xd2, 0xab, 0xa6, 0xd0, 0xb3, 0x7c, 0x2d, 0x60, 0x07, 0xb0, 0xb3, + 0x3c, 0x4f, 0xc4, 0x6b, 0x83, 0xc6, 0xf8, 0xec, 0x0d, 0xf3, 0x5e, 0x86, 0x6a, 0x29, 0x32, 0xd5, + 0x7c, 0x65, 0xaa, 0x95, 0x63, 0x24, 0xa6, 0xb3, 0xbe, 0x39, 0xd6, 0x89, 0x23, 0x8b, 0x4e, 0x39, + 0x4e, 0x1d, 0x7b, 0x78, 0x63, 0x78, 0x63, 0x78, 0x63, 0x78, 0x63, 0x78, 0xe3, 0xcd, 0xff, 0x92, + 0xc4, 0xd1, 0x0f, 0xdb, 0x4e, 0x5c, 0x89, 0xbb, 0x94, 0x1b, 0xfb, 0xc0, 0x87, 0x83, 0x0d, 0x4f, + 0xb8, 0xed, 0xc9, 0xe2, 0x3c, 0x51, 0x71, 0xe5, 0x89, 0x12, 0x5b, 0x9e, 0x61, 0xfe, 0xee, 0xa7, + 0xf7, 0x38, 0x73, 0x7f, 0x45, 0xce, 0x82, 0xae, 0xe3, 0x99, 0xae, 0x61, 0xb3, 0x37, 0x67, 0x45, + 0x3c, 0x98, 0xee, 0xfb, 0x5a, 0xf8, 0xe0, 0xc2, 0x33, 0xae, 0x2e, 0x5c, 0xbd, 0x36, 0xda, 0x6d, + 0x8a, 0x6e, 0xb3, 0xd1, 0xcc, 0xef, 0x71, 0x63, 0xf0, 0xcd, 0xab, 0x9e, 0x7f, 0x4b, 0x04, 0x8b, + 0x1d, 0xb1, 0x62, 0x47, 0xa8, 0xc5, 0x88, 0x14, 0xdd, 0x9c, 0xe0, 0x7c, 0x58, 0x57, 0x20, 0xba, + 0x68, 0x4d, 0x7a, 0x6b, 0xcb, 0x21, 0x21, 0xe3, 0xcf, 0x29, 0x9e, 0x12, 0x52, 0xa2, 0x39, 0x25, + 0x64, 0xc3, 0x10, 0x89, 0xc2, 0x46, 0xf2, 0x27, 0x85, 0xac, 0x1f, 0xc2, 0x5d, 0x39, 0xb1, 0x05, + 0x3b, 0x3b, 0x5c, 0xfc, 0xfb, 0xc6, 0xb1, 0xdf, 0xe8, 0x17, 0x5a, 0xe3, 0x96, 0xae, 0x86, 0x0d, + 0xb5, 0x17, 0xfe, 0x3a, 0x9e, 0x16, 0x0a, 0x27, 0xdc, 0xb8, 0xfe, 0x8b, 0x63, 0x99, 0xae, 0x61, + 0xbd, 0x9a, 0x9e, 0xc7, 0xdc, 0x70, 0xfb, 0x3c, 0x5e, 0xba, 0x02, 0x33, 0x3a, 0x75, 0x33, 0x3a, + 0xce, 0xf9, 0x37, 0x83, 0xc1, 0x13, 0x3a, 0x1d, 0x64, 0x78, 0x41, 0x36, 0x8e, 0x42, 0x88, 0x31, + 0x19, 0xb2, 0x9b, 0x53, 0x6d, 0x9f, 0x2c, 0x34, 0x79, 0x55, 0xec, 0x23, 0x11, 0xb6, 0x44, 0x40, + 0xb9, 0x88, 0x28, 0x39, 0xb5, 0x84, 0xa7, 0x98, 0xcc, 0x54, 0x53, 0x9c, 0x72, 0xb2, 0x53, 0x4f, + 0x79, 0x0a, 0x2a, 0x4f, 0x45, 0xf5, 0x29, 0x29, 0x98, 0xe6, 0xc4, 0x1c, 0xbb, 0xb8, 0x53, 0x35, + 0xba, 0xc0, 0xb4, 0xbb, 0x8e, 0x67, 0x6c, 0x3e, 0xde, 0x6d, 0xeb, 0xa8, 0xcf, 0x36, 0xb2, 0x1f, + 0x07, 0xda, 0x4a, 0x4c, 0x72, 0xd5, 0xc9, 0x4e, 0x36, 0xe9, 0xc9, 0x26, 0x3f, 0x9d, 0x11, 0x88, + 0x19, 0x83, 0x84, 0x5c, 0x52, 0xa0, 0x39, 0xd8, 0x76, 0x66, 0xa2, 0xc7, 0x3d, 0xf6, 0x69, 0xad, + 0xfb, 0xae, 0x4a, 0x5c, 0x1b, 0xef, 0x58, 0x28, 0xf9, 0x5e, 0x15, 0x11, 0xa0, 0x44, 0x96, 0x09, + 0xd7, 0x76, 0x68, 0xfc, 0xf5, 0x42, 0x78, 0x0e, 0x78, 0x8e, 0x0c, 0x7b, 0x8e, 0xd8, 0x4a, 0xfb, + 0x7a, 0xe5, 0x3d, 0x05, 0x36, 0xef, 0x78, 0x36, 0xfb, 0x21, 0x6f, 0xed, 0xa3, 0xcb, 0x61, 0xe7, + 0xb0, 0xf3, 0xdc, 0xda, 0x79, 0xdf, 0xf1, 0xf8, 0x51, 0x45, 0xc1, 0xce, 0x65, 0x4e, 0xbb, 0x97, + 0x7b, 0xd9, 0x73, 0xf2, 0x9f, 0xdc, 0x24, 0x2b, 0xa8, 0xbe, 0xfc, 0xa9, 0x68, 0xe0, 0x4b, 0xcd, + 0x28, 0xbe, 0x0c, 0x1a, 0xb5, 0x43, 0xf0, 0x3a, 0xa3, 0xe4, 0xf4, 0x9b, 0xef, 0x5a, 0x85, 0x97, + 0x44, 0x75, 0x75, 0x6d, 0xb5, 0x72, 0x5e, 0x3d, 0x3f, 0x39, 0xad, 0x9c, 0x1f, 0xa7, 0xa8, 0x8f, + 0x0f, 0x92, 0xb9, 0xea, 0x29, 0x05, 0xe1, 0x77, 0x41, 0x71, 0x8e, 0x77, 0xae, 0xf1, 0x5a, 0x57, + 0xb5, 0xb2, 0x35, 0x04, 0x67, 0x04, 0xe7, 0xdc, 0x06, 0x67, 0xb1, 0x37, 0x2d, 0xd6, 0x92, 0xb8, + 0x84, 0xf7, 0x93, 0x7b, 0x13, 0x63, 0xed, 0x83, 0xdc, 0xdc, 0x7f, 0xb9, 0xbe, 0xac, 0xdd, 0xb4, + 0xeb, 0x37, 0xa3, 0x5d, 0xe9, 0x8d, 0x87, 0xfb, 0xd6, 0xfd, 0xe5, 0xfd, 0x4d, 0xbb, 0xf5, 0x47, + 0xa3, 0x5e, 0x54, 0x29, 0x0d, 0x10, 0x4a, 0x63, 0x84, 0x1a, 0x4a, 0xcc, 0x3d, 0xde, 0xe0, 0x71, + 0xda, 0xf7, 0xad, 0xbb, 0xe2, 0x2e, 0x22, 0x2f, 0xe5, 0x33, 0xd4, 0x5b, 0x5f, 0xeb, 0x0f, 0x77, + 0xf5, 0x56, 0x31, 0xe1, 0xf0, 0xf6, 0x94, 0x9a, 0x0a, 0x0c, 0x62, 0xe1, 0xcd, 0xef, 0x3d, 0x9b, + 0xd6, 0x77, 0xa3, 0xeb, 0xdb, 0x4a, 0x71, 0x6d, 0xb6, 0x19, 0x04, 0x34, 0x04, 0xb4, 0xdc, 0x06, + 0xb4, 0xb9, 0xa9, 0xbe, 0x5b, 0x45, 0x5a, 0xe2, 0xda, 0x99, 0xaa, 0x1d, 0x77, 0xf7, 0x77, 0xf5, + 0x62, 0x0a, 0x5c, 0x50, 0x60, 0x72, 0x66, 0x58, 0xae, 0x19, 0x86, 0xf2, 0xfe, 0x67, 0xa6, 0x0d, + 0x38, 0x1f, 0x38, 0x1f, 0xd0, 0x74, 0xda, 0x69, 0xba, 0xf5, 0x70, 0x7d, 0xf1, 0xad, 0x55, 0x7b, + 0xf8, 0xa3, 0xfd, 0x50, 0x6b, 0xd5, 0xdb, 0x97, 0x37, 0xb5, 0x66, 0x33, 0x27, 0x24, 0x3d, 0x78, + 0xb4, 0xd1, 0x53, 0x1d, 0x97, 0x4a, 0x5f, 0xb2, 0xcc, 0xd3, 0xd3, 0x27, 0x39, 0xcb, 0xcd, 0x93, + 0x94, 0xcb, 0xb9, 0x79, 0x94, 0x6a, 0x5e, 0x1e, 0xe4, 0x24, 0x47, 0x43, 0x92, 0x1b, 0x3b, 0xc9, + 0xd1, 0x93, 0xe4, 0xe5, 0x41, 0x72, 0xf2, 0x1c, 0x95, 0x8f, 0xc7, 0x79, 0x79, 0x92, 0xdc, 0x18, + 0xc9, 0x79, 0x6e, 0x9e, 0xa4, 0x72, 0x9c, 0x1b, 0x7b, 0xcf, 0xcd, 0x93, 0x9c, 0xe6, 0x29, 0x2c, + 0xe6, 0xe5, 0x51, 0x8e, 0xd4, 0x9e, 0x64, 0x8f, 0x44, 0x72, 0xce, 0x42, 0x6e, 0x84, 0xce, 0x8b, + 0x67, 0xba, 0xf2, 0x12, 0xd5, 0x6c, 0x23, 0xd0, 0xa8, 0xa0, 0x51, 0xe5, 0x56, 0xa3, 0x8a, 0x5f, + 0xf3, 0x77, 0xad, 0x3e, 0x55, 0x4e, 0x83, 0xd1, 0x07, 0xce, 0xb3, 0xd1, 0x0b, 0x7c, 0xee, 0x5b, + 0xbe, 0x8a, 0xd9, 0xcf, 0x35, 0x03, 0xc3, 0x87, 0xe1, 0x43, 0x9c, 0xde, 0x6c, 0xfc, 0x69, 0x12, + 0xa7, 0xf3, 0xb8, 0xc9, 0xa3, 0xfc, 0xa5, 0x9e, 0xf9, 0x4d, 0x1e, 0xf7, 0xad, 0x6f, 0xd5, 0xec, + 0x3f, 0xc4, 0xd5, 0xb7, 0xa3, 0xcc, 0x3f, 0x44, 0xb3, 0x75, 0x5b, 0x39, 0x3e, 0xc9, 0xfe, 0x58, + 0x5c, 0x9e, 0x9e, 0x9c, 0xe5, 0xe0, 0x29, 0xaa, 0x67, 0x79, 0xb0, 0xed, 0x4a, 0xf6, 0x3d, 0x54, + 0xb9, 0xf4, 0xa5, 0xde, 0xbe, 0xa9, 0xdd, 0xe5, 0x61, 0x38, 0x8e, 0xf2, 0xe0, 0x6a, 0x73, 0x31, + 0xa7, 0x4a, 0x39, 0x88, 0xdd, 0xcd, 0xd6, 0x6d, 0xf9, 0x24, 0x17, 0x63, 0xd1, 0xbe, 0xbd, 0xf9, + 0x92, 0x07, 0xd3, 0xb8, 0xbc, 0xcb, 0x87, 0xbb, 0xfd, 0x3d, 0x1f, 0xee, 0xb6, 0x9c, 0x0b, 0x3e, + 0xaf, 0xe4, 0xe1, 0x21, 0x72, 0x60, 0x19, 0x83, 0xd0, 0x97, 0x87, 0x98, 0x71, 0x92, 0xfd, 0x84, + 0xaf, 0x9a, 0x87, 0xf0, 0x7d, 0x7f, 0x95, 0x87, 0xd4, 0xfb, 0xb2, 0x7c, 0x5e, 0xd9, 0xe3, 0xc5, + 0x2f, 0xd2, 0x02, 0x48, 0x82, 0x67, 0x6d, 0x46, 0xd7, 0xc9, 0x97, 0x34, 0x5c, 0x2c, 0x03, 0x78, + 0x38, 0xfe, 0xe1, 0x50, 0xa8, 0xaa, 0x57, 0x41, 0xbe, 0xf6, 0xe1, 0xcd, 0xe8, 0x06, 0x2e, 0xc7, + 0xdf, 0xdf, 0x1e, 0xff, 0xb0, 0xb1, 0x26, 0xa2, 0xf8, 0x20, 0xc4, 0x39, 0x9a, 0x9b, 0xf1, 0x57, + 0x16, 0x78, 0x8c, 0x8b, 0x57, 0x40, 0x8b, 0xae, 0x44, 0x0d, 0x34, 0xd4, 0x40, 0x53, 0x74, 0x01, + 0xc2, 0x35, 0xd0, 0x04, 0xcb, 0xf6, 0x2d, 0x0d, 0xb8, 0xb0, 0xa1, 0x4b, 0x4c, 0x61, 0xe9, 0xa9, + 0xac, 0x32, 0xa5, 0x89, 0xa6, 0xb6, 0xea, 0x14, 0x27, 0x9b, 0xea, 0x64, 0x53, 0x9e, 0x6e, 0xea, + 0x4b, 0x46, 0x57, 0xc1, 0xb1, 0x17, 0x35, 0x89, 0xe8, 0x42, 0xd3, 0x0d, 0x0d, 0x9b, 0xb9, 0xe6, + 0xbb, 0xfa, 0x42, 0xd6, 0xb4, 0x29, 0xc9, 0xbe, 0x9e, 0x79, 0x5d, 0xac, 0x24, 0xdb, 0x86, 0xe2, + 0xe9, 0xe9, 0xb2, 0xc6, 0x47, 0x61, 0x84, 0xc4, 0xc6, 0x48, 0x65, 0x94, 0xe4, 0xc6, 0x49, 0x6e, + 0xa4, 0xf4, 0xc6, 0xaa, 0x86, 0xde, 0x92, 0x69, 0x87, 0xfc, 0xa2, 0xf8, 0xd2, 0xcc, 0x91, 0x2e, + 0x52, 0xb4, 0x68, 0x47, 0xa7, 0x0a, 0x4d, 0xa8, 0x15, 0x2d, 0xa2, 0x49, 0xc4, 0x0a, 0x54, 0x45, + 0x8c, 0x88, 0x1c, 0xcc, 0x52, 0x73, 0x44, 0x45, 0x8d, 0xa2, 0xf6, 0x08, 0x0b, 0xef, 0x10, 0x64, + 0xd1, 0xd3, 0x21, 0x20, 0x28, 0x76, 0xa4, 0x7b, 0x08, 0xa8, 0x8a, 0x1f, 0x69, 0x1d, 0x8b, 0x83, + 0xdd, 0x5c, 0xfd, 0x94, 0x50, 0x11, 0x26, 0x99, 0xb7, 0xcc, 0x2d, 0xd7, 0x61, 0x1e, 0x37, 0x4c, + 0x37, 0x54, 0x67, 0x98, 0x99, 0xb6, 0xd4, 0x21, 0x26, 0x2a, 0x0e, 0x02, 0x96, 0x01, 0xcb, 0x80, + 0x65, 0x24, 0x67, 0x0e, 0xf3, 0xfa, 0x5d, 0x16, 0x98, 0x12, 0x15, 0x84, 0x57, 0x66, 0xe3, 0x55, + 0x85, 0x36, 0xe4, 0xaa, 0x33, 0x2b, 0x78, 0x43, 0xad, 0x39, 0xa3, 0xa4, 0x92, 0xaa, 0x53, 0x51, + 0x9d, 0xa8, 0x84, 0x87, 0x52, 0x8a, 0x8b, 0x06, 0x89, 0xb5, 0x3e, 0xbe, 0x21, 0x21, 0xad, 0x55, + 0x7c, 0xf8, 0x84, 0x8a, 0x28, 0xb9, 0x76, 0x4f, 0xa1, 0x76, 0x52, 0xbc, 0xf3, 0x17, 0x21, 0x64, + 0x41, 0xc8, 0xca, 0x96, 0x90, 0x25, 0xa9, 0xf1, 0x2e, 0x13, 0xa0, 0xac, 0xe7, 0x51, 0x30, 0x15, + 0x20, 0x1b, 0x90, 0x6d, 0xf7, 0xc8, 0x26, 0x6b, 0x7a, 0x51, 0x03, 0xcc, 0x33, 0x9f, 0x5d, 0x66, + 0xab, 0x0f, 0xf5, 0x14, 0xfd, 0x46, 0x0d, 0x2a, 0x8e, 0xcb, 0x4c, 0x4a, 0xd6, 0x31, 0xdd, 0x90, + 0xa9, 0xb6, 0x47, 0x54, 0x74, 0x59, 0xd5, 0xd8, 0x29, 0x8d, 0x5e, 0x93, 0xf1, 0x53, 0x3b, 0x01, + 0x6d, 0xce, 0x40, 0x9b, 0x53, 0xd0, 0xe7, 0x1c, 0x88, 0x24, 0x21, 0xc5, 0xb9, 0xa7, 0x9c, 0xe7, + 0x2d, 0xcd, 0x3c, 0xf9, 0x37, 0x3a, 0xd7, 0x46, 0xe3, 0xf2, 0x8e, 0x54, 0x33, 0x95, 0xf2, 0xf0, + 0xa1, 0xe7, 0xfb, 0x3d, 0xc7, 0x7b, 0xa1, 0xf3, 0xa6, 0x51, 0x8b, 0x70, 0xa7, 0x70, 0xa7, 0x70, + 0xa7, 0x70, 0xa7, 0x99, 0x73, 0xa7, 0x89, 0xe2, 0xb0, 0xa2, 0x3c, 0x96, 0x88, 0x4c, 0x36, 0x3c, + 0x80, 0x5d, 0x29, 0x63, 0xd5, 0xa9, 0x99, 0x0d, 0x4f, 0x7a, 0x97, 0x11, 0xce, 0x14, 0x14, 0x53, + 0x09, 0xad, 0xc7, 0x63, 0xce, 0xcb, 0xeb, 0xb3, 0x1f, 0x10, 0x2c, 0x1f, 0x4d, 0x9b, 0xda, 0xb1, + 0x7e, 0x50, 0x81, 0x7e, 0x00, 0xfd, 0x20, 0x6b, 0xfa, 0xc1, 0xc4, 0x7a, 0xe8, 0x90, 0x37, 0x6a, + 0x91, 0x06, 0x51, 0xcb, 0x40, 0x54, 0x20, 0xea, 0xbe, 0x23, 0xaa, 0xaa, 0x99, 0x47, 0x0d, 0x29, + 0x2a, 0xf6, 0x6b, 0x27, 0xb2, 0x32, 0x0f, 0x69, 0x30, 0x7d, 0x72, 0x17, 0xa0, 0xc3, 0x15, 0x68, + 0x76, 0x09, 0xba, 0x5c, 0x83, 0x76, 0x17, 0xa1, 0xdd, 0x55, 0xe8, 0x77, 0x19, 0x34, 0xae, 0x83, + 0xc8, 0x85, 0x50, 0xa7, 0x58, 0xc9, 0xa7, 0x5c, 0x11, 0xe7, 0x47, 0x3f, 0x1d, 0x92, 0x7a, 0x1d, + 0xed, 0x59, 0xd9, 0xdd, 0xe4, 0x01, 0xa2, 0x9f, 0x94, 0x12, 0x35, 0xfa, 0x69, 0x46, 0xb1, 0xe9, + 0xd4, 0xea, 0x87, 0xdc, 0xef, 0x1a, 0xdc, 0x7d, 0x0b, 0x35, 0x44, 0x99, 0x99, 0xc6, 0x53, 0x1e, + 0x6a, 0x2a, 0xd9, 0x08, 0x35, 0x12, 0x5b, 0x53, 0x10, 0x66, 0x28, 0xc2, 0xcc, 0xb0, 0xe3, 0x73, + 0x1a, 0x62, 0xa8, 0x68, 0x35, 0x6a, 0x90, 0xbb, 0x6f, 0xf4, 0x53, 0x2a, 0xaa, 0xdf, 0xe9, 0xbe, + 0x51, 0x4f, 0x26, 0x5a, 0xa7, 0xa2, 0x8d, 0x63, 0x75, 0x3a, 0x99, 0x04, 0x9c, 0x8d, 0x6e, 0xa7, + 0x93, 0x98, 0xf3, 0x49, 0xcc, 0x09, 0x25, 0xe3, 0x8c, 0x68, 0x9d, 0x12, 0xb1, 0x73, 0xd2, 0xe6, + 0xa4, 0x74, 0xa5, 0xd8, 0xc9, 0xa4, 0xdc, 0x09, 0xb9, 0x30, 0xed, 0xae, 0x2c, 0x09, 0x97, 0x96, + 0xa0, 0x6b, 0x4b, 0xca, 0xc5, 0x25, 0xee, 0xea, 0x12, 0x77, 0x79, 0xc9, 0xba, 0x3e, 0x3d, 0x2e, + 0x50, 0x93, 0x2b, 0xd4, 0x2d, 0x0d, 0xa4, 0x43, 0x2a, 0x98, 0xa6, 0x8e, 0x87, 0xdc, 0x7d, 0x3b, + 0xd4, 0xea, 0x3d, 0x77, 0x22, 0x25, 0x0c, 0x1f, 0xb0, 0xe5, 0xbe, 0x85, 0xed, 0x96, 0xfb, 0x46, + 0xaa, 0x2c, 0xe8, 0x9f, 0xd5, 0x1a, 0x66, 0x74, 0xd1, 0xef, 0x3b, 0xfa, 0x83, 0xf0, 0xe0, 0x4b, + 0xf4, 0x46, 0xe0, 0x12, 0x22, 0x30, 0x22, 0x30, 0x22, 0xf0, 0x7e, 0x44, 0x60, 0xb2, 0xad, 0x68, + 0x5b, 0x2d, 0xc6, 0x65, 0x66, 0x47, 0xee, 0x18, 0x07, 0xe1, 0x14, 0xe2, 0x54, 0xe3, 0x77, 0x34, + 0xc6, 0x10, 0xf1, 0xf1, 0xe3, 0x61, 0xc8, 0x4d, 0xce, 0x0e, 0x07, 0x0e, 0x79, 0xbf, 0x83, 0x9e, + 0x11, 0xf6, 0x9f, 0xb9, 0xce, 0x79, 0x34, 0x1b, 0xfc, 0xa2, 0x2f, 0x43, 0x10, 0x44, 0x10, 0x44, + 0x10, 0x44, 0x10, 0x44, 0x10, 0x4c, 0x47, 0x10, 0x8c, 0x1c, 0xf3, 0x1e, 0x07, 0xc3, 0x61, 0x67, + 0xe8, 0x0f, 0x83, 0xa3, 0xaf, 0xc9, 0xb8, 0x0e, 0x5b, 0x41, 0x00, 0x44, 0x00, 0x44, 0x00, 0x4c, + 0x45, 0x00, 0xd4, 0xb5, 0x34, 0x95, 0x88, 0x34, 0xb6, 0x2a, 0x4b, 0xd0, 0x3d, 0x79, 0xf5, 0x66, + 0x09, 0x89, 0x65, 0x0b, 0x49, 0x3a, 0xcd, 0x1d, 0x38, 0xcf, 0xa4, 0x9d, 0xe8, 0xce, 0x9c, 0xe9, + 0xce, 0x9c, 0xea, 0x6e, 0x9c, 0xab, 0x5e, 0x27, 0xab, 0xd9, 0xd9, 0x26, 0x97, 0x75, 0xac, 0xe0, + 0xc6, 0x40, 0xfd, 0xcd, 0x70, 0x21, 0x88, 0x3c, 0x3b, 0xc8, 0xe6, 0xf8, 0x6b, 0x1c, 0xfb, 0x44, + 0x14, 0xb3, 0x55, 0x31, 0x51, 0xb3, 0x72, 0x86, 0xd8, 0x88, 0xd8, 0x88, 0xd8, 0x88, 0xd8, 0x88, + 0xd8, 0x88, 0xd8, 0x28, 0xdd, 0x37, 0xc9, 0x06, 0x45, 0x44, 0x43, 0x44, 0x43, 0x44, 0x43, 0x44, + 0x43, 0x44, 0xc3, 0x45, 0x8b, 0x53, 0x3d, 0x59, 0x44, 0xd4, 0x3d, 0x1e, 0x25, 0xf0, 0x55, 0x34, + 0x27, 0x95, 0xc4, 0xfd, 0x2f, 0x19, 0xff, 0x51, 0xa0, 0x3e, 0xf9, 0x44, 0x98, 0x62, 0x3e, 0x24, + 0xfb, 0xb5, 0x93, 0x63, 0x3c, 0x2a, 0xe5, 0xea, 0x69, 0xf5, 0xec, 0xe8, 0xa4, 0x7a, 0x96, 0xf0, + 0x0d, 0x68, 0x38, 0xee, 0x23, 0x25, 0x6e, 0x66, 0x7e, 0x4e, 0x99, 0x3f, 0x76, 0x36, 0xa7, 0x4a, + 0xbb, 0x9e, 0x53, 0xa7, 0x7b, 0x34, 0xa7, 0x0e, 0xf2, 0xf1, 0x2d, 0x4f, 0x48, 0xa6, 0x96, 0xa6, + 0xd5, 0xdb, 0x78, 0x5e, 0x27, 0x94, 0x4d, 0x8d, 0xbe, 0x0e, 0xe9, 0x14, 0xd2, 0x29, 0xa4, 0x53, + 0x48, 0xa7, 0x90, 0x4e, 0xcd, 0x96, 0x67, 0x75, 0x3c, 0x33, 0x78, 0x4f, 0x30, 0x9f, 0x3a, 0xcf, + 0x6a, 0x38, 0xc4, 0xeb, 0x8b, 0x2b, 0xbe, 0x27, 0x0d, 0xaf, 0x2f, 0xea, 0xdc, 0x73, 0x58, 0xd8, + 0xfd, 0xdb, 0x8b, 0xcd, 0xe1, 0xe3, 0xed, 0xf1, 0xd6, 0xd5, 0x64, 0x5e, 0xe0, 0xc0, 0x9b, 0x1b, + 0x3b, 0x45, 0x41, 0x6c, 0x5c, 0xcd, 0x20, 0xea, 0x61, 0xe3, 0xea, 0x0e, 0x51, 0x2e, 0xf7, 0x6f, + 0x6e, 0x64, 0xea, 0x95, 0x8d, 0x54, 0xd7, 0xf7, 0xf9, 0x8d, 0xbd, 0x4f, 0x42, 0x5c, 0xc1, 0xef, + 0x3b, 0x05, 0x7d, 0x5b, 0xae, 0x8a, 0x37, 0x4e, 0xc8, 0x6b, 0x9c, 0x6b, 0xaa, 0x27, 0x74, 0xeb, + 0x78, 0x75, 0x97, 0x0d, 0x3c, 0x4e, 0x58, 0xfc, 0x54, 0xf0, 0xfa, 0xae, 0xab, 0x81, 0x37, 0x6e, + 0xcd, 0x1f, 0xfa, 0xbf, 0xe4, 0x3e, 0xb0, 0x59, 0xc0, 0xec, 0x8b, 0xf7, 0xf1, 0x57, 0xa4, 0x7a, + 0xfe, 0x68, 0xce, 0x26, 0xd2, 0x90, 0x45, 0x14, 0xb5, 0xbc, 0x73, 0xb5, 0xc3, 0xbc, 0x81, 0xd6, + 0x73, 0xfe, 0x44, 0x05, 0xe0, 0x2c, 0xcd, 0xe8, 0x2c, 0x97, 0x01, 0x8e, 0x66, 0x71, 0x9e, 0x4a, + 0x01, 0x3b, 0x36, 0x7d, 0x05, 0x60, 0xc7, 0x26, 0x2e, 0xfc, 0x5b, 0x42, 0x8d, 0xf9, 0xb4, 0xe7, + 0x98, 0xa8, 0x31, 0x9f, 0xb5, 0x08, 0x43, 0x9e, 0x07, 0x6a, 0xcc, 0xfb, 0x74, 0xe4, 0x79, 0xcb, + 0x79, 0x9d, 0x63, 0xe7, 0xc9, 0xb3, 0xd3, 0xbe, 0x58, 0xaf, 0xe5, 0x45, 0xfa, 0x7d, 0x2f, 0xec, + 0x0e, 0xff, 0x0e, 0xff, 0xae, 0xcd, 0xbf, 0x93, 0x17, 0x78, 0x37, 0x5f, 0x98, 0xbe, 0x02, 0xef, + 0x83, 0xc6, 0xf5, 0x14, 0x78, 0x2f, 0xa1, 0xc0, 0x3b, 0x0a, 0xbc, 0xa7, 0xc9, 0x11, 0xad, 0x73, + 0x48, 0xfb, 0x58, 0xe0, 0x5d, 0xdb, 0x62, 0x44, 0x34, 0xe3, 0xfb, 0x8e, 0xc7, 0x4f, 0xaa, 0x3a, + 0x26, 0xfc, 0xd8, 0xbf, 0x68, 0xd8, 0x4d, 0xad, 0x79, 0xdf, 0xbd, 0xc6, 0xa5, 0x9f, 0x24, 0xf6, + 0xd5, 0x27, 0xb5, 0xa1, 0x71, 0xb2, 0xc7, 0x59, 0xf7, 0xf7, 0x24, 0xb8, 0x95, 0x59, 0xe7, 0xd6, + 0xd9, 0x24, 0xb6, 0xbf, 0x27, 0x3d, 0xf4, 0xe5, 0xb3, 0x6a, 0xf5, 0xe4, 0xb4, 0x5a, 0x2d, 0x9d, + 0x1e, 0x9d, 0x96, 0xce, 0x8f, 0x8f, 0xcb, 0x27, 0xe5, 0xe3, 0x1c, 0xcd, 0x86, 0x8c, 0xac, 0x61, + 0x3e, 0xa5, 0x75, 0xc5, 0x80, 0x30, 0x6d, 0xb3, 0x5e, 0xcd, 0x30, 0x74, 0x42, 0x83, 0x50, 0x8f, + 0x5d, 0x0a, 0x85, 0x33, 0xdf, 0x01, 0xd4, 0x06, 0x6a, 0x03, 0xb5, 0x81, 0xda, 0xa4, 0x33, 0x5e, + 0x5b, 0x3d, 0x08, 0x4d, 0xf5, 0x1f, 0xd2, 0x1e, 0x09, 0x0c, 0x2d, 0x1b, 0x4c, 0x57, 0x84, 0x03, + 0x43, 0xc7, 0x86, 0x1b, 0xc4, 0x04, 0xc4, 0x04, 0xc4, 0x84, 0x7d, 0x8f, 0x09, 0x7a, 0x9d, 0xcc, + 0x5c, 0x70, 0xa8, 0x6a, 0x68, 0xbb, 0xee, 0xf5, 0xbb, 0x83, 0x0e, 0xfa, 0xb9, 0x07, 0x81, 0x47, + 0x67, 0xea, 0x81, 0x94, 0x03, 0xe1, 0x05, 0xe1, 0x05, 0xe1, 0x05, 0x29, 0x47, 0x1a, 0x3d, 0xbf, + 0x6b, 0x86, 0xdc, 0xe8, 0xf7, 0x6c, 0x1d, 0x27, 0x31, 0x4c, 0x77, 0x05, 0xcd, 0x7c, 0x09, 0x62, + 0x01, 0x62, 0x01, 0x62, 0x01, 0x62, 0x01, 0x2d, 0x63, 0x6a, 0x5e, 0xe8, 0xad, 0x62, 0xa1, 0x77, + 0x7a, 0xe3, 0x49, 0x2e, 0xf4, 0x96, 0x13, 0x5a, 0xed, 0x3b, 0xaf, 0x54, 0x8e, 0x8e, 0x4e, 0x2b, + 0xa5, 0xa3, 0x93, 0xb3, 0xe3, 0xea, 0xe9, 0xe9, 0xf1, 0x59, 0xe9, 0x0c, 0x4b, 0xbf, 0xb1, 0x26, + 0x43, 0x0e, 0x97, 0x7e, 0x97, 0x27, 0xc3, 0x29, 0x56, 0x7e, 0x93, 0x6e, 0x75, 0x1f, 0x56, 0x7e, + 0xbb, 0xa6, 0x67, 0xbe, 0x0c, 0xdf, 0xea, 0x34, 0x4c, 0xdb, 0x0e, 0x58, 0x18, 0xea, 0x63, 0xf0, + 0x15, 0xdf, 0x05, 0x14, 0x07, 0x8a, 0x03, 0xc5, 0x81, 0xe2, 0x90, 0x65, 0x32, 0x10, 0x19, 0x34, + 0xaf, 0x08, 0xaf, 0xfb, 0x42, 0xc4, 0x08, 0xc4, 0x08, 0xc4, 0x08, 0xc4, 0x08, 0xc4, 0x88, 0xd4, + 0xc5, 0x88, 0x9e, 0x1f, 0x70, 0xc3, 0x66, 0xa1, 0x15, 0x38, 0x3d, 0x2d, 0x75, 0x50, 0xa2, 0xf1, + 0x5a, 0xfa, 0x26, 0x44, 0x05, 0x44, 0x05, 0x44, 0x05, 0x44, 0x05, 0x44, 0x85, 0x74, 0x46, 0x05, + 0x9d, 0xfb, 0x79, 0x26, 0x5f, 0x80, 0x18, 0x80, 0x18, 0x80, 0x18, 0x80, 0x18, 0x80, 0x18, 0x90, + 0xd6, 0x18, 0xa0, 0x59, 0x32, 0x9a, 0xfb, 0x16, 0x44, 0x03, 0x44, 0x03, 0x44, 0x03, 0x44, 0x83, + 0xac, 0x78, 0x98, 0x02, 0x5e, 0x1f, 0x20, 0x2c, 0xc7, 0xf9, 0x1e, 0x72, 0xd6, 0x4d, 0x46, 0x8b, + 0x5a, 0xf1, 0x5d, 0x88, 0x3d, 0x88, 0x3d, 0x88, 0x3d, 0x88, 0x3d, 0x59, 0xcb, 0x44, 0x34, 0xb4, + 0x7d, 0xc3, 0xbc, 0x97, 0x61, 0x69, 0x4b, 0xec, 0x2a, 0x4d, 0xce, 0xb5, 0x2f, 0x7d, 0x0d, 0xca, + 0x07, 0x89, 0x0d, 0x7d, 0x0e, 0xf7, 0x90, 0x56, 0x8e, 0x51, 0x2d, 0x28, 0xf1, 0x56, 0x9f, 0xf6, + 0x87, 0xb5, 0xc7, 0xb5, 0xef, 0xf5, 0x42, 0xf6, 0xf0, 0x4b, 0x40, 0xd7, 0xa0, 0x6b, 0xd0, 0x35, + 0xe8, 0x1a, 0x74, 0x0d, 0xba, 0x06, 0x5d, 0x83, 0xae, 0x41, 0xd7, 0xa0, 0xeb, 0xdc, 0xd2, 0x35, + 0xe7, 0xae, 0x3e, 0xaa, 0x1e, 0x34, 0x0e, 0x9a, 0x06, 0x4d, 0x83, 0xa6, 0x41, 0xd3, 0xa4, 0x33, + 0xbe, 0xef, 0x78, 0xbc, 0x7c, 0xa2, 0x91, 0xa6, 0x4f, 0x50, 0xff, 0x00, 0x2c, 0x0d, 0x96, 0xce, + 0x25, 0x4b, 0x9f, 0x1c, 0x1f, 0x1f, 0x81, 0xa6, 0x41, 0xd3, 0xa4, 0x2d, 0xe1, 0x2c, 0xdc, 0xe5, + 0xb3, 0x70, 0x29, 0x8f, 0xcf, 0x2b, 0xec, 0xe0, 0x14, 0xdc, 0xe6, 0xf0, 0xfe, 0xd3, 0x72, 0x4c, + 0xe2, 0xc1, 0x0e, 0xa7, 0xe7, 0xe4, 0xf0, 0x7a, 0xe5, 0xb7, 0x20, 0x68, 0x8f, 0xa6, 0xd7, 0x72, + 0x14, 0xbd, 0x96, 0xa3, 0xe7, 0x69, 0x8f, 0x9a, 0x57, 0x1d, 0x4d, 0x62, 0x27, 0xb3, 0x0b, 0xe7, + 0x52, 0x24, 0x39, 0x35, 0x34, 0x49, 0x77, 0xa2, 0xe6, 0x48, 0xe4, 0xcd, 0x5f, 0xee, 0x4a, 0xc9, + 0x29, 0x46, 0x35, 0xb5, 0x12, 0x9c, 0x52, 0x0a, 0x33, 0x29, 0x99, 0x19, 0x24, 0x37, 0x71, 0xc4, + 0x87, 0x5d, 0x62, 0xc8, 0x15, 0x0f, 0xde, 0x25, 0x39, 0x68, 0x57, 0xb1, 0x72, 0x9e, 0xf2, 0x41, + 0xba, 0x14, 0x12, 0x1f, 0xf1, 0x41, 0xb9, 0x54, 0xb2, 0x1d, 0xb9, 0x3c, 0x47, 0x2e, 0xc3, 0xd1, + 0x1f, 0x74, 0x9b, 0xac, 0xbb, 0x54, 0x3d, 0xb8, 0xb6, 0x68, 0xf9, 0x7d, 0x8f, 0xb3, 0x40, 0xbd, + 0x8e, 0xda, 0xf4, 0x14, 0x83, 0x49, 0x8b, 0xaa, 0xc8, 0x48, 0x52, 0xd0, 0x92, 0x4c, 0x99, 0xa7, + 0x54, 0xe2, 0x35, 0x28, 0xef, 0xd4, 0x4a, 0xbb, 0x36, 0x65, 0x5d, 0x9b, 0x92, 0xae, 0x47, 0x39, + 0xdf, 0x6d, 0xda, 0x44, 0x75, 0x2e, 0x75, 0xb1, 0x13, 0x98, 0x5d, 0x66, 0xd8, 0x4e, 0x68, 0x99, + 0x81, 0x4d, 0x7f, 0xd0, 0xfd, 0x7c, 0xf3, 0xb4, 0x07, 0xde, 0x97, 0xa8, 0x0f, 0xbc, 0x2f, 0x65, + 0xe3, 0xc0, 0x7b, 0xe2, 0x25, 0x39, 0x1c, 0x76, 0x9f, 0xac, 0xe3, 0x48, 0xa7, 0x3c, 0x48, 0xbe, + 0xb4, 0xb6, 0x18, 0xf6, 0x49, 0xab, 0x8a, 0x6b, 0x38, 0x36, 0x5a, 0xd3, 0x2a, 0x9a, 0x86, 0xb5, + 0x4a, 0x9d, 0xab, 0x66, 0x9a, 0x97, 0x4c, 0x74, 0xaf, 0x92, 0x25, 0xb1, 0x3c, 0xa2, 0x61, 0x55, + 0x4c, 0xeb, 0x6a, 0x58, 0x52, 0x43, 0x9a, 0xdc, 0x31, 0xcf, 0x89, 0x8c, 0x72, 0x4a, 0x17, 0x95, + 0x9e, 0xd2, 0xb2, 0x6a, 0xf0, 0x81, 0x8a, 0x3d, 0x59, 0x10, 0xf8, 0x81, 0x41, 0xe8, 0xd3, 0x16, + 0xe0, 0x33, 0x6a, 0x1f, 0xf4, 0x09, 0xfa, 0x04, 0x7d, 0x82, 0x3e, 0x41, 0x9f, 0xa0, 0x4f, 0xd0, + 0x27, 0xe8, 0x13, 0xf4, 0x09, 0xfa, 0x1c, 0xd3, 0xa1, 0xdf, 0xe7, 0x7a, 0xf1, 0x73, 0xf0, 0x05, + 0xe0, 0x4f, 0xf0, 0x27, 0xf8, 0x13, 0xfc, 0x09, 0xfe, 0x04, 0x7f, 0x82, 0x3f, 0xc1, 0x9f, 0xe0, + 0x4f, 0xf0, 0xa7, 0x46, 0xdd, 0x13, 0x8a, 0x27, 0x88, 0x13, 0xc4, 0x09, 0xe2, 0x04, 0x71, 0x82, + 0x38, 0x41, 0x9c, 0x20, 0x4e, 0x10, 0x27, 0x88, 0x73, 0xc0, 0x85, 0x1a, 0xb5, 0x4e, 0xa8, 0x9c, + 0x60, 0x4e, 0x30, 0x27, 0x98, 0x13, 0xcc, 0x09, 0xe6, 0x04, 0x73, 0x82, 0x39, 0xc1, 0x9c, 0x7b, + 0xcf, 0x9c, 0xae, 0x19, 0x72, 0xc3, 0x72, 0x99, 0x19, 0xd0, 0x43, 0xe7, 0x4c, 0xdb, 0xa0, 0x4e, + 0x50, 0x27, 0xa8, 0x73, 0xcf, 0xa8, 0xd3, 0x36, 0x39, 0x33, 0x4c, 0xcf, 0x36, 0xb8, 0x43, 0x5a, + 0x5d, 0x5f, 0x47, 0xe5, 0xeb, 0x62, 0xc3, 0xe4, 0x9c, 0x05, 0x1e, 0x39, 0x7c, 0x16, 0x1f, 0x1f, + 0xed, 0xbf, 0xab, 0x3f, 0x8d, 0xc1, 0x1f, 0x95, 0xc9, 0x1f, 0xad, 0xd1, 0x1f, 0x9f, 0xe6, 0xfe, + 0xf8, 0xe5, 0xf1, 0xf1, 0xe3, 0xe3, 0xa3, 0xfd, 0x8f, 0x5f, 0xff, 0xf3, 0x97, 0x7f, 0xfd, 0xef, + 0x9f, 0x8f, 0x8f, 0xff, 0x78, 0x7c, 0x34, 0x9e, 0xe6, 0x3e, 0xf1, 0x6b, 0x11, 0x31, 0x6c, 0x45, + 0x0f, 0x73, 0xf7, 0x4d, 0xdf, 0x1b, 0xb2, 0xb3, 0x8d, 0x23, 0x8a, 0x21, 0x8a, 0x21, 0x8a, 0x41, + 0x3b, 0x81, 0x76, 0x02, 0xed, 0x04, 0xda, 0x09, 0xb4, 0x13, 0x68, 0x27, 0x7b, 0xcf, 0x9d, 0x7d, + 0xef, 0xbb, 0xe7, 0xff, 0xe5, 0xe9, 0xe1, 0xce, 0x49, 0xe3, 0xe0, 0x4e, 0x70, 0x27, 0xb8, 0x13, + 0xdc, 0x09, 0xee, 0x04, 0x77, 0x82, 0x3b, 0xc1, 0x9d, 0xe0, 0xce, 0xec, 0x72, 0x27, 0xea, 0x7f, + 0x8b, 0x14, 0x6b, 0x1e, 0xd6, 0x07, 0x3e, 0x24, 0xaa, 0x4c, 0x5a, 0xd0, 0x5d, 0xb9, 0x79, 0x78, + 0x6e, 0x40, 0xfb, 0x72, 0x72, 0xb7, 0xbb, 0xaa, 0xfb, 0xad, 0x50, 0x3f, 0x98, 0x79, 0xe6, 0xb3, + 0xcb, 0x6c, 0xba, 0xa2, 0xb2, 0x93, 0x06, 0x55, 0xeb, 0x69, 0xb2, 0x8e, 0xd9, 0x77, 0x87, 0x40, + 0xd9, 0x31, 0xdd, 0x90, 0x11, 0xd5, 0xa8, 0x2d, 0xe5, 0xbc, 0x46, 0x2d, 0x41, 0x49, 0x69, 0x5d, + 0xe9, 0x4e, 0xf6, 0xeb, 0xd4, 0xaa, 0x97, 0x9c, 0x4e, 0x47, 0x50, 0x20, 0x4b, 0x61, 0xa2, 0x99, + 0xf7, 0xec, 0xfb, 0x2e, 0x33, 0x29, 0x74, 0x8b, 0x68, 0xa9, 0xb7, 0x9c, 0x41, 0x67, 0x1a, 0x7a, + 0xbe, 0xdf, 0x73, 0xbc, 0x17, 0x3a, 0x6f, 0x1a, 0xb5, 0x08, 0x77, 0x0a, 0x77, 0x0a, 0x77, 0x0a, + 0x77, 0x9a, 0x39, 0x77, 0x8a, 0x33, 0x69, 0xd6, 0xa6, 0x39, 0x69, 0x3d, 0x8f, 0x46, 0xe1, 0x34, + 0x34, 0x89, 0xb3, 0x68, 0x0e, 0x34, 0x4e, 0x0c, 0xd5, 0x09, 0xa1, 0x7d, 0x22, 0x14, 0xa5, 0x4e, + 0xe2, 0xd1, 0x36, 0xf4, 0x62, 0x83, 0x1e, 0x7f, 0xe8, 0x04, 0x86, 0x4d, 0xf2, 0xa0, 0x21, 0xa5, + 0x03, 0x86, 0x24, 0x4f, 0x30, 0x91, 0x3e, 0x50, 0x48, 0x05, 0x57, 0x88, 0xf0, 0x44, 0x15, 0x47, + 0xc8, 0xf0, 0x83, 0x0c, 0x37, 0xe8, 0xf0, 0x42, 0xaf, 0x4b, 0x92, 0x3d, 0x29, 0xa4, 0x68, 0xba, + 0xa1, 0x61, 0x33, 0xd7, 0x7c, 0x57, 0x3f, 0x85, 0x6b, 0xda, 0x94, 0xec, 0x69, 0x46, 0xd3, 0x7c, + 0xa2, 0xa4, 0x78, 0x9a, 0x57, 0x49, 0xf5, 0x34, 0xaf, 0x12, 0x4e, 0xf3, 0xd2, 0x9d, 0x1b, 0xe0, + 0x34, 0x2f, 0x6a, 0xe6, 0x9f, 0x3b, 0xe0, 0xfe, 0xa8, 0xa2, 0x32, 0x69, 0xc6, 0x76, 0x74, 0xaa, + 0xd0, 0x04, 0xcd, 0x92, 0x2e, 0xcd, 0x31, 0xaf, 0x84, 0x19, 0x32, 0xed, 0xf6, 0x17, 0xe2, 0x25, + 0x59, 0x1d, 0x8b, 0x73, 0x3f, 0x69, 0x0e, 0xc5, 0x4d, 0xfd, 0x10, 0x54, 0x2b, 0xe7, 0xd5, 0xf3, + 0x93, 0xd3, 0xca, 0xf9, 0x71, 0x8a, 0xc7, 0x62, 0x47, 0x19, 0xf7, 0x53, 0x8a, 0x0f, 0x11, 0xb5, + 0x5c, 0x87, 0x79, 0xdc, 0x30, 0xdd, 0x50, 0x9d, 0x61, 0x66, 0xda, 0x52, 0x87, 0x98, 0x7a, 0xeb, + 0x6b, 0xfd, 0xe1, 0xae, 0xde, 0x02, 0xcb, 0x80, 0x65, 0xc0, 0x32, 0xb2, 0x33, 0x87, 0x79, 0xfd, + 0x2e, 0x0b, 0x46, 0x72, 0x8b, 0x3a, 0xd0, 0x94, 0xab, 0x0a, 0x6d, 0xd4, 0xbd, 0x7e, 0x77, 0xf0, + 0x50, 0x3f, 0x53, 0xec, 0x0d, 0x1d, 0xcf, 0x38, 0x2b, 0x55, 0xca, 0xff, 0x63, 0x0c, 0x8b, 0xf5, + 0x10, 0xb8, 0xc4, 0xc5, 0x06, 0xe1, 0xcc, 0x06, 0xf6, 0xc8, 0xf8, 0x2b, 0xfc, 0x98, 0x84, 0x1f, + 0x1b, 0xf4, 0xdb, 0xde, 0xb9, 0x30, 0x8a, 0x4d, 0xb8, 0x04, 0x9b, 0x6e, 0x91, 0x91, 0x21, 0x23, + 0xcb, 0x54, 0x46, 0xa6, 0x6f, 0x53, 0x2b, 0x72, 0xb3, 0xc4, 0x68, 0xe4, 0xd9, 0xf5, 0xad, 0xef, + 0xa3, 0x03, 0x52, 0x68, 0x68, 0x64, 0xae, 0x41, 0xd0, 0x08, 0x68, 0x04, 0x34, 0x02, 0x1a, 0x01, + 0x8d, 0x80, 0x46, 0x40, 0x23, 0xa0, 0x91, 0x6d, 0x34, 0x62, 0x05, 0x16, 0x25, 0x8b, 0xcc, 0x34, + 0x07, 0x12, 0x01, 0x89, 0x80, 0x44, 0x40, 0x22, 0x20, 0x11, 0x90, 0x08, 0x48, 0x04, 0x24, 0xb2, + 0x8d, 0x44, 0x3a, 0x81, 0xf9, 0x32, 0x08, 0x00, 0x94, 0x0b, 0x35, 0x8b, 0x6d, 0x82, 0x49, 0xc0, + 0x24, 0x60, 0x12, 0x30, 0x09, 0x98, 0x04, 0x4c, 0x02, 0x26, 0x01, 0x93, 0x6c, 0x63, 0x92, 0xff, + 0x6b, 0x3e, 0x3f, 0xb3, 0x80, 0x92, 0x48, 0xe6, 0x5b, 0x04, 0x8f, 0x80, 0x47, 0xc0, 0x23, 0xe0, + 0x11, 0xf0, 0x08, 0x78, 0x04, 0x3c, 0x02, 0x1e, 0xd9, 0xc6, 0x23, 0x5d, 0xd3, 0x32, 0x2c, 0xdf, + 0xe3, 0x81, 0xef, 0x52, 0x42, 0xc9, 0x8a, 0x66, 0x41, 0x26, 0x20, 0x13, 0x90, 0x09, 0xc8, 0x04, + 0x64, 0x02, 0x32, 0x01, 0x99, 0x80, 0x4c, 0xe2, 0x90, 0x49, 0xcf, 0xec, 0x87, 0x8c, 0x9a, 0x4b, + 0xe6, 0x1a, 0x05, 0x95, 0x80, 0x4a, 0x40, 0x25, 0xa0, 0x12, 0x50, 0x09, 0xa8, 0x04, 0x54, 0x02, + 0x2a, 0xd9, 0x46, 0x25, 0xfe, 0x1b, 0x0b, 0x42, 0xe7, 0xdf, 0xa4, 0x50, 0xb2, 0xd8, 0x26, 0x98, + 0x04, 0x4c, 0x02, 0x26, 0x01, 0x93, 0x80, 0x49, 0xc0, 0x24, 0x60, 0x12, 0x30, 0xc9, 0x36, 0x26, + 0xe9, 0x59, 0xa1, 0xf1, 0xec, 0xf4, 0x28, 0xdf, 0xba, 0x59, 0x68, 0x12, 0x44, 0x82, 0xf2, 0x4a, + 0x8a, 0x58, 0xb2, 0xbf, 0xe5, 0x95, 0xc0, 0x26, 0x60, 0x13, 0xb0, 0x09, 0xd8, 0x64, 0x6f, 0xd9, + 0x64, 0x08, 0x11, 0xcc, 0x36, 0x42, 0x66, 0xf9, 0x9e, 0x4d, 0x07, 0x28, 0x8b, 0xed, 0x82, 0x52, + 0x40, 0x29, 0xa0, 0x14, 0x50, 0x0a, 0x28, 0x05, 0x94, 0x02, 0x4a, 0x01, 0xa5, 0x88, 0x51, 0x4a, + 0xc8, 0xde, 0x58, 0xc0, 0xdc, 0x77, 0x6d, 0xb8, 0xb2, 0xf6, 0x0b, 0xc0, 0x2d, 0xe0, 0x16, 0x70, + 0x0b, 0xb8, 0x05, 0xdc, 0x02, 0x6e, 0x01, 0xb7, 0x80, 0x5b, 0xc4, 0xb8, 0xa5, 0xef, 0x99, 0x6f, + 0xa6, 0xe3, 0x9a, 0xcf, 0x2e, 0x23, 0x47, 0x96, 0x55, 0x6d, 0x83, 0x56, 0x40, 0x2b, 0xa0, 0x15, + 0xd0, 0x0a, 0x68, 0x05, 0xb4, 0x02, 0x5a, 0x01, 0xad, 0xc4, 0xa7, 0x95, 0xbe, 0x67, 0xd3, 0x6f, + 0x9e, 0x5d, 0x6a, 0x14, 0x7c, 0x82, 0xdd, 0xb3, 0xf2, 0x68, 0x82, 0xdd, 0xb3, 0xa0, 0x12, 0x50, + 0x09, 0xa8, 0x04, 0x54, 0xb2, 0x17, 0x54, 0xe2, 0xf7, 0x39, 0xf1, 0x61, 0x7e, 0x4b, 0x2d, 0x82, + 0x47, 0xc0, 0x23, 0xe0, 0x11, 0xf0, 0x08, 0x78, 0x04, 0x3c, 0x02, 0x1e, 0x01, 0x8f, 0x6c, 0xe5, + 0x11, 0xda, 0xe3, 0xfc, 0x96, 0x5a, 0x04, 0x8f, 0x60, 0xfd, 0x46, 0x11, 0x4a, 0xb0, 0x7e, 0x03, + 0x32, 0x01, 0x99, 0x80, 0x4c, 0x40, 0x26, 0xfb, 0x45, 0x26, 0x94, 0x47, 0xfb, 0x2d, 0xb4, 0x07, + 0x2a, 0x01, 0x95, 0x80, 0x4a, 0x40, 0x25, 0xa0, 0x12, 0x50, 0x09, 0xa8, 0x04, 0x54, 0x22, 0x40, + 0x25, 0x3a, 0x4a, 0xd8, 0xaf, 0x69, 0x17, 0x94, 0x82, 0xb5, 0x1c, 0x79, 0x40, 0xc1, 0x5a, 0x0e, + 0xd8, 0x04, 0x6c, 0x02, 0x36, 0x01, 0x9b, 0xec, 0x15, 0x9b, 0xd0, 0x16, 0xb1, 0x5f, 0xd9, 0x2a, + 0xb8, 0x04, 0x5c, 0x02, 0x2e, 0x01, 0x97, 0x80, 0x4b, 0xc0, 0x25, 0xe0, 0x12, 0x70, 0xc9, 0x56, + 0x2e, 0xa1, 0x2e, 0x19, 0xbb, 0xa2, 0x4d, 0x30, 0x09, 0x56, 0x74, 0x14, 0xc1, 0x04, 0x2b, 0x3a, + 0xa0, 0x13, 0xd0, 0x09, 0xe8, 0x04, 0x74, 0x92, 0x51, 0x3a, 0x39, 0xd0, 0x38, 0x47, 0x8b, 0x35, + 0xcf, 0xf3, 0xb9, 0x39, 0x18, 0x12, 0xa9, 0x69, 0x59, 0x0c, 0xad, 0x57, 0xd6, 0x35, 0x7b, 0x26, + 0x7f, 0x1d, 0x78, 0xdc, 0x43, 0xbf, 0xc7, 0x3c, 0x6b, 0x48, 0x0f, 0xc3, 0x98, 0xe3, 0x78, 0xa6, + 0x6b, 0xd8, 0xec, 0xcd, 0xb1, 0xd8, 0xe1, 0xe2, 0xdf, 0x5d, 0xff, 0xc5, 0xb1, 0x4c, 0xd7, 0xb0, + 0x5e, 0x4d, 0xcf, 0x63, 0x6e, 0x78, 0x38, 0xfe, 0xe1, 0x90, 0xf1, 0x57, 0x16, 0x78, 0x8c, 0x1f, + 0x86, 0xdc, 0xe4, 0x4c, 0xc2, 0x77, 0x17, 0x43, 0x1e, 0xf4, 0x2d, 0xee, 0x8d, 0xc3, 0xc0, 0x7d, + 0x74, 0x4f, 0xad, 0xf1, 0x2d, 0x5c, 0x0d, 0xef, 0xa0, 0xbd, 0xf0, 0xd7, 0x9b, 0xd1, 0x0d, 0x5d, + 0x8e, 0xef, 0xa7, 0x3d, 0xfe, 0xa1, 0x5d, 0x1f, 0xdf, 0x4f, 0xbb, 0x39, 0xbc, 0x9f, 0x03, 0x3d, + 0x83, 0x17, 0xef, 0x93, 0x31, 0x87, 0x57, 0x76, 0x58, 0x75, 0x0e, 0xa7, 0xc0, 0x40, 0x6a, 0x1a, + 0xc0, 0x78, 0x43, 0xb7, 0x7d, 0x20, 0x62, 0x0c, 0x42, 0xd1, 0xf1, 0x6c, 0x16, 0xdf, 0xd3, 0xcf, + 0xbc, 0x8b, 0x3f, 0xb8, 0x2c, 0xe6, 0x20, 0x8b, 0xb9, 0x7f, 0x61, 0xaa, 0x97, 0xa1, 0x78, 0x45, + 0x6a, 0x97, 0xa5, 0x74, 0x65, 0x2a, 0x57, 0xa6, 0x70, 0x75, 0xea, 0xa6, 0x75, 0x00, 0xc2, 0x14, + 0x1d, 0x8d, 0x9c, 0xcb, 0xcc, 0x4e, 0xc0, 0x3a, 0x22, 0xa3, 0x36, 0x9e, 0x88, 0xe5, 0x53, 0x81, + 0x6b, 0x1a, 0x63, 0x1f, 0xf3, 0xf1, 0xe3, 0xe1, 0xc8, 0xb6, 0x0f, 0x47, 0x73, 0x3f, 0x51, 0x1b, + 0x7d, 0x09, 0x58, 0x18, 0xca, 0x58, 0xe9, 0xe8, 0x42, 0x31, 0x3b, 0x2d, 0xc3, 0x4e, 0x61, 0xa7, + 0x8b, 0xb7, 0x73, 0xe5, 0x04, 0x62, 0x03, 0x67, 0x4d, 0x66, 0x87, 0x60, 0xcf, 0x4f, 0x93, 0xe2, + 0xe1, 0xf5, 0x82, 0xbd, 0x26, 0x36, 0x85, 0x95, 0x85, 0x24, 0x15, 0x01, 0x89, 0x48, 0x38, 0x52, + 0x15, 0x8c, 0xc8, 0x84, 0x22, 0x32, 0x81, 0x88, 0x4e, 0x18, 0xd2, 0x9b, 0x92, 0x88, 0x9a, 0x44, + 0x74, 0x61, 0xef, 0xf5, 0x3d, 0x9c, 0x65, 0x50, 0x75, 0x45, 0x76, 0xa9, 0x45, 0xe8, 0xb1, 0xd0, + 0x63, 0xa1, 0xc7, 0x4a, 0xce, 0x1c, 0x71, 0xb2, 0xa4, 0x20, 0xcd, 0xb5, 0xe4, 0x79, 0xe8, 0x5b, + 0x46, 0xcf, 0x35, 0x79, 0xc7, 0x0f, 0xba, 0x9f, 0x2c, 0xbf, 0xdb, 0xf3, 0x3d, 0xe6, 0xf1, 0x70, + 0xf5, 0xaf, 0x07, 0xbf, 0xe5, 0x81, 0xe9, 0x85, 0x16, 0x73, 0xde, 0x58, 0xf0, 0x69, 0xe6, 0xe7, + 0xc5, 0x7f, 0x5a, 0x74, 0x1a, 0xe1, 0xe2, 0x07, 0x26, 0x99, 0xf1, 0xc2, 0xaf, 0x05, 0xf8, 0x97, + 0x6a, 0x6c, 0x6f, 0x9c, 0x90, 0xd7, 0x38, 0x0f, 0xd4, 0xc6, 0xf7, 0xd6, 0xf1, 0xea, 0x2e, 0x1b, + 0x4c, 0xf1, 0x01, 0x4b, 0x7b, 0x7d, 0xd7, 0x55, 0x18, 0x9d, 0x5b, 0xf3, 0x07, 0x5d, 0x63, 0xf7, + 0x81, 0xcd, 0x02, 0x66, 0x5f, 0xbc, 0x8f, 0x9b, 0x4a, 0xf1, 0x82, 0xe2, 0xcc, 0x4c, 0x50, 0x8f, + 0x5b, 0xb3, 0x8d, 0x21, 0x64, 0x21, 0x64, 0x21, 0x64, 0xed, 0x69, 0xc8, 0x8a, 0x7e, 0x3b, 0xd4, + 0x52, 0xb1, 0x62, 0xa1, 0x47, 0xe2, 0x1e, 0xeb, 0x41, 0x87, 0x52, 0xb9, 0xb5, 0x06, 0xc1, 0xfb, + 0x7a, 0x74, 0x3f, 0xed, 0xb1, 0x13, 0xd6, 0xb5, 0x62, 0x21, 0x24, 0xe8, 0x9b, 0x9c, 0xc9, 0x8b, + 0x16, 0x32, 0x2b, 0x41, 0xca, 0x9a, 0x45, 0x05, 0x9a, 0x05, 0x34, 0x0b, 0x68, 0x16, 0x00, 0x40, + 0x00, 0x20, 0x00, 0x10, 0x9a, 0x05, 0x34, 0x0b, 0x68, 0x16, 0xd0, 0x2c, 0x10, 0xb2, 0x10, 0xb2, + 0x10, 0xb2, 0xa0, 0x59, 0xe4, 0x46, 0xb3, 0x48, 0xc9, 0x26, 0xcb, 0x89, 0x64, 0x81, 0x3d, 0x96, + 0x0a, 0x83, 0xb9, 0xbb, 0x2d, 0x96, 0xe3, 0xe1, 0x4b, 0x72, 0xf7, 0xd6, 0x42, 0x67, 0x18, 0x66, + 0x18, 0x3a, 0x2f, 0xde, 0x04, 0xc2, 0x04, 0x77, 0x74, 0x6d, 0x6a, 0x0c, 0xbb, 0xbc, 0xb0, 0xcb, + 0x4b, 0xd1, 0x55, 0x08, 0xef, 0xf2, 0x9a, 0xce, 0x3f, 0x79, 0xd1, 0x74, 0xa6, 0x0d, 0xec, 0xf6, + 0x82, 0x72, 0x9a, 0x37, 0xe5, 0x54, 0x72, 0x23, 0xe4, 0xd2, 0xc4, 0x91, 0x5e, 0xb4, 0x51, 0x30, + 0x15, 0xa4, 0x9c, 0x48, 0x39, 0x77, 0x9f, 0x72, 0xca, 0x9a, 0xde, 0x34, 0x4a, 0xb9, 0xae, 0x6f, + 0xc9, 0xa7, 0x35, 0xab, 0xa3, 0xd6, 0xb4, 0x4d, 0xc5, 0xd1, 0xa1, 0x79, 0x3b, 0x52, 0xd9, 0x44, + 0x29, 0x4d, 0x55, 0x93, 0xc9, 0x52, 0x9b, 0xae, 0x36, 0x13, 0xd6, 0x66, 0xca, 0xfa, 0x4c, 0x5a, + 0xcd, 0xb4, 0x15, 0x4d, 0x9c, 0x4e, 0x5d, 0x5a, 0x9a, 0x79, 0x36, 0xb3, 0x9c, 0xae, 0xe9, 0x2a, + 0xbd, 0x5c, 0xbf, 0x14, 0x45, 0x2b, 0x04, 0x6d, 0x2d, 0xbd, 0x62, 0x7c, 0x44, 0xd0, 0x28, 0xcd, + 0x2b, 0xfc, 0x93, 0xff, 0x68, 0xac, 0xab, 0x40, 0xfd, 0x4a, 0xff, 0xe2, 0x70, 0x54, 0x3e, 0xd0, + 0x36, 0x4b, 0xfc, 0x8a, 0xff, 0xfa, 0x11, 0x2f, 0x91, 0xb5, 0xff, 0xf3, 0x03, 0xe1, 0x50, 0x11, + 0xbe, 0xfa, 0xbf, 0x38, 0x54, 0x47, 0x18, 0xaa, 0x9f, 0x07, 0xe9, 0x68, 0xe5, 0x69, 0x47, 0xf5, + 0x08, 0x14, 0xa6, 0xea, 0x8c, 0x54, 0x60, 0x70, 0x8a, 0x48, 0xb1, 0x42, 0x83, 0x18, 0x35, 0x0c, + 0xa4, 0x03, 0xd2, 0x01, 0xe9, 0x52, 0x8a, 0x74, 0xcc, 0xeb, 0x77, 0x59, 0x40, 0x91, 0x7b, 0xcd, + 0x41, 0x5d, 0x95, 0xa0, 0xad, 0xba, 0xd7, 0xef, 0x0e, 0x1e, 0xf6, 0x67, 0x06, 0x9d, 0xab, 0xcd, + 0x42, 0x2b, 0x70, 0x7a, 0xb4, 0x69, 0xf2, 0x6c, 0xa3, 0x70, 0xaa, 0x70, 0xaa, 0x70, 0xaa, 0x29, + 0x75, 0xaa, 0x21, 0x0f, 0x1c, 0xef, 0x85, 0xd2, 0x9f, 0x9e, 0x65, 0xd0, 0x07, 0x8a, 0x95, 0xc3, + 0xd9, 0xda, 0xa9, 0x22, 0x65, 0x72, 0xe0, 0xf7, 0xe0, 0xf7, 0xe0, 0xf7, 0x12, 0xf7, 0x7b, 0x7d, + 0xc7, 0xe3, 0x47, 0x15, 0x42, 0xbf, 0x77, 0x0a, 0x19, 0x6f, 0x27, 0x0e, 0x0e, 0x32, 0x5e, 0x72, + 0x32, 0x9e, 0xae, 0xa1, 0xaa, 0x56, 0xce, 0xab, 0xe7, 0x27, 0xa7, 0x95, 0xf3, 0x63, 0xe8, 0x79, + 0xfb, 0xa0, 0xe7, 0x2d, 0x6c, 0x67, 0xa3, 0x03, 0xaf, 0xc5, 0x86, 0x81, 0x60, 0x40, 0x30, 0x20, + 0x58, 0x4a, 0x11, 0x4c, 0xfd, 0x45, 0x80, 0xa5, 0xdc, 0x93, 0x02, 0xc2, 0x66, 0x5f, 0x0c, 0x98, + 0x0c, 0xde, 0xa7, 0xc5, 0xad, 0xce, 0xb3, 0xff, 0xb6, 0xb4, 0xed, 0x79, 0xf6, 0x1f, 0x67, 0x5e, + 0x4c, 0x8b, 0x7e, 0xa7, 0xf0, 0x56, 0xda, 0x6e, 0xfd, 0x76, 0xd7, 0xec, 0xf5, 0x1c, 0xef, 0x85, + 0xce, 0x5f, 0x4f, 0x1a, 0x84, 0x9f, 0x86, 0x9f, 0x86, 0x9f, 0x4e, 0xa9, 0x9f, 0x76, 0x6c, 0xe6, + 0x71, 0x87, 0xbf, 0x13, 0xfb, 0x6a, 0x02, 0xd6, 0x2f, 0x5e, 0x8f, 0x6f, 0xed, 0xc2, 0x0c, 0x09, + 0xe7, 0xf2, 0xe4, 0xc1, 0x3f, 0x3f, 0xd4, 0x6e, 0xeb, 0xed, 0xdb, 0x5a, 0xa3, 0x71, 0x7d, 0xf7, + 0xa5, 0xdd, 0x78, 0xb8, 0x6f, 0xdd, 0x5f, 0xde, 0xdf, 0x14, 0x29, 0x8f, 0x33, 0x08, 0xc9, 0xb2, + 0x7d, 0xda, 0x8c, 0x7f, 0xae, 0x1f, 0xbe, 0xdc, 0x36, 0x8a, 0x69, 0xcc, 0x75, 0x75, 0x3d, 0xee, + 0xe7, 0x46, 0xbb, 0xb5, 0x4f, 0x0f, 0x5c, 0xdb, 0xbf, 0xf1, 0xfd, 0xbc, 0x4f, 0x0f, 0x7c, 0xb1, + 0x5f, 0xe3, 0x7b, 0x79, 0xf1, 0x50, 0x4c, 0x99, 0xcc, 0xf3, 0x94, 0xd9, 0x63, 0x64, 0x54, 0xd2, + 0x05, 0xbf, 0xc7, 0xf5, 0xc8, 0x3c, 0x8b, 0x0d, 0x23, 0x7d, 0x40, 0xfa, 0x80, 0xf4, 0x01, 0x32, + 0x8f, 0xac, 0xcc, 0x93, 0x74, 0xfd, 0x87, 0xdd, 0xba, 0x65, 0x1e, 0x38, 0xcf, 0x7d, 0x6e, 0x06, + 0xef, 0x46, 0xe8, 0xfa, 0xdc, 0x20, 0xde, 0xfb, 0xb0, 0xb2, 0x75, 0x38, 0x68, 0x38, 0x68, 0x38, + 0xe8, 0xb4, 0xea, 0x3b, 0xc4, 0x3b, 0x21, 0xf0, 0x42, 0x93, 0x6c, 0x5c, 0xd3, 0xb4, 0xbc, 0x5e, + 0x29, 0x57, 0x4f, 0xab, 0x67, 0x47, 0x27, 0xd5, 0x33, 0x6c, 0x89, 0xa0, 0x1e, 0xb3, 0x92, 0xee, + 0x31, 0x3b, 0xc5, 0x96, 0x88, 0x64, 0xb3, 0xed, 0x9f, 0x19, 0x79, 0x3d, 0x5e, 0xb1, 0x68, 0x57, + 0xd4, 0x8e, 0x86, 0x7a, 0x4f, 0x1b, 0xca, 0x15, 0x1d, 0x4e, 0x7f, 0x3e, 0x54, 0x2a, 0x6d, 0x51, + 0xa0, 0xaf, 0x12, 0x35, 0xff, 0xfb, 0xda, 0xf4, 0xa6, 0xdb, 0xd3, 0x9f, 0xa5, 0x8a, 0x96, 0xcb, + 0x4f, 0x10, 0x99, 0xb2, 0x97, 0x6a, 0x40, 0x4f, 0xb2, 0x89, 0x19, 0xa5, 0x2e, 0xb5, 0x11, 0x39, + 0xea, 0x8e, 0xe8, 0x76, 0xac, 0xb9, 0x2d, 0x75, 0x29, 0x75, 0x96, 0xe9, 0x6e, 0x7c, 0x98, 0xdc, + 0x81, 0x0c, 0x4b, 0x03, 0x20, 0x5b, 0x3d, 0xb2, 0x40, 0x59, 0x3b, 0xa9, 0x02, 0x1f, 0x06, 0x1f, + 0x86, 0xda, 0x49, 0xa8, 0x9d, 0x04, 0x41, 0x10, 0x82, 0x60, 0x16, 0x04, 0x41, 0xd4, 0x4e, 0xca, + 0xbd, 0xd4, 0x88, 0xda, 0x49, 0xa8, 0x9d, 0x04, 0x61, 0x31, 0x33, 0xc2, 0x22, 0x6a, 0x27, 0x01, + 0xe9, 0x80, 0x74, 0x40, 0x3a, 0xe9, 0x99, 0x87, 0xda, 0x49, 0x5a, 0x9c, 0x2b, 0x6a, 0x27, 0xc1, + 0xa9, 0xc2, 0xa9, 0xee, 0xab, 0x53, 0x45, 0xed, 0x24, 0xd4, 0x4e, 0x82, 0xdf, 0x83, 0xdf, 0xdb, + 0x37, 0xbf, 0x87, 0xda, 0x49, 0x69, 0x91, 0xf1, 0x50, 0x3b, 0x09, 0xb5, 0x93, 0x50, 0x3b, 0x69, + 0xaf, 0xf4, 0x3c, 0xd4, 0x4e, 0x02, 0x82, 0x01, 0xc1, 0xf6, 0x1d, 0xc1, 0x50, 0x3b, 0x29, 0x6b, + 0x7e, 0x1b, 0xb5, 0x93, 0xe0, 0xa7, 0xe1, 0xa7, 0xf7, 0xcd, 0x4f, 0xa3, 0x76, 0x12, 0x6a, 0x27, + 0xa1, 0x76, 0x52, 0x8e, 0x1f, 0x18, 0xb5, 0x93, 0xf2, 0xfd, 0xc0, 0xa8, 0x9d, 0xb4, 0x6b, 0x99, + 0x07, 0xb5, 0x93, 0x50, 0x3b, 0x09, 0xe9, 0x03, 0xd2, 0x07, 0xc8, 0x3c, 0xa9, 0x94, 0x79, 0x50, + 0x3b, 0x09, 0xb5, 0x93, 0xe0, 0xa0, 0xe1, 0xa0, 0xf7, 0x54, 0xdf, 0x41, 0xed, 0xa4, 0xf8, 0x37, + 0x86, 0xda, 0x49, 0x33, 0x5f, 0x80, 0x2d, 0x11, 0xa8, 0x9d, 0x44, 0x9e, 0x2b, 0xa3, 0x76, 0x52, + 0xcc, 0xf8, 0x96, 0xf9, 0xda, 0x49, 0x2a, 0x95, 0x2d, 0x0a, 0x3b, 0x2a, 0x9d, 0xd4, 0x1c, 0xde, + 0x73, 0x52, 0x55, 0x47, 0x0e, 0x34, 0x4e, 0xa4, 0x01, 0xd2, 0xc9, 0x6e, 0x56, 0x2e, 0xde, 0x38, + 0x21, 0xaf, 0x71, 0x2e, 0x57, 0xa0, 0x61, 0x10, 0x44, 0xeb, 0x2e, 0x1b, 0xf6, 0x6d, 0xf1, 0x53, + 0xc1, 0xeb, 0xbb, 0xae, 0x44, 0x79, 0x95, 0x5b, 0xf3, 0x87, 0x7a, 0x23, 0xf7, 0x81, 0xcd, 0x02, + 0x66, 0x5f, 0xbc, 0x8f, 0x9b, 0xd0, 0xda, 0xe1, 0x8a, 0x16, 0xbb, 0x3b, 0x4b, 0x2d, 0x4a, 0x55, + 0xbf, 0x49, 0xda, 0x36, 0xc5, 0xac, 0x32, 0xbe, 0x6d, 0xc5, 0xfb, 0x64, 0xcc, 0xc9, 0x20, 0x3b, + 0x09, 0x12, 0x1e, 0x7c, 0x81, 0x11, 0x4f, 0x6a, 0xa4, 0xe3, 0x0d, 0xef, 0xf6, 0xc1, 0x8a, 0x31, + 0x50, 0x45, 0x9f, 0xc7, 0x1f, 0x9d, 0x69, 0x06, 0xcf, 0xe3, 0xbe, 0xeb, 0x26, 0x08, 0xfc, 0xc2, + 0xc2, 0x85, 0x8c, 0x40, 0xa1, 0x28, 0x44, 0xc8, 0x0a, 0x0e, 0xca, 0xc2, 0x82, 0xb2, 0x80, 0xa0, + 0x2e, 0x14, 0xd0, 0x3a, 0x08, 0xd1, 0xb2, 0x47, 0x45, 0x6b, 0x32, 0x3b, 0x04, 0x7b, 0x7e, 0x32, + 0xe0, 0x52, 0x25, 0x2c, 0x25, 0x73, 0x56, 0x69, 0x0d, 0x4e, 0x45, 0x73, 0x23, 0xd2, 0xd8, 0x54, + 0x35, 0x35, 0x32, 0x0d, 0x8d, 0x4c, 0x33, 0xa3, 0xd3, 0xc8, 0xf4, 0x92, 0xaa, 0x6c, 0x25, 0xb0, + 0x45, 0x31, 0xfa, 0x25, 0x30, 0xbd, 0xbe, 0x6b, 0x06, 0x0e, 0x7f, 0x57, 0xaf, 0xcb, 0xb7, 0xa1, + 0x6d, 0x14, 0x1c, 0x45, 0xb1, 0xbe, 0x9d, 0xcb, 0xd5, 0x59, 0x2d, 0x38, 0x4a, 0xb3, 0xdd, 0x90, + 0x62, 0x9b, 0x21, 0xed, 0xf6, 0xc2, 0xe8, 0x01, 0x5b, 0x0f, 0xd7, 0x17, 0xdf, 0x5a, 0xb5, 0x87, + 0x3f, 0xda, 0xcd, 0x9b, 0xfb, 0x56, 0xfb, 0xcb, 0x43, 0xed, 0xee, 0xdb, 0x4d, 0xed, 0xe1, 0xba, + 0xf5, 0x87, 0xea, 0xa4, 0x24, 0xdc, 0x52, 0x48, 0xbc, 0x95, 0x72, 0xf0, 0xcc, 0xa3, 0xc7, 0xad, + 0x7c, 0x3c, 0xfe, 0x42, 0xb0, 0x06, 0xf3, 0x21, 0xbd, 0x4f, 0x98, 0xf7, 0xe7, 0x2b, 0x7f, 0xac, + 0x90, 0x3c, 0xe2, 0xc1, 0x6e, 0x34, 0xde, 0x9f, 0x29, 0x2e, 0x19, 0xcc, 0xb9, 0x63, 0x74, 0xc3, + 0x17, 0xc3, 0xec, 0x73, 0x9f, 0x80, 0x50, 0x66, 0x5b, 0x03, 0x93, 0x80, 0x49, 0xc0, 0x24, 0x92, + 0x33, 0xe7, 0xd9, 0xf7, 0x5d, 0x66, 0x7a, 0x14, 0x3c, 0x52, 0xce, 0x80, 0xfb, 0x61, 0x3f, 0x7a, + 0xcc, 0xe2, 0xcc, 0xa6, 0x73, 0x41, 0x51, 0x8b, 0x70, 0x43, 0x70, 0x43, 0x70, 0x43, 0x92, 0x33, + 0x47, 0xb9, 0x58, 0x93, 0x62, 0x91, 0xa6, 0x64, 0xbd, 0x10, 0x0f, 0x4c, 0x2f, 0xec, 0x3a, 0x9c, + 0xce, 0x0b, 0x45, 0x2d, 0xc2, 0x0b, 0xc1, 0x0b, 0xc1, 0x0b, 0xed, 0x8f, 0x17, 0xda, 0xb7, 0x65, + 0x7d, 0x9f, 0x7b, 0xf2, 0x27, 0x93, 0x11, 0x2f, 0xe8, 0xde, 0x73, 0x4f, 0xea, 0xc0, 0x31, 0x81, + 0x05, 0x7a, 0xa1, 0xc5, 0x6a, 0x99, 0x43, 0x79, 0x94, 0x0e, 0xe3, 0x51, 0x5e, 0x2a, 0xab, 0x60, + 0xa9, 0x0c, 0x4b, 0x65, 0x31, 0x6f, 0x53, 0x7a, 0xa9, 0xec, 0xd9, 0xb4, 0xbe, 0xbf, 0x04, 0x7e, + 0xdf, 0xb3, 0x8d, 0x67, 0xd7, 0xb7, 0xbe, 0x1b, 0x2c, 0x08, 0xfc, 0x20, 0x54, 0x87, 0xaf, 0x75, + 0x0d, 0x83, 0xc1, 0xc0, 0x60, 0x60, 0x30, 0xc9, 0x99, 0x63, 0xf9, 0x7d, 0x8f, 0xb3, 0x40, 0xe9, + 0x78, 0x9b, 0x89, 0x29, 0x29, 0xbc, 0x15, 0x40, 0xf4, 0x9e, 0x06, 0xc1, 0xcb, 0x2c, 0x94, 0xef, + 0x65, 0x10, 0xef, 0xed, 0xa7, 0xae, 0x48, 0xa9, 0x63, 0x0b, 0x3f, 0xc1, 0x7a, 0x13, 0xe9, 0x6b, + 0x16, 0xba, 0x86, 0xa0, 0x7c, 0x56, 0xad, 0x9e, 0x9c, 0x56, 0xab, 0xa5, 0xd3, 0xa3, 0xd3, 0xd2, + 0xf9, 0xf1, 0x71, 0xf9, 0xa4, 0x7c, 0x9c, 0xe2, 0x51, 0xd9, 0xd1, 0x8b, 0x0c, 0x4f, 0x29, 0x56, + 0x87, 0x2c, 0xdf, 0x66, 0xc6, 0x9b, 0xe3, 0xbb, 0xc3, 0x8c, 0x8b, 0x80, 0x4f, 0x16, 0x1b, 0x04, + 0x97, 0x80, 0x4b, 0xc0, 0x25, 0xe0, 0x12, 0x70, 0x09, 0xb8, 0x04, 0x5c, 0x02, 0x2e, 0x89, 0xd9, + 0xcd, 0x43, 0x55, 0x83, 0x8d, 0x35, 0x0e, 0x02, 0x2c, 0x59, 0x68, 0x0f, 0x54, 0x02, 0x2a, 0x01, + 0x95, 0x80, 0x4a, 0x40, 0x25, 0xa0, 0x12, 0x50, 0x09, 0xa8, 0x44, 0x90, 0x4a, 0x42, 0x66, 0xf9, + 0x9e, 0x4d, 0x88, 0x25, 0x93, 0x06, 0xc1, 0x25, 0xe0, 0x12, 0x70, 0x09, 0xb8, 0x04, 0x5c, 0x02, + 0x2e, 0x01, 0x97, 0x80, 0x4b, 0xe2, 0x72, 0x49, 0xe8, 0x05, 0x04, 0x30, 0x32, 0x68, 0x45, 0x8d, + 0x40, 0xca, 0x20, 0x10, 0x10, 0x48, 0xd6, 0x08, 0x44, 0x76, 0x93, 0x57, 0xd4, 0x80, 0xf9, 0x46, + 0x78, 0x88, 0xd3, 0xa0, 0x31, 0x14, 0xf8, 0x8d, 0x63, 0xa4, 0xfc, 0xbd, 0xc7, 0x42, 0x54, 0xf7, + 0xa5, 0x68, 0x78, 0xc1, 0x82, 0x47, 0x3d, 0x8b, 0xd2, 0xbe, 0x0b, 0x73, 0xce, 0x66, 0x96, 0xd3, + 0x35, 0x5d, 0xa5, 0x04, 0x63, 0x29, 0x62, 0x56, 0x08, 0xda, 0x5a, 0xc2, 0xac, 0x0a, 0x8a, 0x06, + 0xcb, 0x0d, 0x47, 0x05, 0xc7, 0x27, 0x67, 0xa5, 0x56, 0xf0, 0x11, 0x86, 0x0a, 0xa7, 0x26, 0xcb, + 0x43, 0x9b, 0xe3, 0x85, 0xdc, 0xf4, 0x38, 0x1d, 0xb8, 0x4d, 0x1a, 0x04, 0xbc, 0x01, 0xde, 0x00, + 0x6f, 0x80, 0x37, 0xc0, 0x1b, 0xe0, 0x0d, 0xf0, 0x06, 0x78, 0x03, 0xbc, 0xe9, 0x80, 0x37, 0xce, + 0x82, 0x37, 0xd3, 0xa5, 0xa4, 0xb7, 0x71, 0x8b, 0xc0, 0x37, 0xe0, 0x1b, 0xf0, 0x2d, 0x75, 0xf8, + 0x16, 0x72, 0x93, 0x1b, 0x44, 0x46, 0x5a, 0xa0, 0x59, 0xe8, 0x8f, 0x9a, 0xfa, 0xe6, 0x8d, 0x62, + 0x43, 0xd1, 0x33, 0x3d, 0x5f, 0x6d, 0x2b, 0x0f, 0x20, 0xae, 0x04, 0x32, 0xd8, 0xf7, 0xd3, 0xba, + 0xf4, 0x6d, 0x48, 0x00, 0xd7, 0xa5, 0x9b, 0xeb, 0xba, 0x26, 0xe1, 0xd9, 0xa9, 0x83, 0xc6, 0x40, + 0x73, 0xa0, 0x39, 0xd0, 0x1c, 0xc4, 0x38, 0x88, 0x71, 0x10, 0xe3, 0xc0, 0x71, 0x10, 0xe3, 0x00, + 0x6d, 0x5a, 0xa0, 0xcd, 0xe0, 0x4e, 0x97, 0x91, 0x92, 0xdb, 0xa8, 0x45, 0xe0, 0x1b, 0xf0, 0x0d, + 0xf8, 0x96, 0x3a, 0x7c, 0x1b, 0xd8, 0x26, 0x77, 0xac, 0xef, 0x21, 0x29, 0xc0, 0x41, 0x8a, 0x83, + 0x14, 0x07, 0x84, 0x83, 0x14, 0x07, 0xaa, 0x4b, 0x05, 0xd5, 0x11, 0x38, 0x96, 0x29, 0xd0, 0x39, + 0x1e, 0x58, 0x0e, 0x2c, 0x07, 0x96, 0x83, 0x14, 0x07, 0x29, 0x0e, 0x52, 0x1c, 0x38, 0x0e, 0x52, + 0x1c, 0xa0, 0x4d, 0x0f, 0xb4, 0x51, 0x4b, 0x71, 0x93, 0x16, 0x81, 0x6f, 0xc0, 0x37, 0xe0, 0x1b, + 0xa4, 0x38, 0x48, 0x71, 0x90, 0xe2, 0x80, 0x70, 0x90, 0xe2, 0x40, 0x75, 0x09, 0x5c, 0x29, 0x5b, + 0xd2, 0x44, 0xf1, 0x10, 0xbd, 0xa8, 0x1d, 0x4d, 0x87, 0xe9, 0x0d, 0xcf, 0x7d, 0x3b, 0x54, 0xa8, + 0x37, 0x54, 0xd0, 0x73, 0xb0, 0x5e, 0x73, 0x70, 0x5f, 0xed, 0xfa, 0xe0, 0xbe, 0x52, 0x5c, 0xed, + 0xa9, 0xc3, 0x2c, 0xc3, 0xf2, 0x83, 0x60, 0x78, 0x04, 0xb4, 0xf1, 0x3c, 0xb2, 0x54, 0xc5, 0xda, + 0x4f, 0x2b, 0xda, 0x44, 0x2d, 0x4a, 0x54, 0x82, 0x52, 0x64, 0x76, 0xd4, 0xa2, 0x44, 0x2d, 0x4a, + 0x0d, 0x70, 0x8c, 0x5a, 0x94, 0x3b, 0x87, 0x5e, 0xd4, 0xa2, 0x2c, 0xa0, 0x16, 0x65, 0x1c, 0x3a, + 0x79, 0xe7, 0x8c, 0x1e, 0x4f, 0x86, 0x8d, 0x82, 0x4f, 0xc0, 0x27, 0xe0, 0x13, 0xf0, 0x09, 0xf8, + 0x04, 0x7c, 0x02, 0x3e, 0x01, 0x9f, 0x08, 0xf0, 0x49, 0xdf, 0x1b, 0xc3, 0x84, 0xf9, 0xec, 0x32, + 0xb2, 0x33, 0xc6, 0xd6, 0xb6, 0x0c, 0x52, 0x01, 0xa9, 0x80, 0x54, 0x40, 0x2a, 0x20, 0x15, 0x90, + 0x0a, 0x48, 0x05, 0xa4, 0x22, 0x4d, 0x2a, 0x83, 0x98, 0xa5, 0x05, 0x54, 0x46, 0x0d, 0x83, 0x53, + 0xc0, 0x29, 0xe0, 0x14, 0x70, 0x0a, 0x38, 0x05, 0x9c, 0x02, 0x4e, 0x01, 0xa7, 0xc4, 0xec, 0xe6, + 0x9e, 0x1f, 0x72, 0x63, 0xc0, 0x14, 0xcf, 0x8c, 0xe0, 0x14, 0xb2, 0xb9, 0xd6, 0x70, 0x1a, 0x19, + 0x88, 0x64, 0xcf, 0x88, 0x04, 0xa7, 0x91, 0xe9, 0x31, 0x4a, 0x4a, 0xe3, 0x5c, 0x6b, 0xa4, 0x78, + 0xfb, 0x43, 0xd3, 0xdb, 0x1f, 0xd3, 0xde, 0xc5, 0x1b, 0x20, 0x0b, 0x73, 0x2f, 0x3b, 0x2f, 0xf0, + 0x96, 0xcf, 0xf0, 0xfa, 0x87, 0xdc, 0x78, 0xe0, 0x0d, 0x5e, 0xbc, 0xc1, 0x8b, 0x77, 0x3d, 0x92, + 0x49, 0x9a, 0xd4, 0xbf, 0x1f, 0xc7, 0x92, 0x81, 0xe2, 0x40, 0x71, 0xa0, 0x38, 0x50, 0x1c, 0x28, + 0x0e, 0x14, 0x07, 0x8a, 0x03, 0xc5, 0xed, 0x1f, 0xc5, 0xe1, 0x7c, 0xb2, 0x9d, 0x72, 0x1c, 0x18, + 0x0e, 0x75, 0x58, 0x12, 0xe5, 0x37, 0x9c, 0x4f, 0xb6, 0x27, 0x10, 0x87, 0x4a, 0x2c, 0xa8, 0xc4, + 0x82, 0x4a, 0x2c, 0x38, 0x9f, 0x4c, 0x3d, 0x64, 0xe0, 0x7c, 0x32, 0xa8, 0x72, 0x50, 0xe5, 0xa0, + 0xca, 0x41, 0x95, 0x83, 0x2a, 0xf7, 0xff, 0xb3, 0x77, 0x2e, 0x3d, 0x8d, 0x23, 0x51, 0x14, 0xde, + 0xf3, 0x2b, 0x90, 0xf7, 0xa1, 0x49, 0x80, 0x00, 0xcb, 0x40, 0xa7, 0x19, 0x34, 0x79, 0x30, 0xc1, + 0x68, 0xd4, 0x0b, 0x14, 0x99, 0xa4, 0xba, 0x65, 0xb5, 0x63, 0x33, 0xb6, 0x83, 0x9a, 0x45, 0xff, + 0xf7, 0x11, 0x79, 0x90, 0x00, 0x21, 0xb8, 0x1e, 0x0e, 0x76, 0xe5, 0x9b, 0x05, 0x1a, 0x89, 0x76, + 0xe1, 0x5b, 0x75, 0x1f, 0xe7, 0x9e, 0xaa, 0x3a, 0x06, 0xd0, 0xc1, 0xca, 0x81, 0xde, 0xf2, 0x47, + 0x6f, 0x7c, 0xa8, 0x0c, 0x56, 0x0e, 0x56, 0x6e, 0x6b, 0xf0, 0x1b, 0xea, 0xc8, 0x70, 0x72, 0x40, + 0x38, 0x38, 0x39, 0x50, 0x9d, 0xc5, 0xa8, 0x8e, 0x0f, 0x95, 0xc1, 0xc9, 0xc1, 0xc9, 0xc1, 0xc9, + 0xc1, 0xc9, 0xc1, 0xc9, 0x01, 0xe8, 0xe0, 0xe4, 0x40, 0x6f, 0xe5, 0x42, 0x6f, 0x7c, 0xb1, 0x0c, + 0x4e, 0x0e, 0x4e, 0x0e, 0x4e, 0x0e, 0x4e, 0x0e, 0x4e, 0x0e, 0x08, 0x07, 0x27, 0x07, 0xaa, 0x2b, + 0x06, 0xaa, 0xe3, 0x8b, 0x65, 0xaf, 0xbf, 0x58, 0x66, 0x40, 0x9b, 0x68, 0x37, 0xcf, 0x2f, 0x97, + 0x5d, 0x45, 0x49, 0xfa, 0x4d, 0x0c, 0xce, 0x44, 0xa1, 0xbf, 0x5f, 0x76, 0x1f, 0x0b, 0x83, 0x72, + 0x51, 0x4b, 0x83, 0xa1, 0x16, 0x85, 0x5a, 0x94, 0x26, 0x66, 0x47, 0x2d, 0x4a, 0xc7, 0xfb, 0x50, + 0x8b, 0x92, 0x0a, 0x52, 0x3a, 0x6f, 0x76, 0x4f, 0x36, 0xdd, 0x7d, 0xb3, 0x7b, 0x62, 0x7f, 0xeb, + 0xcd, 0xee, 0x09, 0xbb, 0x27, 0xf4, 0xd9, 0xa5, 0xe9, 0xb3, 0x51, 0x8b, 0x02, 0xc5, 0x81, 0xe2, + 0x40, 0x71, 0xa0, 0x38, 0x50, 0x1c, 0x28, 0x0e, 0x14, 0x07, 0x8a, 0xdb, 0x3a, 0x14, 0x87, 0x5a, + 0xd4, 0xa7, 0xe2, 0x38, 0x30, 0x1c, 0x67, 0x60, 0x36, 0x8a, 0xdf, 0x50, 0x8b, 0xda, 0x12, 0x10, + 0xc7, 0x29, 0x18, 0x4e, 0xc1, 0x70, 0x0a, 0x06, 0xb5, 0x28, 0xfd, 0x92, 0x81, 0x5a, 0x14, 0xac, + 0x1c, 0xac, 0x1c, 0xac, 0x1c, 0xac, 0x1c, 0xac, 0x1c, 0x80, 0x0e, 0x56, 0x0e, 0xf4, 0x96, 0x3f, + 0x7a, 0x43, 0x2d, 0x0a, 0x56, 0x0e, 0x56, 0x6e, 0x6b, 0xf0, 0x1b, 0x37, 0xd3, 0xe0, 0xe4, 0x80, + 0x70, 0x70, 0x72, 0xa0, 0x3a, 0x8b, 0x51, 0x1d, 0x6a, 0x51, 0x70, 0x72, 0x70, 0x72, 0x70, 0x72, + 0x70, 0x72, 0x70, 0x72, 0x00, 0x3a, 0x38, 0x39, 0xd0, 0x5b, 0xb9, 0xd0, 0x1b, 0x6a, 0x51, 0x70, + 0x72, 0x70, 0x72, 0x70, 0x72, 0x70, 0x72, 0x70, 0x72, 0x40, 0x38, 0x38, 0x39, 0x50, 0x5d, 0x31, + 0x50, 0x1d, 0x6a, 0x51, 0x6f, 0xd4, 0xa2, 0xb4, 0xa5, 0x89, 0x76, 0x73, 0x15, 0x8b, 0x8a, 0x45, + 0xf1, 0xb5, 0xa2, 0xfe, 0xab, 0x3c, 0xcc, 0xd2, 0x83, 0xa6, 0x4e, 0xd4, 0x7c, 0x20, 0x34, 0xa2, + 0xd0, 0x88, 0xd2, 0x44, 0xea, 0x68, 0x44, 0xe9, 0x78, 0x1f, 0x1a, 0x51, 0xf4, 0xda, 0xf4, 0xda, + 0xec, 0x95, 0x68, 0xe1, 0xf6, 0x1a, 0x7d, 0xb6, 0xda, 0x72, 0xb0, 0x55, 0xc2, 0x56, 0x09, 0x4d, + 0x75, 0x69, 0x9a, 0x6a, 0xa4, 0xa1, 0x00, 0x6f, 0x80, 0x37, 0xc0, 0x1b, 0xe0, 0x0d, 0xf0, 0x06, + 0x78, 0x03, 0xbc, 0x01, 0xde, 0xb6, 0x05, 0xbc, 0xa1, 0x08, 0x05, 0x7c, 0x03, 0xbe, 0x6d, 0x0f, + 0x7c, 0x43, 0x11, 0x6a, 0x4b, 0x40, 0x1c, 0x27, 0x5d, 0x38, 0xe9, 0xc2, 0x49, 0x17, 0x14, 0xa1, + 0xf4, 0x4b, 0x06, 0x8a, 0x50, 0xa0, 0x39, 0xd0, 0x1c, 0x64, 0x1c, 0x64, 0x1c, 0x64, 0x1c, 0x38, + 0x0e, 0x32, 0x0e, 0xd0, 0x96, 0x1b, 0x68, 0x43, 0x08, 0x0a, 0xf8, 0x06, 0x7c, 0xdb, 0x1a, 0xf8, + 0xc6, 0xa5, 0x33, 0xa8, 0x38, 0x20, 0x1c, 0x54, 0x1c, 0xa8, 0xce, 0x62, 0x54, 0x87, 0x10, 0x14, + 0x58, 0x0e, 0x2c, 0x07, 0x15, 0x07, 0x15, 0x07, 0x15, 0x07, 0x8e, 0x83, 0x8a, 0x03, 0xb4, 0x95, + 0x02, 0xb4, 0xa1, 0xff, 0x04, 0x7c, 0x03, 0xbe, 0x41, 0xc5, 0x41, 0xc5, 0x41, 0xc5, 0x01, 0xe1, + 0xa0, 0xe2, 0x40, 0x75, 0xc5, 0x40, 0x75, 0xe8, 0x3f, 0xbd, 0xd6, 0x7f, 0xd2, 0x93, 0x1c, 0xda, + 0xcd, 0x53, 0xfb, 0xe9, 0x9f, 0x69, 0xd0, 0x15, 0x58, 0xf8, 0x29, 0x1e, 0xfa, 0x95, 0x51, 0xf2, + 0x53, 0x5f, 0xf8, 0x69, 0x3e, 0x90, 0x9e, 0xf0, 0xd3, 0x3e, 0xc2, 0x4f, 0xa6, 0xa1, 0x3b, 0xc2, + 0x4f, 0x79, 0x67, 0x49, 0x6d, 0x34, 0xbe, 0x74, 0x3b, 0x25, 0xf6, 0x43, 0x1d, 0xdd, 0xa6, 0x67, + 0xe6, 0xf4, 0xa4, 0xc0, 0x39, 0x27, 0x11, 0x0f, 0x22, 0x16, 0xc1, 0x63, 0x45, 0xc4, 0x71, 0x14, + 0x8b, 0x61, 0x65, 0x8e, 0xea, 0xb5, 0x93, 0xd0, 0xbb, 0x23, 0x93, 0x95, 0xc8, 0x4a, 0x64, 0x25, + 0x45, 0xcf, 0x19, 0x44, 0xe3, 0x30, 0x15, 0xb1, 0x16, 0x33, 0x60, 0x80, 0x11, 0x30, 0xd4, 0xb1, + 0x1b, 0x20, 0x4d, 0x4c, 0x76, 0xe8, 0x86, 0xdb, 0x3d, 0xd3, 0x1d, 0x79, 0x1e, 0xbd, 0x9c, 0x81, + 0x0e, 0xdc, 0x68, 0xe7, 0x9d, 0xd7, 0x12, 0xe4, 0xd7, 0x69, 0xe7, 0xb2, 0x2a, 0x9f, 0xd4, 0xd1, + 0xde, 0x16, 0x18, 0xa9, 0xa4, 0xb1, 0x7f, 0x37, 0x4e, 0xbd, 0xf8, 0xb1, 0x92, 0x04, 0x51, 0x5a, + 0xf9, 0x19, 0x7b, 0xe1, 0x38, 0xf0, 0x62, 0x3f, 0x7d, 0xd4, 0xc7, 0x2a, 0x6b, 0xc6, 0x06, 0xad, + 0x80, 0x56, 0x40, 0x2b, 0x8a, 0x9e, 0xe3, 0x0f, 0x45, 0x98, 0xfa, 0xe9, 0x63, 0x2c, 0x7e, 0x98, + 0x68, 0xa4, 0x34, 0x32, 0xb6, 0x73, 0x39, 0x7b, 0x95, 0x33, 0x2f, 0x31, 0xb8, 0x95, 0xea, 0xf6, + 0x2e, 0xcf, 0x6e, 0xdc, 0x46, 0xef, 0x7b, 0xff, 0xba, 0xd5, 0x75, 0xfb, 0x17, 0xbd, 0x46, 0xe7, + 0xa6, 0xd5, 0xe8, 0x5d, 0xba, 0xdf, 0x75, 0x9d, 0x72, 0x52, 0xb8, 0x12, 0x23, 0x7b, 0x22, 0x86, + 0x2a, 0xf3, 0xb2, 0xcd, 0x53, 0x73, 0x6b, 0x7b, 0x47, 0x17, 0x4e, 0x11, 0x20, 0x48, 0x6e, 0x16, + 0xda, 0x6e, 0x5f, 0x75, 0xaf, 0x66, 0xc4, 0x44, 0xad, 0x11, 0x6e, 0x37, 0x9d, 0x17, 0x37, 0x83, + 0x57, 0xd2, 0x09, 0x09, 0x5b, 0xf1, 0xc6, 0x69, 0x64, 0x00, 0xa1, 0x2c, 0x8f, 0x06, 0x26, 0x01, + 0x93, 0x80, 0x49, 0x14, 0x3d, 0xe7, 0x2e, 0x8a, 0x02, 0xe1, 0x85, 0x26, 0xf0, 0x48, 0xb5, 0x04, + 0xe9, 0x47, 0xfc, 0xbe, 0x17, 0x83, 0x54, 0x0c, 0xcd, 0xa5, 0xa0, 0xe7, 0x11, 0x49, 0x43, 0xa4, + 0x21, 0xd2, 0x90, 0xa2, 0xe7, 0x6c, 0xc7, 0xf6, 0xd2, 0x3c, 0x67, 0xc4, 0x62, 0xf0, 0x60, 0x2e, + 0x03, 0x4d, 0x46, 0x23, 0xfb, 0x90, 0x7d, 0xc8, 0x3e, 0x64, 0x9f, 0x0c, 0xd9, 0x27, 0x8d, 0xbd, + 0x30, 0x19, 0xf9, 0xa9, 0xb9, 0x0c, 0xf4, 0x3c, 0x22, 0x59, 0x88, 0x2c, 0x44, 0x16, 0x22, 0x0b, + 0xad, 0x79, 0xc7, 0x71, 0xe8, 0x3d, 0x78, 0x7e, 0xe0, 0xdd, 0x05, 0xc2, 0xdc, 0xe9, 0x9a, 0x55, + 0x83, 0x92, 0x8b, 0xc8, 0x45, 0xe4, 0x22, 0x45, 0xcf, 0xe1, 0x60, 0xcd, 0xab, 0x17, 0xe1, 0x60, + 0x8d, 0xd6, 0x7f, 0x1c, 0xac, 0x29, 0xe4, 0xaa, 0xd8, 0x7e, 0xb0, 0x66, 0x27, 0x47, 0x1f, 0xd5, + 0xbd, 0x82, 0x92, 0xeb, 0xd5, 0x13, 0x47, 0xe5, 0xf0, 0x73, 0x3e, 0x57, 0x4d, 0xe4, 0x8a, 0x67, + 0xf6, 0x25, 0xcb, 0xf6, 0x2f, 0x33, 0x2e, 0xaa, 0xea, 0x62, 0xe6, 0xb4, 0x88, 0x12, 0xcb, 0x67, + 0x7e, 0xd9, 0xb2, 0x2d, 0xd8, 0xc7, 0xd3, 0x9f, 0x61, 0xea, 0x9d, 0xa9, 0xb3, 0x66, 0x9d, 0xf1, + 0x17, 0xdf, 0xca, 0xc8, 0xea, 0xe3, 0x92, 0x5f, 0x6e, 0x5f, 0x20, 0xf8, 0x8c, 0xa2, 0x22, 0x2a, + 0x88, 0x5d, 0x13, 0xa1, 0xab, 0x22, 0x72, 0x6d, 0x04, 0xae, 0x8d, 0xb8, 0xf5, 0x11, 0xb6, 0xd9, + 0xb0, 0x97, 0xfd, 0x32, 0xba, 0xe3, 0x0d, 0x47, 0x7e, 0x58, 0x91, 0x73, 0xdb, 0x37, 0xab, 0xbe, + 0x3c, 0x88, 0xe4, 0xfc, 0xa9, 0xe1, 0x16, 0xe5, 0xb6, 0x54, 0xa7, 0x1d, 0x35, 0xd4, 0x86, 0xea, + 0xb6, 0x9f, 0xc6, 0xda, 0x4e, 0x63, 0xed, 0xa6, 0xb9, 0x36, 0x33, 0x5f, 0x80, 0xa3, 0xdc, 0x4e, + 0xae, 0x72, 0xf4, 0x89, 0xbc, 0x85, 0xca, 0xf2, 0xcf, 0xd3, 0xf7, 0xa1, 0xc2, 0xb3, 0xcd, 0x70, + 0x3c, 0x7a, 0xb2, 0xe0, 0x4f, 0x5e, 0x18, 0x44, 0x22, 0x67, 0x0f, 0x45, 0x32, 0x88, 0xfd, 0x7b, + 0x25, 0xbc, 0xb8, 0xa4, 0x65, 0xb6, 0x18, 0x84, 0xcc, 0x41, 0xe6, 0xb0, 0x36, 0x73, 0x28, 0x93, + 0xe1, 0x8a, 0x24, 0x78, 0x3e, 0x31, 0xef, 0x87, 0x43, 0xf1, 0x5b, 0x3d, 0xda, 0xa7, 0x8f, 0x13, + 0xe7, 0xc4, 0xb9, 0xb5, 0x71, 0x3e, 0xf6, 0xc3, 0xf4, 0xa0, 0xa6, 0x11, 0xe7, 0xc7, 0x0a, 0x8f, + 0xea, 0xb1, 0xca, 0x1a, 0xf4, 0xba, 0x09, 0x16, 0xd9, 0x94, 0xd0, 0x9c, 0x21, 0xd6, 0xd8, 0x24, + 0x2f, 0xa9, 0x23, 0x0c, 0x68, 0x82, 0x1d, 0x36, 0x3d, 0xb5, 0x87, 0xb5, 0xd3, 0xc3, 0xd3, 0xfa, + 0x71, 0xed, 0xf4, 0xa8, 0x40, 0x73, 0xbc, 0x21, 0xee, 0xf5, 0xb6, 0x00, 0xe5, 0x37, 0xf0, 0xc3, + 0x5f, 0xba, 0xbd, 0xfa, 0xd2, 0x18, 0x14, 0x62, 0x0a, 0xb1, 0xb5, 0x85, 0x58, 0x84, 0xe3, 0x91, + 0x88, 0x3d, 0x85, 0xce, 0xd2, 0xaa, 0x2e, 0xfd, 0x15, 0x2b, 0x3f, 0x65, 0x2d, 0xd4, 0x93, 0xc7, + 0xaa, 0xd1, 0x48, 0x23, 0xa4, 0x11, 0x6b, 0xd3, 0x88, 0xde, 0x1d, 0x67, 0x9d, 0xbb, 0xcd, 0x66, + 0xee, 0x34, 0x3f, 0x1b, 0xd2, 0xea, 0x5e, 0x5c, 0x9e, 0x37, 0x5a, 0xfd, 0x66, 0xab, 0xd9, 0x6e, + 0x76, 0xdc, 0xfe, 0x55, 0xaf, 0xeb, 0x76, 0xcf, 0xbb, 0xad, 0xbe, 0xfb, 0xfd, 0xaa, 0xa9, 0xea, + 0x4f, 0x06, 0xae, 0x31, 0x1b, 0xba, 0xaa, 0xfd, 0x64, 0x4e, 0xbf, 0xeb, 0x76, 0x9c, 0xcf, 0x00, + 0xeb, 0x26, 0x6d, 0x68, 0xba, 0x7f, 0x35, 0x7b, 0x9d, 0xa6, 0xbb, 0xe9, 0x33, 0x5a, 0xb7, 0x79, + 0x87, 0x6e, 0x4e, 0xe5, 0x2d, 0xba, 0xbf, 0xf3, 0x06, 0xbf, 0x2a, 0xa3, 0x68, 0xa8, 0x55, 0xd7, + 0x96, 0x87, 0xa1, 0xa0, 0x51, 0xd0, 0xac, 0x2d, 0x68, 0x2f, 0x5c, 0xfd, 0x73, 0x37, 0xb1, 0x14, + 0x9e, 0xfd, 0x2a, 0x7e, 0x78, 0xe3, 0x60, 0xb2, 0x4a, 0x9d, 0x6e, 0xa7, 0xe9, 0x14, 0x20, 0x05, + 0xc5, 0x5e, 0x2a, 0x2a, 0x83, 0xc0, 0x4b, 0x12, 0xf5, 0xfc, 0xb3, 0x34, 0x06, 0xc9, 0x87, 0xe4, + 0x03, 0x9a, 0x2e, 0x3a, 0x9a, 0x5e, 0x28, 0x03, 0xf5, 0x1a, 0x6e, 0xb3, 0x7f, 0xde, 0x6a, 0x5c, + 0x5f, 0x5b, 0x82, 0xa4, 0x27, 0xf2, 0x31, 0x13, 0xab, 0x8e, 0xf6, 0xf7, 0x2f, 0xca, 0x8c, 0xa7, + 0x17, 0x96, 0x9c, 0x58, 0x63, 0x49, 0xb5, 0x6a, 0x8d, 0x29, 0x87, 0xb6, 0x18, 0x52, 0xb7, 0x68, + 0x49, 0xac, 0x89, 0x13, 0x8b, 0x2c, 0xb1, 0xc5, 0x10, 0x4b, 0xec, 0xd0, 0xd3, 0xc5, 0x2b, 0x94, + 0x25, 0xd6, 0x04, 0xc9, 0xa9, 0x35, 0x96, 0xd4, 0x8e, 0xac, 0x89, 0x77, 0x6b, 0x2c, 0x39, 0xb6, + 0xa9, 0x2c, 0xda, 0x62, 0xca, 0x81, 0x9e, 0x25, 0x5b, 0x44, 0x92, 0xa7, 0x22, 0x49, 0x2b, 0x89, + 0xff, 0x33, 0xf4, 0x02, 0x75, 0x8a, 0x6a, 0x79, 0x10, 0x38, 0x2a, 0x38, 0x2a, 0x6b, 0x39, 0x2a, + 0x75, 0x05, 0x49, 0x45, 0xe5, 0xc8, 0x9c, 0x82, 0x3e, 0xf6, 0xef, 0x2a, 0xf7, 0x71, 0x94, 0x46, + 0x83, 0x48, 0x27, 0xec, 0x5f, 0x0c, 0x43, 0xe0, 0x13, 0xf8, 0x90, 0xd3, 0xeb, 0x83, 0xbf, 0x48, + 0xe4, 0xb4, 0x8d, 0x87, 0x3c, 0xaa, 0x17, 0xcd, 0xd2, 0x1f, 0xf2, 0xe8, 0xba, 0x37, 0x87, 0xe5, + 0x37, 0xe2, 0xeb, 0xcd, 0x41, 0xe9, 0x8d, 0xb8, 0x76, 0xdb, 0xb5, 0xa3, 0x7a, 0xf9, 0xd7, 0xe2, + 0xfc, 0xb8, 0x7e, 0x62, 0x81, 0x15, 0x87, 0x27, 0x36, 0xc4, 0x76, 0xad, 0xfc, 0x19, 0xaa, 0xba, + 0x7f, 0xd1, 0xec, 0xb7, 0x1a, 0x1d, 0x1b, 0x96, 0xe3, 0xc0, 0x86, 0x54, 0x6b, 0x85, 0x4f, 0xed, + 0x5b, 0x50, 0xbb, 0xaf, 0xdd, 0x76, 0xb5, 0x6e, 0xc5, 0x5a, 0xf4, 0xdb, 0xad, 0x0b, 0x1b, 0x42, + 0xe3, 0xbc, 0x63, 0x47, 0xba, 0xfd, 0xd7, 0x8e, 0x74, 0x5b, 0xb5, 0x02, 0x9f, 0xd7, 0x6c, 0x30, + 0xc2, 0x82, 0xc8, 0x78, 0x2a, 0x7d, 0x36, 0xd4, 0x8c, 0x7a, 0xf9, 0x1b, 0xbe, 0x43, 0x1b, 0xca, + 0x77, 0xf7, 0xab, 0x0d, 0xad, 0xf7, 0x79, 0xf5, 0xb4, 0xb6, 0xc5, 0x9b, 0x5f, 0xb6, 0x4a, 0x25, + 0xca, 0xde, 0xcb, 0x36, 0x2c, 0x96, 0x28, 0xa1, 0x6f, 0x99, 0x41, 0x2e, 0x71, 0x47, 0x63, 0x71, + 0x9c, 0xbf, 0xc5, 0x63, 0x56, 0xc5, 0x18, 0xa7, 0xe5, 0x27, 0x69, 0x23, 0x4d, 0xb3, 0x29, 0xdf, + 0x39, 0x6d, 0x3f, 0x6c, 0x06, 0x62, 0x24, 0xc2, 0x89, 0xf0, 0x40, 0x38, 0x0e, 0x82, 0x0c, 0xba, + 0x8e, 0x6d, 0xef, 0xb7, 0xfc, 0x43, 0xdd, 0x78, 0x28, 0x62, 0x31, 0x3c, 0x7b, 0x9c, 0x3d, 0xa2, + 0x35, 0x21, 0x92, 0x5e, 0x9a, 0x83, 0x77, 0x3a, 0x99, 0xf4, 0x2f, 0x0d, 0xfa, 0xe3, 0x7a, 0x4f, + 0x7c, 0xdf, 0xbf, 0x56, 0xff, 0xe6, 0x9d, 0x09, 0xce, 0x3a, 0xb1, 0x06, 0x27, 0x74, 0xcd, 0x44, + 0x9a, 0x99, 0xc0, 0xd5, 0x13, 0xf7, 0x76, 0x5a, 0x56, 0x4c, 0x89, 0x13, 0xdd, 0xcf, 0x6e, 0xcd, + 0x7b, 0xc1, 0xe4, 0x8a, 0xd0, 0xfb, 0xb7, 0x5a, 0x16, 0x5b, 0x66, 0x6f, 0x1e, 0x79, 0x67, 0xaa, + 0xd7, 0x2b, 0x97, 0x7e, 0xb8, 0xef, 0x97, 0x65, 0x7f, 0x4f, 0x72, 0x1f, 0x2f, 0xeb, 0x7e, 0x9d, + 0xf4, 0xbe, 0x9c, 0xf4, 0xfe, 0x9b, 0xfc, 0x3e, 0x9b, 0x9c, 0x9b, 0x7f, 0xa4, 0x0c, 0xea, 0x64, + 0xba, 0x41, 0xf9, 0x3c, 0xbd, 0x19, 0x2e, 0x4a, 0x66, 0x14, 0xaa, 0xcd, 0x2c, 0x50, 0x2b, 0xb3, + 0xbd, 0xab, 0xb8, 0x9d, 0x2b, 0xbb, 0x7d, 0xab, 0xbc, 0x5d, 0xab, 0xbc, 0x3d, 0xab, 0xbe, 0x1d, + 0xab, 0x57, 0x8f, 0xb3, 0x0a, 0xcb, 0x3a, 0x83, 0xf9, 0x6a, 0x4a, 0x4a, 0x20, 0xcf, 0x9e, 0xcb, + 0x59, 0x03, 0x79, 0x1f, 0x0d, 0x64, 0x63, 0xae, 0xa8, 0xef, 0x92, 0xb6, 0xe0, 0xf9, 0x37, 0x05, + 0xf0, 0xcb, 0xd3, 0xcf, 0x2f, 0x52, 0x2e, 0xad, 0x51, 0xfd, 0xbb, 0x8b, 0x3f, 0xdf, 0x7e, 0xfa, + 0xeb, 0xfd, 0xa7, 0x9f, 0xfd, 0x99, 0xcf, 0x6f, 0x50, 0xfc, 0x7c, 0x72, 0xa3, 0xd8, 0x1f, 0xca, + 0xc7, 0xfe, 0xfc, 0x41, 0xb9, 0xe0, 0xdf, 0x27, 0xf8, 0x09, 0xfe, 0xd7, 0xaf, 0x23, 0x7d, 0x0c, + 0x68, 0x71, 0x31, 0x5e, 0x78, 0x3f, 0xe4, 0x8e, 0xfe, 0x3c, 0x57, 0x21, 0x09, 0xcd, 0x46, 0xe7, + 0x6a, 0x96, 0x5f, 0xf6, 0xf6, 0xa6, 0xdd, 0xfe, 0x97, 0xb9, 0xf3, 0xf3, 0x95, 0x02, 0xbe, 0x52, + 0xb0, 0x25, 0x41, 0x2a, 0xfd, 0x95, 0x02, 0xb4, 0xc6, 0x77, 0x37, 0xe4, 0xe4, 0xba, 0xce, 0x6e, + 0xcc, 0xe9, 0x8d, 0x39, 0xbf, 0xb9, 0x20, 0x50, 0xa4, 0xb5, 0xd1, 0x1a, 0x57, 0x99, 0x0b, 0x69, + 0x34, 0xa9, 0x89, 0x2a, 0x89, 0x75, 0x62, 0xbd, 0x84, 0xb1, 0x3e, 0xf6, 0xc3, 0xb4, 0x5a, 0xd7, + 0x88, 0xf5, 0x3a, 0x7a, 0xe3, 0x6a, 0xc3, 0xa0, 0x37, 0x9e, 0xfb, 0xd4, 0xd6, 0x8f, 0x8e, 0x0e, + 0x90, 0x1a, 0xff, 0x94, 0xea, 0xfb, 0x20, 0xc2, 0x61, 0x14, 0x6b, 0xd5, 0xdf, 0xc5, 0x10, 0x54, + 0x60, 0x2a, 0x30, 0x68, 0x7b, 0xf3, 0x68, 0xdb, 0x4e, 0x5a, 0x7d, 0x43, 0x87, 0x64, 0x56, 0xb3, + 0xea, 0xc5, 0x3b, 0x22, 0x93, 0xad, 0xcd, 0xe1, 0x90, 0xcc, 0x26, 0x7c, 0x33, 0xbf, 0x23, 0x32, + 0x2b, 0xbd, 0xd1, 0x96, 0x03, 0x32, 0x59, 0x0f, 0x90, 0x18, 0x9c, 0x3f, 0x9d, 0x23, 0x32, 0xeb, + 0xe9, 0xf3, 0x4c, 0x74, 0x79, 0xe6, 0xa3, 0x30, 0x35, 0x8e, 0xc2, 0x18, 0x3f, 0x0a, 0x93, 0xbf, + 0x43, 0x7f, 0x54, 0xa2, 0x14, 0x9d, 0x78, 0x4d, 0xf1, 0x59, 0xe1, 0xb9, 0x3b, 0x6b, 0xe6, 0xe2, + 0xa3, 0x39, 0x50, 0xb7, 0xdd, 0x59, 0x19, 0x30, 0x0a, 0xd6, 0xbe, 0xb4, 0x73, 0x61, 0xcd, 0xf4, + 0xff, 0x66, 0xf6, 0xbc, 0x67, 0x87, 0xe3, 0x27, 0xdf, 0xbc, 0x5f, 0xa2, 0x17, 0x45, 0x6f, 0x5d, + 0xee, 0xb5, 0x6d, 0xce, 0xf2, 0xaf, 0x5e, 0xbc, 0xe9, 0xf2, 0x8b, 0xfc, 0xd9, 0xf9, 0xf3, 0x3f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc4, 0x58, 0x11, 0x83, 0xc0, 0xed, + 0x12, 0x00, + } +) + + +// ΛEnumTypes is a map, keyed by a YANG schema path, of the enumerated types that +// correspond with the leaf. The type is represented as a reflect.Type. The naming +// of the map ensures that there are no clashes with valid YANG identifiers. +var ΛEnumTypes = map[string][]reflect.Type{ + "/components/component/port/breakout-mode/config/channel-speed": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), + }, + "/components/component/port/breakout-mode/state/channel-speed": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), + }, + "/components/component/state/oper-status": []reflect.Type{ + reflect.TypeOf((E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS)(0)), + }, + "/components/component/state/temperature/alarm-severity": []reflect.Type{ + reflect.TypeOf((E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY)(0)), + }, + "/components/component/state/type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT)(0)), + reflect.TypeOf((E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT)(0)), + }, + "/components/component/transceiver/config/ethernet-pmd-preconf": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE)(0)), + }, + "/components/component/transceiver/config/fec-mode": []reflect.Type{ + reflect.TypeOf((E_OpenconfigPlatformTypes_FEC_MODE_TYPE)(0)), + }, + "/components/component/transceiver/config/form-factor-preconf": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE)(0)), + }, + "/components/component/transceiver/state/connector-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_FIBER_CONNECTOR_TYPE)(0)), + }, + "/components/component/transceiver/state/ethernet-pmd": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE)(0)), + }, + "/components/component/transceiver/state/ethernet-pmd-preconf": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_ETHERNET_PMD_TYPE)(0)), + }, + "/components/component/transceiver/state/fec-mode": []reflect.Type{ + reflect.TypeOf((E_OpenconfigPlatformTypes_FEC_MODE_TYPE)(0)), + }, + "/components/component/transceiver/state/fec-status": []reflect.Type{ + reflect.TypeOf((E_OpenconfigPlatformTypes_FEC_STATUS_TYPE)(0)), + }, + "/components/component/transceiver/state/form-factor": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE)(0)), + }, + "/components/component/transceiver/state/form-factor-preconf": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_TRANSCEIVER_FORM_FACTOR_TYPE)(0)), + }, + "/components/component/transceiver/state/otn-compliance-code": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_OTN_APPLICATION_CODE)(0)), + }, + "/components/component/transceiver/state/present": []reflect.Type{ + reflect.TypeOf((E_OpenconfigPlatform_Components_Component_Transceiver_State_Present)(0)), + }, + "/components/component/transceiver/state/sonet-sdh-compliance-code": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_SONET_APPLICATION_CODE)(0)), + }, + "/interfaces-state/interface/admin-status": []reflect.Type{ + reflect.TypeOf((E_IETFInterfaces_InterfacesState_Interface_AdminStatus)(0)), + }, + "/interfaces-state/interface/oper-status": []reflect.Type{ + reflect.TypeOf((E_IETFInterfaces_InterfacesState_Interface_OperStatus)(0)), + }, + "/interfaces-state/interface/type": []reflect.Type{ + reflect.TypeOf((E_IETFInterfaces_InterfaceType)(0)), + }, + "/interfaces/interface/config/type": []reflect.Type{ + reflect.TypeOf((E_IETFInterfaces_InterfaceType)(0)), + }, + "/interfaces/interface/ethernet/config/duplex-mode": []reflect.Type{ + reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode)(0)), + }, + "/interfaces/interface/ethernet/config/port-speed": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), + }, + "/interfaces/interface/ethernet/state/duplex-mode": []reflect.Type{ + reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_Config_DuplexMode)(0)), + }, + "/interfaces/interface/ethernet/state/negotiated-duplex-mode": []reflect.Type{ + reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_Ethernet_State_NegotiatedDuplexMode)(0)), + }, + "/interfaces/interface/ethernet/state/negotiated-port-speed": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), + }, + "/interfaces/interface/ethernet/state/port-speed": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), + }, + "/interfaces/interface/state/admin-status": []reflect.Type{ + reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus)(0)), + }, + "/interfaces/interface/state/oper-status": []reflect.Type{ + reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus)(0)), + }, + "/interfaces/interface/state/type": []reflect.Type{ + reflect.TypeOf((E_IETFInterfaces_InterfaceType)(0)), + }, + "/interfaces/interface/subinterfaces/subinterface/state/admin-status": []reflect.Type{ + reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus)(0)), + }, + "/interfaces/interface/subinterfaces/subinterface/state/oper-status": []reflect.Type{ + reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus)(0)), + }, + "/lldp/config/chassis-id-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigLldp_ChassisIdType)(0)), + }, + "/lldp/config/suppress-tlv-advertisement": []reflect.Type{ + reflect.TypeOf((E_OpenconfigLldpTypes_LLDP_TLV)(0)), + }, + "/lldp/interfaces/interface/neighbors/neighbor/capabilities/capability/name": []reflect.Type{ + reflect.TypeOf((E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY)(0)), + }, + "/lldp/interfaces/interface/neighbors/neighbor/capabilities/capability/state/name": []reflect.Type{ + reflect.TypeOf((E_OpenconfigLldpTypes_LLDP_SYSTEM_CAPABILITY)(0)), + }, + "/lldp/interfaces/interface/neighbors/neighbor/state/chassis-id-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigLldp_ChassisIdType)(0)), + }, + "/lldp/interfaces/interface/neighbors/neighbor/state/port-id-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigLldp_PortIdType)(0)), + }, + "/lldp/state/chassis-id-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigLldp_ChassisIdType)(0)), + }, + "/lldp/state/suppress-tlv-advertisement": []reflect.Type{ + reflect.TypeOf((E_OpenconfigLldpTypes_LLDP_TLV)(0)), + }, + "/terminal-device/logical-channels/channel/config/admin-state": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTerminalDevice_AdminStateType)(0)), + }, + "/terminal-device/logical-channels/channel/config/logical-channel-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE)(0)), + }, + "/terminal-device/logical-channels/channel/config/loopback-mode": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTerminalDevice_LoopbackModeType)(0)), + }, + "/terminal-device/logical-channels/channel/config/rate-class": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE)(0)), + }, + "/terminal-device/logical-channels/channel/config/trib-protocol": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE)(0)), + }, + "/terminal-device/logical-channels/channel/ethernet/config/client-als": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls)(0)), + }, + "/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/state/chassis-id-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigLldp_ChassisIdType)(0)), + }, + "/terminal-device/logical-channels/channel/ethernet/lldp/neighbors/neighbor/state/port-id-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigLldp_PortIdType)(0)), + }, + "/terminal-device/logical-channels/channel/ethernet/state/client-als": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_Ethernet_Config_ClientAls)(0)), + }, + "/terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/assignment-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType)(0)), + }, + "/terminal-device/logical-channels/channel/logical-channel-assignments/assignment/config/mapping": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL)(0)), + }, + "/terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state/assignment-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_LogicalChannelAssignments_Assignment_Config_AssignmentType)(0)), + }, + "/terminal-device/logical-channels/channel/logical-channel-assignments/assignment/state/mapping": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_FRAME_MAPPING_PROTOCOL)(0)), + }, + "/terminal-device/logical-channels/channel/otn/config/tributary-slot-granularity": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY)(0)), + }, + "/terminal-device/logical-channels/channel/otn/state/tributary-slot-granularity": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_TRIBUTARY_SLOT_GRANULARITY)(0)), + }, + "/terminal-device/logical-channels/channel/state/admin-state": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTerminalDevice_AdminStateType)(0)), + }, + "/terminal-device/logical-channels/channel/state/link-state": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTerminalDevice_TerminalDevice_LogicalChannels_Channel_State_LinkState)(0)), + }, + "/terminal-device/logical-channels/channel/state/logical-channel-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_LOGICAL_ELEMENT_PROTOCOL_TYPE)(0)), + }, + "/terminal-device/logical-channels/channel/state/loopback-mode": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTerminalDevice_LoopbackModeType)(0)), + }, + "/terminal-device/logical-channels/channel/state/rate-class": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_TRIBUTARY_RATE_CLASS_TYPE)(0)), + }, + "/terminal-device/logical-channels/channel/state/trib-protocol": []reflect.Type{ + reflect.TypeOf((E_OpenconfigTransportTypes_TRIBUTARY_PROTOCOL_TYPE)(0)), + }, +} + diff --git a/hackfest/openconfig/openconfig-terminal-device.png b/hackfest/openconfig/openconfig-terminal-device.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed8c7ea9906a8526244c12130db7b23a71e6fb0 Binary files /dev/null and b/hackfest/openconfig/openconfig-terminal-device.png differ diff --git a/hackfest/openconfig/openconfig-terminal-device.tree b/hackfest/openconfig/openconfig-terminal-device.tree new file mode 100644 index 0000000000000000000000000000000000000000..03da8a72e224eb752fea330b5c65321bad1d91d5 --- /dev/null +++ b/hackfest/openconfig/openconfig-terminal-device.tree @@ -0,0 +1,258 @@ +module: openconfig-terminal-device + +--rw terminal-device + +--rw config + +--ro state + +--rw logical-channels + | +--rw channel* [index] + | +--rw index -> ../config/index + | +--rw config + | | +--rw index? uint32 + | | +--rw description? string + | | +--rw admin-state? oc-opt-types:admin-state-type + | | +--rw rate-class? identityref + | | +--rw trib-protocol? identityref + | | +--rw logical-channel-type? identityref + | | +--rw loopback-mode? oc-opt-types:loopback-mode-type + | | +--rw test-signal? boolean + | +--ro state + | | +--ro index? uint32 + | | +--ro description? string + | | +--ro admin-state? oc-opt-types:admin-state-type + | | +--ro rate-class? identityref + | | +--ro trib-protocol? identityref + | | +--ro logical-channel-type? identityref + | | +--ro loopback-mode? oc-opt-types:loopback-mode-type + | | +--ro test-signal? boolean + | | +--ro link-state? enumeration + | +--rw otn + | | +--rw config + | | | +--rw tti-msg-transmit? string + | | | +--rw tti-msg-expected? string + | | | +--rw tti-msg-auto? boolean + | | | +--rw tributary-slot-granularity? identityref + | | +--ro state + | | +--ro tti-msg-transmit? string + | | +--ro tti-msg-expected? string + | | +--ro tti-msg-auto? boolean + | | +--ro tributary-slot-granularity? identityref + | | +--ro tti-msg-recv? string + | | +--ro rdi-msg? string + | | +--ro errored-seconds? yang:counter64 + | | +--ro severely-errored-seconds? yang:counter64 + | | +--ro unavailable-seconds? yang:counter64 + | | +--ro code-violations? yang:counter64 + | | +--ro errored-blocks? yang:counter64 + | | +--ro fec-uncorrectable-blocks? yang:counter64 + | | +--ro fec-uncorrectable-words? yang:counter64 + | | +--ro fec-corrected-bytes? yang:counter64 + | | +--ro fec-corrected-bits? yang:counter64 + | | +--ro background-block-errors? yang:counter64 + | | +--ro pre-fec-ber + | | | +--ro instant? decimal64 + | | | +--ro avg? decimal64 + | | | +--ro min? decimal64 + | | | +--ro max? decimal64 + | | | +--ro interval? oc-types:stat-interval + | | | +--ro min-time? oc-types:timeticks64 + | | | +--ro max-time? oc-types:timeticks64 + | | +--ro post-fec-ber + | | | +--ro instant? decimal64 + | | | +--ro avg? decimal64 + | | | +--ro min? decimal64 + | | | +--ro max? decimal64 + | | | +--ro interval? oc-types:stat-interval + | | | +--ro min-time? oc-types:timeticks64 + | | | +--ro max-time? oc-types:timeticks64 + | | +--ro q-value + | | | +--ro instant? decimal64 + | | | +--ro avg? decimal64 + | | | +--ro min? decimal64 + | | | +--ro max? decimal64 + | | | +--ro interval? oc-types:stat-interval + | | | +--ro min-time? oc-types:timeticks64 + | | | +--ro max-time? oc-types:timeticks64 + | | +--ro esnr + | | +--ro instant? decimal64 + | | +--ro avg? decimal64 + | | +--ro min? decimal64 + | | +--ro max? decimal64 + | | +--ro interval? oc-types:stat-interval + | | +--ro min-time? oc-types:timeticks64 + | | +--ro max-time? oc-types:timeticks64 + | +--rw ethernet + | | +--rw config + | | | +--rw client-als? enumeration + | | | +--rw als-delay? uint32 + | | +--ro state + | | | +--ro client-als? enumeration + | | | +--ro als-delay? uint32 + | | | +--ro in-mac-control-frames? oc-yang:counter64 + | | | +--ro in-mac-pause-frames? oc-yang:counter64 + | | | +--ro in-oversize-frames? oc-yang:counter64 + | | | +--ro in-undersize-frames? oc-yang:counter64 + | | | +--ro in-jabber-frames? oc-yang:counter64 + | | | +--ro in-fragment-frames? oc-yang:counter64 + | | | +--ro in-8021q-frames? oc-yang:counter64 + | | | +--ro in-crc-errors? oc-yang:counter64 + | | | +--ro in-block-errors? oc-yang:counter64 + | | | +--ro out-mac-control-frames? oc-yang:counter64 + | | | +--ro out-mac-pause-frames? oc-yang:counter64 + | | | +--ro out-8021q-frames? oc-yang:counter64 + | | | +--ro in-pcs-bip-errors? oc-yang:counter64 + | | | +--ro in-pcs-errored-seconds? oc-yang:counter64 + | | | +--ro in-pcs-severely-errored-seconds? oc-yang:counter64 + | | | +--ro in-pcs-unavailable-seconds? oc-yang:counter64 + | | | +--ro out-pcs-bip-errors? oc-yang:counter64 + | | | +--ro out-crc-errors? oc-yang:counter64 + | | | +--ro out-block-errors? oc-yang:counter64 + | | +--rw lldp + | | +--rw config + | | | +--rw enabled? boolean + | | | +--rw snooping? boolean + | | +--ro state + | | | +--ro enabled? boolean + | | | +--ro snooping? boolean + | | | +--ro counters + | | | +--ro frame-in? yang:counter64 + | | | +--ro frame-out? yang:counter64 + | | | +--ro frame-error-in? yang:counter64 + | | | +--ro frame-discard? yang:counter64 + | | | +--ro tlv-discard? yang:counter64 + | | | +--ro tlv-unknown? yang:counter64 + | | | +--ro last-clear? yang:date-and-time + | | | +--ro frame-error-out? yang:counter64 + | | +--ro neighbors + | | +--ro neighbor* [id] + | | +--ro id -> ../state/id + | | +--ro config + | | +--ro state + | | | +--ro system-name? string + | | | +--ro system-description? string + | | | +--ro chassis-id? string + | | | +--ro chassis-id-type? oc-lldp-types:chassis-id-type + | | | +--ro id? string + | | | +--ro age? uint64 + | | | +--ro last-update? int64 + | | | +--ro ttl? uint16 + | | | +--ro port-id? string + | | | +--ro port-id-type? oc-lldp-types:port-id-type + | | | +--ro port-description? string + | | | +--ro management-address? string + | | | +--ro management-address-type? string + | | +--ro custom-tlvs + | | +--ro tlv* [type oui oui-subtype] + | | +--ro type -> ../state/type + | | +--ro oui -> ../state/oui + | | +--ro oui-subtype -> ../state/oui-subtype + | | +--ro config + | | +--ro state + | | +--ro type? int32 + | | +--ro oui? string + | | +--ro oui-subtype? string + | | +--ro value? binary + | +--rw ingress + | | +--rw config + | | | +--rw transceiver? -> /oc-platform:components/component/name + | | | +--rw physical-channel* -> /oc-platform:components/component/oc-transceiver:transceiver/physical-channels/channel/index + | | +--ro state + | | +--ro transceiver? -> /oc-platform:components/component/name + | | +--ro physical-channel* -> /oc-platform:components/component/oc-transceiver:transceiver/physical-channels/channel/index + | +--rw logical-channel-assignments + | +--rw assignment* [index] + | +--rw index -> ../config/index + | +--rw config + | | +--rw index? uint32 + | | +--rw description? string + | | +--rw assignment-type? enumeration + | | +--rw logical-channel? -> /terminal-device/logical-channels/channel/index + | | +--rw optical-channel? -> /oc-platform:components/component/name + | | +--rw allocation? decimal64 + | | +--rw tributary-slot-index? int32 + | | +--rw mapping? identityref + | +--ro state + | +--ro index? uint32 + | +--ro description? string + | +--ro assignment-type? enumeration + | +--ro logical-channel? -> /terminal-device/logical-channels/channel/index + | +--ro optical-channel? -> /oc-platform:components/component/name + | +--ro allocation? decimal64 + | +--ro tributary-slot-index? int32 + | +--ro mapping? identityref + +--rw operational-modes + +--ro mode* [mode-id] + +--ro mode-id -> ../state/mode-id + +--ro config + +--ro state + +--ro mode-id? uint16 + +--ro description? string + +--ro vendor-id? string + + augment /oc-platform:components/oc-platform:component: + +--rw optical-channel + +--rw config + | +--rw frequency? oc-opt-types:frequency-type + | +--rw target-output-power? decimal64 + | +--rw operational-mode? uint16 + | +--rw line-port? -> /oc-platform:components/component/name + +--ro state + +--ro frequency? oc-opt-types:frequency-type + +--ro target-output-power? decimal64 + +--ro operational-mode? uint16 + +--ro line-port? -> /oc-platform:components/component/name + +--ro group-id? uint32 + +--ro output-power + | +--ro instant? decimal64 + | +--ro avg? decimal64 + | +--ro min? decimal64 + | +--ro max? decimal64 + | +--ro interval? oc-types:stat-interval + | +--ro min-time? oc-types:timeticks64 + | +--ro max-time? oc-types:timeticks64 + +--ro input-power + | +--ro instant? decimal64 + | +--ro avg? decimal64 + | +--ro min? decimal64 + | +--ro max? decimal64 + | +--ro interval? oc-types:stat-interval + | +--ro min-time? oc-types:timeticks64 + | +--ro max-time? oc-types:timeticks64 + +--ro laser-bias-current + | +--ro instant? decimal64 + | +--ro avg? decimal64 + | +--ro min? decimal64 + | +--ro max? decimal64 + | +--ro interval? oc-types:stat-interval + | +--ro min-time? oc-types:timeticks64 + | +--ro max-time? oc-types:timeticks64 + +--ro chromatic-dispersion + | +--ro instant? decimal64 + | +--ro avg? decimal64 + | +--ro min? decimal64 + | +--ro max? decimal64 + | +--ro interval? oc-types:stat-interval + | +--ro min-time? oc-types:timeticks64 + | +--ro max-time? oc-types:timeticks64 + +--ro polarization-mode-dispersion + | +--ro instant? decimal64 + | +--ro avg? decimal64 + | +--ro min? decimal64 + | +--ro max? decimal64 + | +--ro interval? oc-types:stat-interval + | +--ro min-time? oc-types:timeticks64 + | +--ro max-time? oc-types:timeticks64 + +--ro second-order-polarization-mode-dispersion + | +--ro instant? decimal64 + | +--ro avg? decimal64 + | +--ro min? decimal64 + | +--ro max? decimal64 + | +--ro interval? oc-types:stat-interval + | +--ro min-time? oc-types:timeticks64 + | +--ro max-time? oc-types:timeticks64 + +--ro polarization-dependent-loss + +--ro instant? decimal64 + +--ro avg? decimal64 + +--ro min? decimal64 + +--ro max? decimal64 + +--ro interval? oc-types:stat-interval + +--ro min-time? oc-types:timeticks64 + +--ro max-time? oc-types:timeticks64 diff --git a/hackfest/openconfig/openconfig-terminal-device.uml b/hackfest/openconfig/openconfig-terminal-device.uml new file mode 100644 index 0000000000000000000000000000000000000000..11b945ead0abbc6fb591767ef0f41d62c641b49e --- /dev/null +++ b/hackfest/openconfig/openconfig-terminal-device.uml @@ -0,0 +1,400 @@ +'Download plantuml from http://plantuml.sourceforge.net/ +'Generate png with java -jar plantuml.jar +'Output in img/.png +'If Java spits out memory error increase heap size with java -Xmx1024m -jar plantuml.jar +@startuml img/openconfig-terminal-device.png +hide empty fields +hide empty methods +hide <> circle +hide <> circle +hide <> circle +hide <> stereotype +hide <> circle +page 1x1 +Title openconfig-terminal-device +package "oc-types:openconfig-types" as oc_types_openconfig_types { +} +package "oc-opt-types:openconfig-transport-types" as oc_opt_types_openconfig_transport_types { +} +package "oc-eth:openconfig-if-ethernet" as oc_eth_openconfig_if_ethernet { +} +package "oc-platform:openconfig-platform" as oc_platform_openconfig_platform { +} +package "oc-transceiver:openconfig-platform-transceiver" as oc_transceiver_openconfig_platform_transceiver { +} +package "oc-lldp:openconfig-lldp" as oc_lldp_openconfig_lldp { +} +package "oc-ext:openconfig-extensions" as oc_ext_openconfig_extensions { +} +package "yang:ietf-yang-types" as yang_ietf_yang_types { +} +package "oc-yang:openconfig-yang-types" as oc_yang_openconfig_yang_types { +} +note top of oc_opt_term_openconfig_terminal_device : Namespace: http://openconfig.net/yang/terminal-device \nPrefix: oc-opt-term \nOrganization : \nOpenConfig working group \nContact : \nOpenConfig working group \nwww.openconfig.net \nRevision : 2019-11-28 \n +package "oc-opt-term:openconfig-terminal-device" as oc_opt_term_openconfig_terminal_device { +oc_types_openconfig_types +-- oc_opt_term_openconfig_terminal_device +oc_opt_types_openconfig_transport_types +-- oc_opt_term_openconfig_terminal_device +oc_eth_openconfig_if_ethernet +-- oc_opt_term_openconfig_terminal_device +oc_platform_openconfig_platform +-- oc_opt_term_openconfig_terminal_device +oc_transceiver_openconfig_platform_transceiver +-- oc_opt_term_openconfig_terminal_device +oc_lldp_openconfig_lldp +-- oc_opt_term_openconfig_terminal_device +oc_ext_openconfig_extensions +-- oc_opt_term_openconfig_terminal_device +yang_ietf_yang_types +-- oc_opt_term_openconfig_terminal_device +oc_yang_openconfig_yang_types +-- oc_opt_term_openconfig_terminal_device +class "openconfig-terminal-device" as openconfig_terminal_device << (M, #33CCFF) module>> +class "terminal-input-optical-power" as openconfig_terminal_device_I_terminal_input_optical_power_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_input_optical_power_grouping : input-power : decimal64 {dBm} +class "terminal-ethernet-protocol-config" as openconfig_terminal_device_I_terminal_ethernet_protocol_config_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_ethernet_protocol_config_grouping : client-als : enumeration : {NONE,LASER_SHUTDOWN,ETHERNET,} = ETHERNET +openconfig_terminal_device_I_terminal_ethernet_protocol_config_grouping : als-delay : uint32 = 0 {milliseconds} +class "terminal-ethernet-protocol-state" as openconfig_terminal_device_I_terminal_ethernet_protocol_state_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_ethernet_protocol_state_grouping : oc-eth:ethernet-interface-state-counters {uses} +openconfig_terminal_device_I_terminal_ethernet_protocol_state_grouping : terminal-ethernet-protocol-state-counters {uses} +class "terminal-ethernet-protocol-state-counters" as openconfig_terminal_device_I_terminal_ethernet_protocol_state_counters_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_ethernet_protocol_state_counters_grouping : in-pcs-bip-errors : oc-yang:counter64 +openconfig_terminal_device_I_terminal_ethernet_protocol_state_counters_grouping : in-pcs-errored-seconds : oc-yang:counter64 +openconfig_terminal_device_I_terminal_ethernet_protocol_state_counters_grouping : in-pcs-severely-errored-seconds : oc-yang:counter64 +openconfig_terminal_device_I_terminal_ethernet_protocol_state_counters_grouping : in-pcs-unavailable-seconds : oc-yang:counter64 +openconfig_terminal_device_I_terminal_ethernet_protocol_state_counters_grouping : out-pcs-bip-errors : oc-yang:counter64 +openconfig_terminal_device_I_terminal_ethernet_protocol_state_counters_grouping : out-crc-errors : oc-yang:counter64 +openconfig_terminal_device_I_terminal_ethernet_protocol_state_counters_grouping : out-block-errors : oc-yang:counter64 +class "terminal-ethernet-protocol-top" as openconfig_terminal_device_I_terminal_ethernet_protocol_top_grouping <<(G,Lime) grouping>> +class "ethernet" as openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet <> +openconfig_terminal_device_I_terminal_ethernet_protocol_top_grouping *-- "1" openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet +class "config" as openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_config <> +openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet *-- "1" openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_config +openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_config : terminal-ethernet-protocol-config {uses} +class "state" as openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_state <> +openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet *-- "1" openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_state +note bottom of openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_state +Config = false +end note +openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_state : terminal-ethernet-protocol-config {uses} +openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_state : terminal-ethernet-protocol-state {uses} +openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet : lldp-logical-channel-top {uses} +class "lldp-logical-channel-top" as openconfig_terminal_device_I_lldp_logical_channel_top_grouping <<(G,Lime) grouping>> +class "lldp" as openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp <> +openconfig_terminal_device_I_lldp_logical_channel_top_grouping *-- "1" openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp +class "config" as openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp_I_config <> +openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp *-- "1" openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp_I_config +openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp_I_config : lldp-logical-channel-config {uses} +class "state" as openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp_I_state <> +openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp *-- "1" openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp_I_state +note bottom of openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp_I_state +Config = false +end note +openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp_I_state : lldp-logical-channel-config {uses} +openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp_I_state : oc-lldp:lldp-interface-state {uses} +openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp : lldp-logical-channel-neighbor-top {uses} +class "lldp-logical-channel-config" as openconfig_terminal_device_I_lldp_logical_channel_config_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_lldp_logical_channel_config_grouping : enabled : boolean = false +openconfig_terminal_device_I_lldp_logical_channel_config_grouping : snooping : boolean = false +class "lldp-logical-channel-neighbor-top" as openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_grouping <<(G,Lime) grouping>> +class "neighbors" as openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors <> +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_grouping *-- "1" openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors +note bottom of openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors +Config = false +end note +class "neighbor" as openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor << (L, #FF7700) list>> +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors *-- "0..N" openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor : +id : leafref : ../state/id {key} +class "config" as openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_config <> +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor *-- "1" openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_config +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_config : lldp-logical-channel-neighbor-config {uses} +class "state" as openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_state <> +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor *-- "1" openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_state +note bottom of openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_state +Config = false +end note +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_state : oc-lldp:lldp-system-info-config {uses} +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_state : oc-lldp:lldp-system-info-state {uses} +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_state : oc-lldp:lldp-neighbor-config {uses} +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_state : oc-lldp:lldp-neighbor-state {uses} +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor : oc-lldp:lldp-custom-tlv-top {uses} +class "lldp-logical-channel-neighbor-config" as openconfig_terminal_device_I_lldp_logical_channel_neighbor_config_grouping <<(G,Lime) grouping>> +class "terminal-otn-protocol-config" as openconfig_terminal_device_I_terminal_otn_protocol_config_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_otn_protocol_config_grouping : tti-msg-transmit : string +openconfig_terminal_device_I_terminal_otn_protocol_config_grouping : tti-msg-expected : string +openconfig_terminal_device_I_terminal_otn_protocol_config_grouping : tti-msg-auto : boolean +openconfig_terminal_device_I_terminal_otn_protocol_config_grouping : tributary-slot-granularity : identityref {oc-opt-types:TRIBUTARY_SLOT_GRANULARITY} +class "terminal-otn-protocol-counter-stats" as openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : errored-seconds : yang:counter64 +openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : severely-errored-seconds : yang:counter64 +openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : unavailable-seconds : yang:counter64 +openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : code-violations : yang:counter64 +openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : errored-blocks : yang:counter64 +openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : fec-uncorrectable-blocks : yang:counter64 +openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : fec-uncorrectable-words : yang:counter64 +openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : fec-corrected-bytes : yang:counter64 +openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : fec-corrected-bits : yang:counter64 +openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : background-block-errors : yang:counter64 +class "terminal-otn-protocol-multi-stats" as openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_grouping <<(G,Lime) grouping>> +class "pre-fec-ber" as openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_pre_fec_ber <> +openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_grouping *-- "1" openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_pre_fec_ber +openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_pre_fec_ber : oc-opt-types:avg-min-max-instant-stats-precision18-ber {uses} +class "post-fec-ber" as openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_post_fec_ber <> +openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_grouping *-- "1" openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_post_fec_ber +openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_post_fec_ber : oc-opt-types:avg-min-max-instant-stats-precision18-ber {uses} +class "q-value" as openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_q_value <> +openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_grouping *-- "1" openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_q_value +openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_q_value : oc-types:avg-min-max-instant-stats-precision2-dB {uses} +class "esnr" as openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_esnr <> +openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_grouping *-- "1" openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_esnr +openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_I_esnr : oc-types:avg-min-max-instant-stats-precision2-dB {uses} +class "terminal-otn-protocol-state" as openconfig_terminal_device_I_terminal_otn_protocol_state_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_otn_protocol_state_grouping : tti-msg-recv : string +openconfig_terminal_device_I_terminal_otn_protocol_state_grouping : rdi-msg : string +openconfig_terminal_device_I_terminal_otn_protocol_state_grouping : terminal-otn-protocol-counter-stats {uses} +openconfig_terminal_device_I_terminal_otn_protocol_state_grouping : terminal-otn-protocol-multi-stats {uses} +class "terminal-otn-protocol-top" as openconfig_terminal_device_I_terminal_otn_protocol_top_grouping <<(G,Lime) grouping>> +class "otn" as openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn <> +openconfig_terminal_device_I_terminal_otn_protocol_top_grouping *-- "1" openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn +class "config" as openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_config <> +openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn *-- "1" openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_config +openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_config : terminal-otn-protocol-config {uses} +class "state" as openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_state <> +openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn *-- "1" openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_state +note bottom of openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_state +Config = false +end note +openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_state : terminal-otn-protocol-config {uses} +openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_state : terminal-otn-protocol-state {uses} +class "terminal-client-port-assignment-config" as openconfig_terminal_device_I_terminal_client_port_assignment_config_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_client_port_assignment_config_grouping : index : uint32 +openconfig_terminal_device_I_terminal_client_port_assignment_config_grouping : description : string +openconfig_terminal_device_I_terminal_client_port_assignment_config_grouping : logical-channel : leafref : /oc-opt-term:terminal-device/oc-opt-term:logical-channels/oc-opt-term:channel/oc-opt-term:index +openconfig_terminal_device_I_terminal_client_port_assignment_config_grouping : allocation : decimal64 {Gbps} +class "terminal-client-port-assignment-state" as openconfig_terminal_device_I_terminal_client_port_assignment_state_grouping <<(G,Lime) grouping>> +class "terminal-client-port-assignment-top" as openconfig_terminal_device_I_terminal_client_port_assignment_top_grouping <<(G,Lime) grouping>> +class "logical-channel-assignments" as openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments <> +openconfig_terminal_device_I_terminal_client_port_assignment_top_grouping *-- "1" openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments +class "assignment" as openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment << (L, #FF7700) list>> +openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments *-- "0..N" openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment +openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment : +index : leafref : ../config/index {key} +class "config" as openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_config <> +openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment *-- "1" openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_config +openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_config : terminal-client-port-assignment-config {uses} +class "state" as openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_state <> +openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment *-- "1" openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_state +note bottom of openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_state +Config = false +end note +openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_state : terminal-client-port-assignment-config {uses} +openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_state : terminal-client-port-assignment-state {uses} +class "terminal-logical-chan-assignment-config" as openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping : +index : uint32 {key} +openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping : description : string +openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping : assignment-type : enumeration : {LOGICAL_CHANNEL,OPTICAL_CHANNEL,} +openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping : logical-channel : leafref : /oc-opt-term:terminal-device/oc-opt-term:logical-channels/oc-opt-term:channel/oc-opt-term:index +note bottom of openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping +Must (logical-channel): +../assignment-type = 'LOGICAL_CHANNEL' + +end note +openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping : optical-channel : leafref : /oc-platform:components/oc-platform:component/oc-platform:name +note bottom of openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping +Must (optical-channel): +../assignment-type = 'OPTICAL_CHANNEL' + +end note +openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping : allocation : decimal64 {Gbps} +openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping : tributary-slot-index : int32 +openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping : mapping : identityref {oc-opt-types:FRAME_MAPPING_PROTOCOL} +class "terminal-logical-chan-assignment-state" as openconfig_terminal_device_I_terminal_logical_chan_assignment_state_grouping <<(G,Lime) grouping>> +class "terminal-logical-chan-assignment-top" as openconfig_terminal_device_I_terminal_logical_chan_assignment_top_grouping <<(G,Lime) grouping>> +class "logical-channel-assignments" as openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments <> +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_grouping *-- "1" openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments +class "assignment" as openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment << (L, #FF7700) list>> +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments *-- "0..N" openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment : +index : leafref : ../config/index {key} +class "config" as openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_config <> +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment *-- "1" openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_config +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_config : terminal-logical-chan-assignment-config {uses} +class "state" as openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_state <> +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment *-- "1" openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_state +note bottom of openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_state +Config = false +end note +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_state : terminal-logical-chan-assignment-config {uses} +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_state : terminal-logical-chan-assignment-state {uses} +class "terminal-logical-channel-ingress-config" as openconfig_terminal_device_I_terminal_logical_channel_ingress_config_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_logical_channel_ingress_config_grouping : transceiver : leafref : /oc-platform:components/oc-platform:component/oc-platform:name +openconfig_terminal_device_I_terminal_logical_channel_ingress_config_grouping : physical-channel []: leafref : /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel/oc-transceiver:index +class "terminal-logical-channel-ingress-state" as openconfig_terminal_device_I_terminal_logical_channel_ingress_state_grouping <<(G,Lime) grouping>> +class "terminal-logical-channel-ingress-top" as openconfig_terminal_device_I_terminal_logical_channel_ingress_top_grouping <<(G,Lime) grouping>> +class "ingress" as openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress <> +openconfig_terminal_device_I_terminal_logical_channel_ingress_top_grouping *-- "1" openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress +class "config" as openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_config <> +openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress *-- "1" openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_config +openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_config : terminal-logical-channel-ingress-config {uses} +class "state" as openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_state <> +openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress *-- "1" openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_state +note bottom of openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_state +Config = false +end note +openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_state : terminal-logical-channel-ingress-config {uses} +openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_state : terminal-logical-channel-ingress-state {uses} +class "terminal-logical-channel-config" as openconfig_terminal_device_I_terminal_logical_channel_config_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_logical_channel_config_grouping : +index : uint32 {key} +openconfig_terminal_device_I_terminal_logical_channel_config_grouping : description : string +openconfig_terminal_device_I_terminal_logical_channel_config_grouping : admin-state : oc-opt-types:admin-state-type +openconfig_terminal_device_I_terminal_logical_channel_config_grouping : rate-class : identityref {oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE} +openconfig_terminal_device_I_terminal_logical_channel_config_grouping : trib-protocol : identityref {oc-opt-types:TRIBUTARY_PROTOCOL_TYPE} +openconfig_terminal_device_I_terminal_logical_channel_config_grouping : logical-channel-type : identityref {oc-opt-types:LOGICAL_ELEMENT_PROTOCOL_TYPE} +openconfig_terminal_device_I_terminal_logical_channel_config_grouping : loopback-mode : oc-opt-types:loopback-mode-type +openconfig_terminal_device_I_terminal_logical_channel_config_grouping : test-signal : boolean +class "terminal-logical-channel-state" as openconfig_terminal_device_I_terminal_logical_channel_state_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_logical_channel_state_grouping : link-state : enumeration : {UP,DOWN,TESTING,} +class "terminal-logical-channel-top" as openconfig_terminal_device_I_terminal_logical_channel_top_grouping <<(G,Lime) grouping>> +class "logical-channels" as openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels <> +openconfig_terminal_device_I_terminal_logical_channel_top_grouping *-- "1" openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels +class "channel" as openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel << (L, #FF7700) list>> +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels *-- "0..N" openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel : +index : leafref : ../config/index {key} +class "config" as openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_config <> +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel *-- "1" openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_config +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_config : terminal-logical-channel-config {uses} +class "state" as openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_state <> +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel *-- "1" openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_state +note bottom of openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_state +Config = false +end note +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_state : terminal-logical-channel-config {uses} +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_state : terminal-logical-channel-state {uses} +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel : terminal-otn-protocol-top {uses} +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel : terminal-ethernet-protocol-top {uses} +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel : terminal-logical-channel-ingress-top {uses} +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel : terminal-logical-chan-assignment-top {uses} +class "terminal-optical-channel-config" as openconfig_terminal_device_I_terminal_optical_channel_config_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_optical_channel_config_grouping : frequency : oc-opt-types:frequency-type +openconfig_terminal_device_I_terminal_optical_channel_config_grouping : target-output-power : decimal64 {dBm} +openconfig_terminal_device_I_terminal_optical_channel_config_grouping : operational-mode : uint16 +openconfig_terminal_device_I_terminal_optical_channel_config_grouping : line-port : leafref : /oc-platform:components/oc-platform:component/oc-platform:name +class "terminal-optical-channel-state" as openconfig_terminal_device_I_terminal_optical_channel_state_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_optical_channel_state_grouping : group-id : uint32 +openconfig_terminal_device_I_terminal_optical_channel_state_grouping : oc-transceiver:optical-power-state {uses} +class "chromatic-dispersion" as openconfig_terminal_device_I_terminal_optical_channel_state_I_chromatic_dispersion <> +openconfig_terminal_device_I_terminal_optical_channel_state_grouping *-- "1" openconfig_terminal_device_I_terminal_optical_channel_state_I_chromatic_dispersion +openconfig_terminal_device_I_terminal_optical_channel_state_I_chromatic_dispersion : oc-opt-types:avg-min-max-instant-stats-precision2-ps-nm {uses} +class "polarization-mode-dispersion" as openconfig_terminal_device_I_terminal_optical_channel_state_I_polarization_mode_dispersion <> +openconfig_terminal_device_I_terminal_optical_channel_state_grouping *-- "1" openconfig_terminal_device_I_terminal_optical_channel_state_I_polarization_mode_dispersion +openconfig_terminal_device_I_terminal_optical_channel_state_I_polarization_mode_dispersion : oc-opt-types:avg-min-max-instant-stats-precision2-ps {uses} +class "second-order-polarization-mode-dispersion" as openconfig_terminal_device_I_terminal_optical_channel_state_I_second_order_polarization_mode_dispersion <> +openconfig_terminal_device_I_terminal_optical_channel_state_grouping *-- "1" openconfig_terminal_device_I_terminal_optical_channel_state_I_second_order_polarization_mode_dispersion +openconfig_terminal_device_I_terminal_optical_channel_state_I_second_order_polarization_mode_dispersion : oc-opt-types:avg-min-max-instant-stats-precision2-ps2 {uses} +class "polarization-dependent-loss" as openconfig_terminal_device_I_terminal_optical_channel_state_I_polarization_dependent_loss <> +openconfig_terminal_device_I_terminal_optical_channel_state_grouping *-- "1" openconfig_terminal_device_I_terminal_optical_channel_state_I_polarization_dependent_loss +openconfig_terminal_device_I_terminal_optical_channel_state_I_polarization_dependent_loss : oc-types:avg-min-max-instant-stats-precision2-dB {uses} +class "terminal-optical-channel-top" as openconfig_terminal_device_I_terminal_optical_channel_top_grouping <<(G,Lime) grouping>> +class "optical-channel" as openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel <> +openconfig_terminal_device_I_terminal_optical_channel_top_grouping *-- "1" openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel +class "config" as openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_config <> +openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel *-- "1" openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_config +openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_config : terminal-optical-channel-config {uses} +class "state" as openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_state <> +openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel *-- "1" openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_state +note bottom of openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_state +Config = false +end note +openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_state : terminal-optical-channel-config {uses} +openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_state : terminal-optical-channel-state {uses} +class "terminal-operational-mode-config" as openconfig_terminal_device_I_terminal_operational_mode_config_grouping <<(G,Lime) grouping>> +class "terminal-operational-mode-state" as openconfig_terminal_device_I_terminal_operational_mode_state_grouping <<(G,Lime) grouping>> +openconfig_terminal_device_I_terminal_operational_mode_state_grouping : mode-id : uint16 +openconfig_terminal_device_I_terminal_operational_mode_state_grouping : description : string +openconfig_terminal_device_I_terminal_operational_mode_state_grouping : vendor-id : string +class "terminal-operational-mode-top" as openconfig_terminal_device_I_terminal_operational_mode_top_grouping <<(G,Lime) grouping>> +class "operational-modes" as openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes <> +openconfig_terminal_device_I_terminal_operational_mode_top_grouping *-- "1" openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes +class "mode" as openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode << (L, #FF7700) list>> +openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes *-- "0..N" openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode +note bottom of openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode +Config = false +end note +openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode : +mode-id : leafref : ../state/mode-id {key} +class "config" as openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_config <> +openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode *-- "1" openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_config +openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_config : terminal-operational-mode-config {uses} +class "state" as openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_state <> +openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode *-- "1" openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_state +note bottom of openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_state +Config = false +end note +openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_state : terminal-operational-mode-config {uses} +openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_state : terminal-operational-mode-state {uses} +class "terminal-device-config" as openconfig_terminal_device_I_terminal_device_config_grouping <<(G,Lime) grouping>> +class "terminal-device-state" as openconfig_terminal_device_I_terminal_device_state_grouping <<(G,Lime) grouping>> +class "terminal-device-top" as openconfig_terminal_device_I_terminal_device_top_grouping <<(G,Lime) grouping>> +class "terminal-device" as openconfig_terminal_device_I_terminal_device_top_I_terminal_device <> +openconfig_terminal_device_I_terminal_device_top_grouping *-- "1" openconfig_terminal_device_I_terminal_device_top_I_terminal_device +class "config" as openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_config <> +openconfig_terminal_device_I_terminal_device_top_I_terminal_device *-- "1" openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_config +openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_config : terminal-device-config {uses} +class "state" as openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_state <> +openconfig_terminal_device_I_terminal_device_top_I_terminal_device *-- "1" openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_state +note bottom of openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_state +Config = false +end note +openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_state : terminal-device-config {uses} +openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_state : terminal-device-state {uses} +openconfig_terminal_device_I_terminal_device_top_I_terminal_device : terminal-logical-channel-top {uses} +openconfig_terminal_device_I_terminal_device_top_I_terminal_device : terminal-operational-mode-top {uses} +class "/oc-platform:components/oc-platform:component" as oc_platform_components_oc_platform_component << (A,CadetBlue) augment>> +openconfig_terminal_device *-- oc_platform_components_oc_platform_component +note bottom of oc_platform_components_oc_platform_component +When: /oc-platform:components/oc-platform:component/oc-platform:state/oc-platform:type = 'OPTICAL_CHANNEL' +end note +oc_platform_components_oc_platform_component : terminal-optical-channel-top {uses} +openconfig_terminal_device_I_terminal_otn_protocol_config_grouping-->oc_opt_types_TRIBUTARY_SLOT_GRANULARITY: tributary-slot-granularity +openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping-->oc_opt_types_FRAME_MAPPING_PROTOCOL: mapping +openconfig_terminal_device_I_terminal_logical_channel_config_grouping-->oc_opt_types_TRIBUTARY_RATE_CLASS_TYPE: rate-class +openconfig_terminal_device_I_terminal_logical_channel_config_grouping-->oc_opt_types_TRIBUTARY_PROTOCOL_TYPE: trib-protocol +openconfig_terminal_device_I_terminal_logical_channel_config_grouping-->oc_opt_types_LOGICAL_ELEMENT_PROTOCOL_TYPE: logical-channel-type +} + +openconfig_terminal_device_I_terminal_ethernet_protocol_state_grouping --> openconfig_terminal_device_I_terminal_ethernet_protocol_state_counters_grouping : uses +openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_config --> openconfig_terminal_device_I_terminal_ethernet_protocol_config_grouping : uses +openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_state --> openconfig_terminal_device_I_terminal_ethernet_protocol_config_grouping : uses +openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet_I_state --> openconfig_terminal_device_I_terminal_ethernet_protocol_state_grouping : uses +openconfig_terminal_device_I_terminal_ethernet_protocol_top_I_ethernet --> openconfig_terminal_device_I_lldp_logical_channel_top_grouping : uses +openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp_I_config --> openconfig_terminal_device_I_lldp_logical_channel_config_grouping : uses +openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp_I_state --> openconfig_terminal_device_I_lldp_logical_channel_config_grouping : uses +openconfig_terminal_device_I_lldp_logical_channel_top_I_lldp --> openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_grouping : uses +openconfig_terminal_device_I_lldp_logical_channel_neighbor_top_I_neighbors_I_neighbor_I_config --> openconfig_terminal_device_I_lldp_logical_channel_neighbor_config_grouping : uses +openconfig_terminal_device_I_terminal_otn_protocol_state_grouping --> openconfig_terminal_device_I_terminal_otn_protocol_counter_stats_grouping : uses +openconfig_terminal_device_I_terminal_otn_protocol_state_grouping --> openconfig_terminal_device_I_terminal_otn_protocol_multi_stats_grouping : uses +openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_config --> openconfig_terminal_device_I_terminal_otn_protocol_config_grouping : uses +openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_state --> openconfig_terminal_device_I_terminal_otn_protocol_config_grouping : uses +openconfig_terminal_device_I_terminal_otn_protocol_top_I_otn_I_state --> openconfig_terminal_device_I_terminal_otn_protocol_state_grouping : uses +openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_config --> openconfig_terminal_device_I_terminal_client_port_assignment_config_grouping : uses +openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_state --> openconfig_terminal_device_I_terminal_client_port_assignment_config_grouping : uses +openconfig_terminal_device_I_terminal_client_port_assignment_top_I_logical_channel_assignments_I_assignment_I_state --> openconfig_terminal_device_I_terminal_client_port_assignment_state_grouping : uses +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_config --> openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping : uses +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_state --> openconfig_terminal_device_I_terminal_logical_chan_assignment_config_grouping : uses +openconfig_terminal_device_I_terminal_logical_chan_assignment_top_I_logical_channel_assignments_I_assignment_I_state --> openconfig_terminal_device_I_terminal_logical_chan_assignment_state_grouping : uses +openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_config --> openconfig_terminal_device_I_terminal_logical_channel_ingress_config_grouping : uses +openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_state --> openconfig_terminal_device_I_terminal_logical_channel_ingress_config_grouping : uses +openconfig_terminal_device_I_terminal_logical_channel_ingress_top_I_ingress_I_state --> openconfig_terminal_device_I_terminal_logical_channel_ingress_state_grouping : uses +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_config --> openconfig_terminal_device_I_terminal_logical_channel_config_grouping : uses +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_state --> openconfig_terminal_device_I_terminal_logical_channel_config_grouping : uses +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel_I_state --> openconfig_terminal_device_I_terminal_logical_channel_state_grouping : uses +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel --> openconfig_terminal_device_I_terminal_otn_protocol_top_grouping : uses +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel --> openconfig_terminal_device_I_terminal_ethernet_protocol_top_grouping : uses +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel --> openconfig_terminal_device_I_terminal_logical_channel_ingress_top_grouping : uses +openconfig_terminal_device_I_terminal_logical_channel_top_I_logical_channels_I_channel --> openconfig_terminal_device_I_terminal_logical_chan_assignment_top_grouping : uses +openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_config --> openconfig_terminal_device_I_terminal_optical_channel_config_grouping : uses +openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_state --> openconfig_terminal_device_I_terminal_optical_channel_config_grouping : uses +openconfig_terminal_device_I_terminal_optical_channel_top_I_optical_channel_I_state --> openconfig_terminal_device_I_terminal_optical_channel_state_grouping : uses +openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_config --> openconfig_terminal_device_I_terminal_operational_mode_config_grouping : uses +openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_state --> openconfig_terminal_device_I_terminal_operational_mode_config_grouping : uses +openconfig_terminal_device_I_terminal_operational_mode_top_I_operational_modes_I_mode_I_state --> openconfig_terminal_device_I_terminal_operational_mode_state_grouping : uses +openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_config --> openconfig_terminal_device_I_terminal_device_config_grouping : uses +openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_state --> openconfig_terminal_device_I_terminal_device_config_grouping : uses +openconfig_terminal_device_I_terminal_device_top_I_terminal_device_I_state --> openconfig_terminal_device_I_terminal_device_state_grouping : uses +openconfig_terminal_device_I_terminal_device_top_I_terminal_device --> openconfig_terminal_device_I_terminal_logical_channel_top_grouping : uses +openconfig_terminal_device_I_terminal_device_top_I_terminal_device --> openconfig_terminal_device_I_terminal_operational_mode_top_grouping : uses +oc_platform_components_oc_platform_component --> openconfig_terminal_device_I_terminal_optical_channel_top_grouping : uses +center footer + UML Generated : 2020-04-19 01:36 + endfooter +@enduml diff --git a/hackfest/openconfig/openconfig-terminal-device.yang b/hackfest/openconfig/openconfig-terminal-device.yang new file mode 100644 index 0000000000000000000000000000000000000000..6cd0160c6c6f7cd3e9d7bfaba33e020c3451984e --- /dev/null +++ b/hackfest/openconfig/openconfig-terminal-device.yang @@ -0,0 +1,1489 @@ +module openconfig-terminal-device { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/terminal-device"; + + prefix "oc-opt-term"; + + import openconfig-types { prefix oc-types; } + import openconfig-transport-types { prefix oc-opt-types; } + import openconfig-if-ethernet { prefix oc-eth; } + import openconfig-platform { prefix oc-platform; } + import openconfig-platform-transceiver { prefix oc-transceiver; } + import openconfig-lldp { prefix oc-lldp; } + import openconfig-extensions { prefix oc-ext; } + import ietf-yang-types { prefix yang; } + import openconfig-yang-types { prefix oc-yang; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module describes a terminal optics device model for + managing the terminal systems (client and line side) in a + DWDM transport network. + + Elements of the model: + + physical port: corresponds to a physical, pluggable client + port on the terminal device. Examples includes 10G, 40G, 100G + (e.g., 10x10G, 4x25G or 1x100G) and 400G/1T in the future. + Physical client ports will have associated operational state or + PMs. + + physical channel: a physical lane or channel in the + physical client port. Each physical client port has 1 or more + channels. An example is 100GBASE-LR4 client physical port having + 4x25G channels. Channels have their own optical PMs and can be + monitored independently within a client physical port (e.g., + channel power). Physical client channels are defined in the + model as part of a physical client port, and are modeled + primarily for reading their PMs. + + logical channel: a logical grouping of logical grooming elements + that may be assigned to subsequent grooming stages for + multiplexing / de-multiplexing, or to an optical channel for + line side transmission. The logical channels can represent, for + example, an ODU/OTU logical packing of the client + data onto the line side. Tributaries are similarly logical + groupings of demand that can be represented in this structure and + assigned to an optical channel. Note that different types of + logical channels may be present, each with their corresponding + PMs. + + optical channel: corresponds to an optical carrier and is + assigned a wavelength/frequency. Optical channels have PMs + such as power, BER, and operational mode. + + Directionality: + + To maintain simplicity in the model, the configuration is + described from client-to-line direction. The assumption is that + equivalent reverse configuration is implicit, resulting in + the same line-to-client configuration. + + Physical layout: + + The model does not assume a particular physical layout of client + and line ports on the terminal device (e.g., such as number of + ports per linecard, separate linecards for client and line ports, + etc.)."; + + oc-ext:openconfig-version "1.7.2"; + + revision "2019-11-28" { + description + "Additional xpath fixes in when statement"; + reference "1.7.2"; + } + + revision "2019-10-12" { + description + "Fix when statement paths"; + reference "1.7.1"; + } + + revision "2019-08-08" { + description + "Add ALS config to logical-channel/ethernet/config and remove + legacy interfaces augment for this config. Client FEC was + previosuly migrated to the components model and should not + be here anymore."; + reference "1.7.0"; + } + + revision "2019-07-26" { + description + "Add support for LLDP natively on logical-channels."; + reference "1.6.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "1.5.1"; + } + + revision "2018-10-23" { + description + "Adds support of logical-channel tributary slot allocation to + logical-channel-assignments with different channel speeds. + Enables logical channel mapping procedure specification."; + reference "1.5.0"; + } + + revision "2018-08-28" { + description + "Adds terminal device related Ethernet counters"; + reference "1.4.0"; + } + + revision "2018-07-30" { + description + "Adds lldp snooping config leaf and augmented it to oc-lldp"; + reference "1.3.0"; + } + + revision "2018-07-26" { + description + "Adds OTN protocol counter stats of errored-blocks and + fec-uncorrectable-blocks, adds ethernet-config-ext grouping + and uses it to augment oc-eth"; + reference "1.2.0"; + } + + revision "2018-07-17" { + description + "Adds testing enum to link-state"; + reference "1.1.0"; + } + + revision "2017-07-08" { + description + "Adds test-signal"; + reference "1.0.0"; + } + + revision "2016-12-22" { + description + "Fixes and additions to terminal optics model"; + reference "0.4.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping terminal-input-optical-power { + description + "Reusable leaves related to input optical power"; + + leaf input-power { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "The input optical power of this port in units of 0.01dBm. + If the port is an aggregate of multiple physical channels, + this attribute is the total power or sum of all channels."; + } + } + + grouping terminal-ethernet-protocol-config { + description + "Configuration data for logical channels with Ethernet + framing"; + + leaf client-als { + type enumeration { + enum NONE { + description + "The client port will do nothing when a failure is + detected on the line port or the remote client port"; + } + enum LASER_SHUTDOWN { + description + "The client port will shut down the laser to notify the + subtending Ethernet equipment of the failure detected on + the line port or the remote client port."; + } + enum ETHERNET { + description + "The client port will propagate the local fault or remote + fault signal to the subtending Ethernet equipment."; + } + } + default ETHERNET; + description + "Sets the client port behavior that defines if the actions + of automatic laser shutdown (als), ethernet fault + propagation, or nothing will be done upon the detection + of a failure on the line port or the upstream remote + client port."; + } + + leaf als-delay { + type uint32; + units milliseconds; + default 0; + description + "The timer to delay the client-als actions on the client + port when a local or remote fault is detected on the line + port. The delay will only be valid when the client-als is + set to LASER_SHUTDOWN"; + } + } + + grouping terminal-ethernet-protocol-state { + description + "Ethernet-specific counters when logical channel + is using Ethernet protocol framing, e.g., 10GE, 100GE"; + + uses oc-eth:ethernet-interface-state-counters; + uses terminal-ethernet-protocol-state-counters; + } + + grouping terminal-ethernet-protocol-state-counters { + description + "Ethernet-specific counters for terminal devices when + logical channel is using Ethernet protocol framing, + e.g., 10GE, 100GE"; + + // ingress counters + + leaf in-pcs-bip-errors { + type oc-yang:counter64; + description + "The number of received bit interleaved parity (BIP) errors + at the physical coding sublayer (PCS). If the interface + consists of multiple lanes, this will be the sum of all + errors on the lane"; + } + + leaf in-pcs-errored-seconds { + type oc-yang:counter64; + description + "The number of seconds that physical coding sublayer (PCS) + errors have crossed a sytem defined threshold indicating the + link is erroring"; + } + + leaf in-pcs-severely-errored-seconds { + type oc-yang:counter64; + description + "The number of seconds that physical coding sublayer (PCS) + errors have crossed a system defined threshold indicating the + link is severely erroring"; + } + + leaf in-pcs-unavailable-seconds { + type oc-yang:counter64; + description + "The number of seconds that physical coding sublayer (PCS) + errors have crossed a system defined threshold indicating the + link is unavailable"; + } + + // egress counters + + leaf out-pcs-bip-errors { + type oc-yang:counter64; + description + "The number of transmitted bit interleaved parity (BIP) errors + at the physical coding sublayer (PCS). If the interface + consists of multiple lanes, this will be the sum of all + errors on the lane"; + } + + leaf out-crc-errors { + type oc-yang:counter64; + description + "Number of FCS/CRC error check failures sent on the interface"; + } + + leaf out-block-errors { + type oc-yang:counter64; + description + "The number of transmitted errored blocks. Error detection + codes are capable of detecting whether one or more errors have + occurred in a given sequence of bits – the block. It is + normally not possible to determine the exact number of errored + bits within the block"; + } + } + + grouping terminal-ethernet-protocol-top { + description + "Top-level grouping for data related to Ethernet protocol + framing on logical channels"; + + container ethernet { + description + "Top level container for data related to Ethernet framing + for the logical channel"; + + container config { + description + "Configuration data for Ethernet protocol framing on + logical channels"; + + uses terminal-ethernet-protocol-config; + } + + container state { + config false; + description + "Operational state data for Ethernet protocol framing + on logical channels"; + + uses terminal-ethernet-protocol-config; + uses terminal-ethernet-protocol-state; + } + + uses lldp-logical-channel-top; + } + } + + grouping lldp-logical-channel-top { + description + "Top-level grouping for LLDP data for a logical channel"; + + container lldp { + description + "LLDP data for logical channels"; + + container config { + description + "LLDP configuration data for logical channels"; + + uses lldp-logical-channel-config; + } + + container state { + config false; + description + "LLDP operational state data for logical channels"; + + uses lldp-logical-channel-config; + uses oc-lldp:lldp-interface-state; + } + + uses lldp-logical-channel-neighbor-top; + } + } + + grouping lldp-logical-channel-config { + description + "Configuration data for LLDP for logical-channels"; + + leaf enabled { + type boolean; + default "false"; + description + "Enable or disable the LLDP protocol on the logical channel."; + } + + leaf snooping { + type boolean; + default "false"; + description + "If true, LLDP PDUs are only received and processed on + the logical-channel, but are not originated by the local + agent. The PDUs are not dropped by the logical channel after + processing, but relayed to the downstream link layer + neighbors. The snooping mode is valid only when LLDP is + enabled on the logical channel. The snooping mode is useful + when a logical channel does not want its link layer neighbors + to discover itself since, for example, it is a lower-layer + logical channel."; + } + } + + grouping lldp-logical-channel-neighbor-top { + description + "Top-level grouping for the LLDP neighbor list"; + + container neighbors { + config false; + description + "Enclosing container for list of LLDP neighbors on + a logical channel"; + + list neighbor { + key "id"; + description + "List of LLDP neighbors. If the implementation only + supports one neighbor, this would always be a list with + one item. If the device and neighbor supported multiple + neighbors, which can be achieved via LLDP forwarding, then + this would be supported"; + reference + "IEEE Std 802.1AB-2016, section 7.1, Destination address"; + + leaf id { + type leafref { + path "../state/id"; + } + description + "System generated identifier for the neighbor on + the logical channel."; + } + + container config { + description + "Configuration data "; + + uses lldp-logical-channel-neighbor-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses oc-lldp:lldp-system-info-config; + uses oc-lldp:lldp-system-info-state; + uses oc-lldp:lldp-neighbor-config; + uses oc-lldp:lldp-neighbor-state; + } + + uses oc-lldp:lldp-custom-tlv-top; + } + } + } + + grouping lldp-logical-channel-neighbor-config { + description + "Configuration data for LLDP neighbors"; + } + + grouping terminal-otn-protocol-config { + description + "OTU configuration when logical channel + framing is using an OTU protocol, e.g., OTU1, OTU3, etc."; + + leaf tti-msg-transmit { + type string; + description + "Trail trace identifier (TTI) message transmitted"; + } + + leaf tti-msg-expected { + type string; + description + "Trail trace identifier (TTI) message expected"; + } + + leaf tti-msg-auto { + type boolean; + description + "Trail trace identifier (TTI) transmit message automatically + created. If true, then setting a custom transmit message + would be invalid."; + } + + leaf tributary-slot-granularity { + type identityref { + base oc-opt-types:TRIBUTARY_SLOT_GRANULARITY; + } + description + "Granularity value of OPUk or OPUCn tributary slots for OTN + signal allocation. The currently defined values follow the + existing ITU-T G.709 standard, which can be extended as + needed in future."; + } + } + + grouping terminal-otn-protocol-counter-stats { + description + "Counter based statistics containers for logical channels + using OTN framing"; + + leaf errored-seconds { + type yang:counter64; + description + "The number of seconds that at least one errored blocks + occurs, at least one code violation occurs, loss of sync is + detected or loss of signal is detected"; + } + + leaf severely-errored-seconds { + type yang:counter64; + description + "The number of seconds that loss of frame is detected OR + the number of errored blocks, code violations, loss of sync + or loss of signal is detected exceeds a predefined + threshold"; + } + + leaf unavailable-seconds { + type yang:counter64; + description + "The number of seconds during which the link is unavailable"; + } + + leaf code-violations { + type yang:counter64; + description + "For ethernet or fiberchannel links, the number of 8b/10b + coding violations. For SONET/SDH, the number of BIP (bit + interleaved parity) errors"; + } + + leaf errored-blocks { + type yang:counter64; + description + "The number of errored blocks. Error detection codes are + capable to detect whether one or more errors have occurred + in a given sequence of bits – the block. It is normally not + possible to determine the exact number of errored bits within + the block."; + reference "ITU-T Rec. G.826"; + } + + leaf fec-uncorrectable-blocks { + type yang:counter64; + description + "The number of blocks that were uncorrectable by the FEC"; + } + + leaf fec-uncorrectable-words { + type yang:counter64; + description + "The number of words that were uncorrectable by the FEC"; + } + + leaf fec-corrected-bytes { + type yang:counter64; + description + "The number of bytes that were corrected by the FEC"; + } + + leaf fec-corrected-bits { + type yang:counter64; + description + "The number of bits that were corrected by the FEC"; + } + + leaf background-block-errors { + type yang:counter64; + description + "The number of background block errors"; + } + } + + grouping terminal-otn-protocol-multi-stats { + description + "Multi-value statistics containers for logical channels using + OTN framing (e.g., max, min, avg, instant)"; + + container pre-fec-ber { + description + "Bit error rate before forward error correction -- computed + value with 18 decimal precision. Note that decimal64 + supports values as small as i x 10^-18 where i is an + integer. Values smaller than this should be reported as 0 + to inidicate error free or near error free performance. + Values include the instantaneous, average, minimum, and + maximum statistics. If avg/min/max statistics are not + supported, the target is expected to just supply the + instant value"; + + uses oc-opt-types:avg-min-max-instant-stats-precision18-ber; + } + + container post-fec-ber { + description + "Bit error rate after forward error correction -- computed + value with 18 decimal precision. Note that decimal64 + supports values as small as i x 10^-18 where i is an + integer. Values smaller than this should be reported as 0 + to inidicate error free or near error free performance. + Values include the instantaneous, average, minimum, and + maximum statistics. If avg/min/max statistics are not + supported, the target is expected to just supply the + instant value"; + + uses oc-opt-types:avg-min-max-instant-stats-precision18-ber; + } + + container q-value { + description + "Quality value (factor) in dB of a channel with two + decimal precision. Values include the instantaneous, + average, minimum, and maximum statistics. If avg/min/max + statistics are not supported, the target is expected + to just supply the instant value"; + + uses oc-types:avg-min-max-instant-stats-precision2-dB; + } + + container esnr { + description + "Electrical signal to noise ratio. Baud rate + normalized signal to noise ratio based on + error vector magnitude in dB with two decimal + precision. Values include the instantaneous, average, + minimum, and maximum statistics. If avg/min/max + statistics are not supported, the target is expected + to just supply the instant value"; + + uses oc-types:avg-min-max-instant-stats-precision2-dB; + } + } + + grouping terminal-otn-protocol-state { + description + "OTU operational state when logical channel + framing is using an OTU protocol, e.g., OTU1, OTU3, etc."; + + + leaf tti-msg-recv { + type string; + description + "Trail trace identifier (TTI) message received"; + } + + leaf rdi-msg { + type string; + description + "Remote defect indication (RDI) message received"; + } + uses terminal-otn-protocol-counter-stats; + uses terminal-otn-protocol-multi-stats; + } + + grouping terminal-otn-protocol-top { + description + "Top-level grouping for data related to OTN protocol framing"; + + container otn { + description + "Top level container for OTU configuration when logical + channel framing is using an OTU protocol, e.g., OTU1, OTU3, + etc."; + + container config { + description + "Configuration data for OTN protocol framing"; + + uses terminal-otn-protocol-config; + } + + container state { + + config false; + + description + "Operational state data for OTN protocol PMs, statistics, + etc."; + + uses terminal-otn-protocol-config; + uses terminal-otn-protocol-state; + } + } + } + + grouping terminal-client-port-assignment-config { + description + "Configuration data for assigning physical client ports to + logical channels"; + + leaf index { + type uint32; + description + "Index of the client port assignment"; + } + + leaf description { + type string; + description + "Descriptive name for the client port-to-logical channel + mapping"; + } + + leaf logical-channel { + type leafref { + path "/oc-opt-term:terminal-device/oc-opt-term:logical-channels" + + "/oc-opt-term:channel/oc-opt-term:index"; + } + description + "Reference to the logical channel for this + assignment"; + } + + leaf allocation { + type decimal64 { + fraction-digits 3; + } + units Gbps; + description + "Allocation of the client physical port to the assigned + logical channel expressed in Gbps. In most cases, + the full client physical port rate is assigned to a single + logical channel."; + } + + } + + grouping terminal-client-port-assignment-state { + description + "Operational state data for assigning physical client ports + to logical channels"; + } + + grouping terminal-client-port-assignment-top { + description + "Top-level grouping for the assigment of client physical ports + to logical channels"; + //TODO: this grouping could be removed, instead reusing a common + //grouping for logical client assignment pointers + + container logical-channel-assignments { + description + "Enclosing container for client port to logical client + mappings"; + + list assignment { + key "index"; + description + "List of assignments to logical clients"; + + leaf index { + type leafref { + path "../config/index"; + } + description + "Reference to the index of this logical client + assignment"; + } + + container config { + description + "Configuration data for the logical client assignment"; + + uses terminal-client-port-assignment-config; + } + + container state { + + config false; + + description + "Operational state data for the logical client + assignment"; + + uses terminal-client-port-assignment-config; + uses terminal-client-port-assignment-state; + } + } + } + } + + + grouping terminal-logical-chan-assignment-config { + description + "Configuration data for assigning client logical channels + to line-side tributaries"; + + leaf index { + type uint32; + description + "Index of the current logical client channel to tributary + mapping"; + } + + leaf description { + type string; + description + "Name assigned to the logical client channel"; + } + + leaf assignment-type { + type enumeration { + enum LOGICAL_CHANNEL { + description + "Subsequent channel is a logical channel"; + } + enum OPTICAL_CHANNEL { + description + "Subsequent channel is a optical channel / carrier"; + } + } + description + "Each logical channel element may be assigned to subsequent + stages of logical elements to implement further grooming, or + can be assigned to a line-side optical channel for + transmission. Each assignment also has an associated + bandwidth allocation."; + } + + leaf logical-channel { + type leafref { + path "/oc-opt-term:terminal-device/" + + "oc-opt-term:logical-channels/oc-opt-term:channel/" + + "oc-opt-term:index"; + } + must "../assignment-type = 'LOGICAL_CHANNEL'" { + description + "The assignment-type must be set to LOGICAL_CHANNEL for + this leaf to be valid"; + } + description + "Reference to another stage of logical channel elements."; + } + + leaf optical-channel { + type leafref { + path "/oc-platform:components/oc-platform:component/" + + "oc-platform:name"; + } + must "../assignment-type = 'OPTICAL_CHANNEL'" { + description + "The assignment-type must be set to OPTICAL_CHANNEL for + this leaf to be valid"; + } + description + "Reference to the line-side optical channel that should + carry the current logical channel element. Use this + reference to exit the logical element stage."; + } + + leaf allocation { + type decimal64 { + fraction-digits 3; + } + units Gbps; + description + "Allocation of the logical client channel to the tributary + or sub-channel, expressed in Gbps. Please note that if the + assignment is to an OTN logical channel, the allocation must + be an integer multiplication to tributary-slot-granularity + of the OTN logical channel."; + } + + leaf tributary-slot-index { + type int32; + description + "Indicates the first tributary slot index allocated to the + client signal or logical channel in the assignment. Valid + only when the assignment is to an OTN logical channel."; + } + + leaf mapping { + type identityref { + base oc-opt-types:FRAME_MAPPING_PROTOCOL; + } + description + "Logical channel mapping procedure. Valid only when the + assignment is to an OTN logical channel."; + } + } + + grouping terminal-logical-chan-assignment-state { + description + "Operational state data for the assignment of logical client + channel to line-side tributary"; + } + + grouping terminal-logical-chan-assignment-top { + description + "Top-level grouping for the list of logical client channel-to- + tributary assignments"; + + container logical-channel-assignments { + //TODO: we need a commonly understood name for this logical + //channel structure + description + "Enclosing container for tributary assignments"; + + list assignment { + key "index"; + description + "Logical channel elements may be assigned directly to + optical channels for line-side transmission, or can be + further groomed into additional stages of logical channel + elements. The grooming can multiplex (i.e., split the + current element into multiple elements in the subsequent + stage) or de-multiplex (i.e., combine the current element + with other elements into the same element in the subsequent + stage) logical elements in each stage. + + Note that to support the ability to groom the logical + elements, the list of logical channel elements should be + populated with an entry for the logical elements at + each stage, starting with the initial assignment from the + respective client physical port. + + Each logical element assignment consists of a pointer to + an element in the next stage, or to an optical channel, + along with a bandwidth allocation for the corresponding + assignment (e.g., to split or combine signal)."; + + leaf index { + type leafref { + path "../config/index"; + } + description + "Reference to the index for the current tributary + assignment"; + } + + container config { + description + "Configuration data for tributary assignments"; + + uses terminal-logical-chan-assignment-config; + } + + container state { + + config false; + + description + "Operational state data for tributary assignments"; + + uses terminal-logical-chan-assignment-config; + uses terminal-logical-chan-assignment-state; + } + } + } + } + + grouping terminal-logical-channel-ingress-config { + description + "Configuration data for ingress signal to logical channel"; + + leaf transceiver { + type leafref { + path "/oc-platform:components/oc-platform:component/" + + "oc-platform:name"; + } + description + "Reference to the transceiver carrying the input signal + for the logical channel. If specific physical channels + are mapped to the logical channel (as opposed to all + physical channels carried by the transceiver), they can be + specified in the list of physical channel references."; + } + + leaf-list physical-channel { + type leafref { + path "/oc-platform:components/oc-platform:component/" + + "oc-transceiver:transceiver/" + + "oc-transceiver:physical-channels/" + + "oc-transceiver:channel/oc-transceiver:index"; + } + description + "This list should be populated with references + to the client physical channels that feed this logical + channel from the transceiver specified in the 'transceiver' + leaf, which must be specified. If this leaf-list is empty, + all physical channels in the transceiver are assumed to be + mapped to the logical channel."; + } + } + + grouping terminal-logical-channel-ingress-state { + description + "Operational state data for ingress signal to logical channel"; + } + + grouping terminal-logical-channel-ingress-top { + description + "Top-level grouping for ingress signal to logical channel"; + + container ingress { + description + "Top-level container for specifying references to the + source of signal for the logical channel, either a + transceiver or individual physical channels"; + + container config { + description + "Configuration data for the signal source for the + logical channel"; + + uses terminal-logical-channel-ingress-config; + } + + container state { + + config false; + + description + "Operational state data for the signal source for the + logical channel"; + + uses terminal-logical-channel-ingress-config; + uses terminal-logical-channel-ingress-state; + } + } + } + + grouping terminal-logical-channel-config { + description + "Configuration data for logical channels"; + + leaf index { + type uint32; + description + "Index of the current logical channel"; + } + + leaf description { + type string; + description + "Description of the logical channel"; + } + + leaf admin-state { + type oc-opt-types:admin-state-type; + description + "Sets the admin state of the logical channel"; + } + + leaf rate-class { + type identityref { + base oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE; + } + description + "Rounded bit rate of the tributary signal. Exact bit rate + will be refined by protocol selection."; + } + + leaf trib-protocol { + type identityref { + base oc-opt-types:TRIBUTARY_PROTOCOL_TYPE; + } + description + "Protocol framing of the tributary signal. If this + LogicalChannel is directly connected to a Client-Port or + Optical-Channel, this is the protocol of the associated port. + If the LogicalChannel is connected to other LogicalChannels, + the TributaryProtocol of the LogicalChannels will define a + specific mapping/demapping or multiplexing/demultiplexing + function. + + Not all protocols are valid, depending on the value + of trib-rate-class. The expectation is that the NMS + will validate that a correct combination of rate class + and protocol are specfied. Basic combinations are: + + rate class: 1G + protocols: 1GE + + rate class: 2.5G + protocols: OC48, STM16 + + rate class: 10G + protocols: 10GE LAN, 10GE WAN, OC192, STM64, OTU2, OTU2e, + OTU1e, ODU2, ODU2e, ODU1e + + rate class: 40G + protocols: 40GE, OC768, STM256, OTU3, ODU3 + + rate class: 100G + protocols: 100GE, 100G MLG, OTU4, OTUCn, ODU4"; + } + + leaf logical-channel-type { + type identityref { + base oc-opt-types:LOGICAL_ELEMENT_PROTOCOL_TYPE; + } + description + "The type / stage of the logical element determines the + configuration and operational state parameters (PMs) + available for the logical element"; + } + + leaf loopback-mode { + type oc-opt-types:loopback-mode-type; + description + "Sets the loopback type on the logical channel. Setting the + mode to something besides NONE activates the loopback in + the specified mode."; + } + + leaf test-signal { + type boolean; + description + "When enabled the logical channel's DSP will generate a pseudo + randmon bit stream (PRBS) which can be used during testing."; + } + } + + + grouping terminal-logical-channel-state { + description + "Operational state data for logical client channels"; + + leaf link-state { + type enumeration { + enum UP { + description + "Logical channel is operationally up"; + } + enum DOWN { + description + "Logical channel is operationally down"; + } + enum TESTING { + description + "Logical channel is under test as a result of + enabling test-signal"; + } + } + description + "Link-state of the Ethernet protocol on the logical channel, + SONET / SDH framed signal, etc."; + } + + } + + grouping terminal-logical-channel-top { + description + "Top-level grouping for logical channels"; + + container logical-channels { + description + "Enclosing container the list of logical channels"; + + list channel { + key "index"; + description + "List of logical channels"; + //TODO: naming for this list of logical elements should be + //revisited. + + leaf index { + type leafref { + path "../config/index"; + } + description + "Reference to the index of the logical channel"; + } + + container config { + description + "Configuration data for logical channels"; + + uses terminal-logical-channel-config; + + } + + container state { + + config false; + + description + "Operational state data for logical channels"; + + uses terminal-logical-channel-config; + uses terminal-logical-channel-state; + } + + uses terminal-otn-protocol-top { + when "./config/logical-channel-type = 'PROT_OTN'" { + description + "Include the OTN protocol data only when the + channel is using OTN framing."; + } + } + uses terminal-ethernet-protocol-top { + when "./config/logical-channel-type = 'PROT_ETHERNET'" { + description + "Include the Ethernet protocol statistics only when the + protocol used by the link is Ethernet."; + } + } + uses terminal-logical-channel-ingress-top; + uses terminal-logical-chan-assignment-top; + } + } + } + + + grouping terminal-optical-channel-config { + description + "Configuration data for describing optical channels"; + + leaf frequency { + type oc-opt-types:frequency-type; + description + "Frequency of the optical channel, expressed in MHz"; + } + + leaf target-output-power { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "Target output optical power level of the optical channel, + expressed in increments of 0.01 dBm (decibel-milliwats)"; + } + + leaf operational-mode { + type uint16; + description + "Vendor-specific mode identifier -- sets the operational + mode for the channel. The specified operational mode must + exist in the list of supported operational modes supplied + by the device"; + // + // Ideally, this leaf should be a leafref to the supported + // operational modes, but YANG 1.0 does not allow a r/w + // leaf to be a leafref to a r/o leaf. + } + + + leaf line-port { + type leafref { + path "/oc-platform:components/oc-platform:component/" + + "oc-platform:name"; + } + description + "Reference to the line-side physical port that carries + this optical channel. The target port should be + a component in the physical inventory data model."; + } + } + + grouping terminal-optical-channel-state { + description + "Operational state data for optical channels"; + + leaf group-id { + type uint32; + description + "If the device places constraints on which optical + channels must be managed together (e.g., transmitted on the + same line port), it can indicate that by setting the group-id + to the same value across related optical channels."; + } + + uses oc-transceiver:optical-power-state; + + container chromatic-dispersion { + description + "Chromatic Dispersion of an optical channel in + picoseconds / nanometer (ps/nm) as reported by receiver + with two decimal precision. Values include the instantaneous, + average, minimum, and maximum statistics. If avg/min/max + statistics are not supported, the target is expected to just + supply the instant value"; + + uses oc-opt-types:avg-min-max-instant-stats-precision2-ps-nm; + } + + container polarization-mode-dispersion { + description + "Polarization Mode Dispersion of an optical channel + in picosends (ps) as reported by receiver with two decimal + precision. Values include the instantaneous, average, + minimum, and maximum statistics. If avg/min/max statistics + are not supported, the target is expected to just supply the + instant value"; + + uses oc-opt-types:avg-min-max-instant-stats-precision2-ps; + } + + container second-order-polarization-mode-dispersion { + description + "Second Order Polarization Mode Dispersion of an optical + channel in picoseconds squared (ps^2) as reported by + receiver with two decimal precision. Values include the + instantaneous, average, minimum, and maximum statistics. + If avg/min/max statistics are not supported, the target + is expected to just supply the instant value"; + + uses oc-opt-types:avg-min-max-instant-stats-precision2-ps2; + } + + container polarization-dependent-loss { + description + "Polarization Dependent Loss of an optical channel + in dB as reported by receiver with two decimal precision. + Values include the instantaneous, average, minimum, and + maximum statistics. If avg/min/max statistics are not + supported, the target is expected to just supply the + instant value"; + + uses oc-types:avg-min-max-instant-stats-precision2-dB; + } + } + + grouping terminal-optical-channel-top { + description + "Top-level grouping for optical channel data"; + + container optical-channel { + description + "Enclosing container for the list of optical channels"; + + container config { + description + "Configuration data for optical channels"; + + uses terminal-optical-channel-config; + } + + container state { + + config false; + + description + "Operational state data for optical channels"; + + uses terminal-optical-channel-config; + uses terminal-optical-channel-state; + } + } + } + + grouping terminal-operational-mode-config { + description + "Configuration data for vendor-supported operational modes"; + } + + grouping terminal-operational-mode-state { + description + "Operational state data for vendor-supported operational + modes"; + + leaf mode-id { + type uint16; + description + "Two-octet encoding of the vendor-defined operational + mode"; + } + + leaf description { + type string; + description + "Vendor-supplied textual description of the characteristics + of this operational mode to enable operators to select the + appropriate mode for the application."; + } + + //TODO: examples of the kind of info that would be useful to + //report in the operational mode: + //Symbol rate (32G, 40G, 43G, 64G, etc.) + //Modulation (QPSK, 8-QAM, 16-QAM, etc.) + //Differential encoding (on, off/pilot symbol, etc) + //State of polarization tracking mode (default, med. + //high-speed, etc.) + //Pulse shaping (RRC, RC, roll-off factor) + //FEC mode (SD, HD, % OH) + + leaf vendor-id { + type string; + description + "Identifier to represent the vendor / supplier of the + platform and the associated operational mode information"; + } + } + + grouping terminal-operational-mode-top { + description + "Top-level grouping for vendor-supported operational modes"; + + container operational-modes { + description + "Enclosing container for list of operational modes"; + + list mode { + key "mode-id"; + config false; + description + "List of operational modes supported by the platform. + The operational mode provides a platform-defined summary + of information such as symbol rate, modulation, pulse + shaping, etc."; + + leaf mode-id { + type leafref { + path "../state/mode-id"; + } + description + "Reference to mode-id"; + } + + container config { + description + "Configuration data for operational mode"; + + uses terminal-operational-mode-config; + } + + container state { + + config false; + + description + "Operational state data for the platform-defined + operational mode"; + + uses terminal-operational-mode-config; + uses terminal-operational-mode-state; + } + } + } + } + + grouping terminal-device-config { + description + "Configuration data for transport terminal devices at a + device-wide level"; + } + + grouping terminal-device-state { + description + "Operational state data for transport terminal devices at a + device-wide level"; + } + + grouping terminal-device-top { + description + "Top-level grouping for data for terminal devices"; + + container terminal-device { + description + "Top-level container for the terminal device"; + + container config { + description + "Configuration data for global terminal-device"; + + uses terminal-device-config; + } + + container state { + + config false; + + description + "Operational state data for global terminal device"; + + uses terminal-device-config; + uses terminal-device-state; + } + + uses terminal-logical-channel-top; + uses terminal-operational-mode-top; + + } + } + + // data definition statements + + uses terminal-device-top; + + // augment statements + + augment "/oc-platform:components/oc-platform:component" { + when "/oc-platform:components/oc-platform:component/" + + "oc-platform:state/oc-platform:type = 'OPTICAL_CHANNEL'" { + description + "Augment is active when component is of type + OPTICAL_CHANNEL"; + } + description + "Adding optical channel data to physical inventory"; + + uses terminal-optical-channel-top { + } + } +} diff --git a/hackfest/openconfig/terminal.json b/hackfest/openconfig/terminal.json new file mode 100644 index 0000000000000000000000000000000000000000..9c7164f2c1cc240544ac4ab13e532408f198cb30 --- /dev/null +++ b/hackfest/openconfig/terminal.json @@ -0,0 +1,22 @@ +{ + "terminal-device" : { + "logical-channels" : { + "channel" : [ + { + "index" : 1, + "config" : { "index" : 1 }, + "otn" : { + "state" : { + "q-value" : { + "instant" : "5" + }, + "esnr" : { + "instant" : "6" + } + } + } + } + ] + } + } +} diff --git a/hackfest/p4/README.md b/hackfest/p4/README.md new file mode 100644 index 0000000000000000000000000000000000000000..344b88c0826a4d44ded9c8369a5009e73ed211b4 --- /dev/null +++ b/hackfest/p4/README.md @@ -0,0 +1,97 @@ +# Network X 22 Demo - P4 driver, Basic connectivity functionality + +This functional test shows the P4 driver with a basic connectivity test between 2 hosts connected to a single P4 switch, using the TeraFlow Cloud-native SDN Controller. + +## Functional test folder + +This functional test can be found in folder `hackfest/p4` + +## P4 source and Mininet topology + +This test is designed to operate with a mininet deployment that contains 2 hosts and a BMv2 switch, such a topology can be found in the 'hackfest/p4/mininet' folder. +Additionally the P4 source code, along with its compiled artifacts are present in the 'hackfest/p4/p4' folder. + +## Deployment and Dependencies + +To run this functional test, it is assumed you have deployed a MicroK8s-based Kubernetes environment and a TeraFlowSDN +controller instance as described in the [Tutorial: Deployment Guide](./1-0-deployment.md), and you configured the Python +environment as described in +[Tutorial: Run Experiments Guide > 2.1. Configure Python Environment](./2-1-python-environment.md). +Remember to source the scenario settings appropriately, e.g., `cd ~/tfs-ctrl && source my_deploy.sh` in each terminal +you open. + +Additionally mininet with a p4 switch (bmv2 for example) should be installed, we suggest using the mininet packaged in the [Next-Gen SDN Tutorial][https://github.com/opennetworkinglab/ngsdn-tutorial], as it provides an easy way to deploy mininet dockerized and comes with the BMv2Stratum software switch. + +### Next-Gen SDN Tutorial installation + +To install the recommended mininet from the Next-Gen SDN Tutorial follow these steps: + +First of all you should have the following dependencies installed: + +- Docker v1.13.0+ (with docker-compose) +- make +- Python 3 + +Then clone the repo +``` +cd ~ +git clone -b advanced https://github.com/opennetworkinglab/ngsdn-tutorial +``` + +After the repo is downloaded do the following to download the required docker images +``` +cd ~/ngsdn-tutorial +make deps +``` + +Add the following make rule to the ~/ngsdn-tutorial/Makefile +``` +start-simple: NGSDN_TOPO_PY := topo-simple.py +start-simple: _start +``` + +And copy the topology file from ~/tfs-ctrl/hackfest/p4/mininet/topo-simple.py to the ~/ngsdn-tutorial/mininet/ directory. + +## Test Execution + +### Mininet +To execute this functional test, first start mininet: +``` +make start-simple +make mn-cli +``` + +You will be prompted with the mininet cli. Run the following and let it run until the end of the experiment +``` +client ping server +``` + +### Teraflow + +In another terminal cd to the teraflow directory and run the following +``` +hackfest/p4/setup.sh +``` +This will copy the p4 artifacts to the device pod. + +Then you can bootstrap the device to the Teraflow Controller +``` +hackfest/p4/run_test_01_bootstrap.sh +``` + +Install the required rules to the p4 switch +``` +hackfest/p4/run_test_02_create_service.sh +``` +You should now check the mininet terminal. The two hosts should be pinging each other as intended. + +You can remove the rules from the p4 switch +``` +hackfest/p4/run_test_03_delete_service.sh +``` +The two hosts on the mininet terminal, should stop pinging. + +And remove the device from the Teraflow Controller +``` +hackfest/p4/run_test_04_cleanup.sh +``` diff --git a/src/common/rpc_method_wrapper/tests/__init__.py b/hackfest/p4/__init__.py similarity index 100% rename from src/common/rpc_method_wrapper/tests/__init__.py rename to hackfest/p4/__init__.py diff --git a/hackfest/p4/deploy_specs.sh b/hackfest/p4/deploy_specs.sh new file mode 100644 index 0000000000000000000000000000000000000000..b486474e2afad7305409bf410c7b8885b0afe2a8 --- /dev/null +++ b/hackfest/p4/deploy_specs.sh @@ -0,0 +1,17 @@ +# 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 automation service compute monitoring 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" + +# Set additional manifest files to be applied after the deployment +export TFS_EXTRA_MANIFESTS="manifests/nginx_ingress_http.yaml" + +# Set the neew Grafana admin password +export TFS_GRAFANA_PASSWORD="admin123+" diff --git a/hackfest/p4/mininet/topo-simple.py b/hackfest/p4/mininet/topo-simple.py new file mode 100755 index 0000000000000000000000000000000000000000..8a7ccaf62ecb69113e459acfbc99e020df3a02c7 --- /dev/null +++ b/hackfest/p4/mininet/topo-simple.py @@ -0,0 +1,96 @@ +#!/usr/bin/python + +# Copyright 2019-present Open Networking Foundation +# +# 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. + +import argparse + +from mininet.cli import CLI +from mininet.log import setLogLevel +from mininet.net import Mininet +from mininet.node import Host +from mininet.topo import Topo +from stratum import StratumBmv2Switch + +CPU_PORT = 255 + +class IPv4Host(Host): + """Host that can be configured with an IPv4 gateway (default route). + """ + + def config(self, mac=None, ip=None, defaultRoute=None, lo='up', gw=None, + **_params): + super(IPv4Host, self).config(mac, ip, defaultRoute, lo, **_params) + self.cmd('arp -s 192.168.1.1 11:22:33:44:55:77') + self.cmd('ip -4 addr flush dev %s' % self.defaultIntf()) + self.cmd('ip -6 addr flush dev %s' % self.defaultIntf()) + self.cmd('ip -4 link set up %s' % self.defaultIntf()) + self.cmd('ip -4 addr add %s dev %s' % (ip, self.defaultIntf())) + if gw: + self.cmd('ip -4 route add default via %s' % gw) + # Disable offload + for attr in ["rx", "tx", "sg"]: + cmd = "/sbin/ethtool --offload %s %s off" % ( + self.defaultIntf(), attr) + self.cmd(cmd) + + def updateIP(): + return ip.split('/')[0] + + self.defaultIntf().updateIP = updateIP + +class TutorialTopo(Topo): + """Basic Server-Client topology with IPv4 hosts""" + + def __init__(self, *args, **kwargs): + Topo.__init__(self, *args, **kwargs) + + # Spines + # gRPC port 50001 + switch1 = self.addSwitch('switch1', cls=StratumBmv2Switch, cpuport=CPU_PORT) + + # IPv4 hosts attached to switch 1 + client = self.addHost('client', cls=IPv4Host, mac="aa:bb:cc:dd:ee:11", + ip='10.0.0.1/24', gw='10.0.0.100') + server = self.addHost('server', cls=IPv4Host, mac="aa:bb:cc:dd:ee:22", + ip='10.0.0.2/24', gw='10.0.0.100') + self.addLink(client, switch1) # port 1 + self.addLink(server, switch1) # port 2 + + +def main(): + net = Mininet(topo=TutorialTopo(), controller=None) + net.start() + client = net.hosts[0] + server = net.hosts[1] + client.setARP('10.0.0.2', 'aa:bb:cc:dd:ee:22') + server.setARP('10.0.0.1', 'aa:bb:cc:dd:ee:11') + CLI(net) + net.stop() + print '#' * 80 + print 'ATTENTION: Mininet was stopped! Perhaps accidentally?' + print 'No worries, it will restart automatically in a few seconds...' + print 'To access again the Mininet CLI, use `make mn-cli`' + print 'To detach from the CLI (without stopping), press Ctrl-D' + print 'To permanently quit Mininet, use `make stop`' + print '#' * 80 + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description='Mininet topology script for 2x2 fabric with stratum_bmv2 and IPv4 hosts') + args = parser.parse_args() + setLogLevel('info') + + main() diff --git a/hackfest/p4/p4/bmv2.json b/hackfest/p4/p4/bmv2.json new file mode 100644 index 0000000000000000000000000000000000000000..b1e3fa8ce1f6d19e9c94384d85a7ab5875a614b0 --- /dev/null +++ b/hackfest/p4/p4/bmv2.json @@ -0,0 +1,669 @@ +{ + "header_types" : [ + { + "name" : "scalars_0", + "id" : 0, + "fields" : [ + ["tmp", 1, false], + ["local_metadata_t.is_multicast", 1, false], + ["_padding_0", 6, false] + ] + }, + { + "name" : "standard_metadata", + "id" : 1, + "fields" : [ + ["ingress_port", 9, false], + ["egress_spec", 9, false], + ["egress_port", 9, false], + ["clone_spec", 32, false], + ["instance_type", 32, false], + ["drop", 1, false], + ["recirculate_port", 16, false], + ["packet_length", 32, false], + ["enq_timestamp", 32, false], + ["enq_qdepth", 19, false], + ["deq_timedelta", 32, false], + ["deq_qdepth", 19, false], + ["ingress_global_timestamp", 48, false], + ["egress_global_timestamp", 48, false], + ["lf_field_list", 32, false], + ["mcast_grp", 16, false], + ["resubmit_flag", 32, false], + ["egress_rid", 16, false], + ["recirculate_flag", 32, false], + ["checksum_error", 1, false], + ["parser_error", 32, false], + ["priority", 3, false], + ["_padding", 2, false] + ] + }, + { + "name" : "ethernet_t", + "id" : 2, + "fields" : [ + ["dst_addr", 48, false], + ["src_addr", 48, false], + ["ether_type", 16, false] + ] + } + ], + "headers" : [ + { + "name" : "scalars", + "id" : 0, + "header_type" : "scalars_0", + "metadata" : true, + "pi_omit" : true + }, + { + "name" : "standard_metadata", + "id" : 1, + "header_type" : "standard_metadata", + "metadata" : true, + "pi_omit" : true + }, + { + "name" : "ethernet", + "id" : 2, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + } + ], + "header_stacks" : [], + "header_union_types" : [], + "header_unions" : [], + "header_union_stacks" : [], + "field_lists" : [], + "errors" : [ + ["NoError", 1], + ["PacketTooShort", 2], + ["NoMatch", 3], + ["StackOutOfBounds", 4], + ["HeaderTooShort", 5], + ["ParserTimeout", 6], + ["ParserInvalidArgument", 7] + ], + "enums" : [], + "parsers" : [ + { + "name" : "parser", + "id" : 0, + "init_state" : "start", + "parse_states" : [ + { + "name" : "start", + "id" : 0, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "ethernet" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "value" : "default", + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + } + ] + } + ], + "parse_vsets" : [], + "deparsers" : [ + { + "name" : "deparser", + "id" : 0, + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 148, + "column" : 8, + "source_fragment" : "DeparserImpl" + }, + "order" : ["ethernet"] + } + ], + "meter_arrays" : [], + "counter_arrays" : [], + "register_arrays" : [], + "calculations" : [], + "learn_lists" : [], + "actions" : [ + { + "name" : "IngressPipeImpl.drop", + "id" : 0, + "runtime_data" : [], + "primitives" : [ + { + "op" : "mark_to_drop", + "parameters" : [ + { + "type" : "header", + "value" : "standard_metadata" + } + ], + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 77, + "column" : 8, + "source_fragment" : "mark_to_drop(standard_metadata)" + } + } + ] + }, + { + "name" : "IngressPipeImpl.drop", + "id" : 1, + "runtime_data" : [], + "primitives" : [ + { + "op" : "mark_to_drop", + "parameters" : [ + { + "type" : "header", + "value" : "standard_metadata" + } + ], + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 77, + "column" : 8, + "source_fragment" : "mark_to_drop(standard_metadata)" + } + } + ] + }, + { + "name" : "IngressPipeImpl.set_egress_port", + "id" : 2, + "runtime_data" : [ + { + "name" : "port_num", + "bitwidth" : 9 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 81, + "column" : 8, + "source_fragment" : "standard_metadata.egress_spec = port_num" + } + } + ] + }, + { + "name" : "IngressPipeImpl.set_egress_port", + "id" : 3, + "runtime_data" : [ + { + "name" : "port_num", + "bitwidth" : 9 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 81, + "column" : 8, + "source_fragment" : "standard_metadata.egress_spec = port_num" + } + } + ] + }, + { + "name" : "IngressPipeImpl.set_multicast_group", + "id" : 4, + "runtime_data" : [ + { + "name" : "gid", + "bitwidth" : 16 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "mcast_grp"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 89, + "column" : 8, + "source_fragment" : "standard_metadata.mcast_grp = gid" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "local_metadata_t.is_multicast"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 90, + "column" : 8, + "source_fragment" : "local_metadata.is_multicast = true" + } + } + ] + }, + { + "name" : "IngressPipeImpl.set_multicast_group", + "id" : 5, + "runtime_data" : [ + { + "name" : "gid", + "bitwidth" : 16 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "mcast_grp"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 89, + "column" : 8, + "source_fragment" : "standard_metadata.mcast_grp = gid" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "local_metadata_t.is_multicast"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 90, + "column" : 8, + "source_fragment" : "local_metadata.is_multicast = true" + } + } + ] + }, + { + "name" : "act", + "id" : 6, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ] + } + ] + }, + { + "name" : "act_0", + "id" : 7, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ] + } + ] + } + ], + "pipelines" : [ + { + "name" : "ingress", + "id" : 0, + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "IngressPipeImpl" + }, + "init_table" : "IngressPipeImpl.l2_exact_table", + "tables" : [ + { + "name" : "IngressPipeImpl.l2_exact_table", + "id" : 0, + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 95, + "column" : 10, + "source_fragment" : "l2_exact_table" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "hdr.ethernet.dst_addr", + "target" : ["ethernet", "dst_addr"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [2, 4, 0], + "actions" : ["IngressPipeImpl.set_egress_port", "IngressPipeImpl.set_multicast_group", "IngressPipeImpl.drop"], + "base_default_next" : null, + "next_tables" : { + "__HIT__" : "tbl_act", + "__MISS__" : "tbl_act_0" + }, + "default_entry" : { + "action_id" : 0, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_act", + "id" : 1, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [6], + "actions" : ["act"], + "base_default_next" : "node_5", + "next_tables" : { + "act" : "node_5" + }, + "default_entry" : { + "action_id" : 6, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_act_0", + "id" : 2, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [7], + "actions" : ["act_0"], + "base_default_next" : "node_5", + "next_tables" : { + "act_0" : "node_5" + }, + "default_entry" : { + "action_id" : 7, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "IngressPipeImpl.l2_ternary_table", + "id" : 3, + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 109, + "column" : 10, + "source_fragment" : "l2_ternary_table" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "hdr.ethernet.dst_addr", + "target" : ["ethernet", "dst_addr"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [3, 5, 1], + "actions" : ["IngressPipeImpl.set_egress_port", "IngressPipeImpl.set_multicast_group", "IngressPipeImpl.drop"], + "base_default_next" : null, + "next_tables" : { + "IngressPipeImpl.set_egress_port" : null, + "IngressPipeImpl.set_multicast_group" : null, + "IngressPipeImpl.drop" : null + }, + "default_entry" : { + "action_id" : 1, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + } + ], + "action_profiles" : [], + "conditionals" : [ + { + "name" : "node_5", + "id" : 0, + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 122, + "column" : 12, + "source_fragment" : "!l2_exact_table.apply().hit" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "not", + "left" : null, + "right" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "tmp"] + } + } + } + } + }, + "false_next" : null, + "true_next" : "IngressPipeImpl.l2_ternary_table" + } + ] + }, + { + "name" : "egress", + "id" : 1, + "source_info" : { + "filename" : "p4src/main.p4", + "line" : 134, + "column" : 8, + "source_fragment" : "EgressPipeImpl" + }, + "init_table" : null, + "tables" : [], + "action_profiles" : [], + "conditionals" : [] + } + ], + "checksums" : [], + "force_arith" : [], + "extern_instances" : [], + "field_aliases" : [ + [ + "queueing_metadata.enq_timestamp", + ["standard_metadata", "enq_timestamp"] + ], + [ + "queueing_metadata.enq_qdepth", + ["standard_metadata", "enq_qdepth"] + ], + [ + "queueing_metadata.deq_timedelta", + ["standard_metadata", "deq_timedelta"] + ], + [ + "queueing_metadata.deq_qdepth", + ["standard_metadata", "deq_qdepth"] + ], + [ + "intrinsic_metadata.ingress_global_timestamp", + ["standard_metadata", "ingress_global_timestamp"] + ], + [ + "intrinsic_metadata.egress_global_timestamp", + ["standard_metadata", "egress_global_timestamp"] + ], + [ + "intrinsic_metadata.lf_field_list", + ["standard_metadata", "lf_field_list"] + ], + [ + "intrinsic_metadata.mcast_grp", + ["standard_metadata", "mcast_grp"] + ], + [ + "intrinsic_metadata.resubmit_flag", + ["standard_metadata", "resubmit_flag"] + ], + [ + "intrinsic_metadata.egress_rid", + ["standard_metadata", "egress_rid"] + ], + [ + "intrinsic_metadata.recirculate_flag", + ["standard_metadata", "recirculate_flag"] + ], + [ + "intrinsic_metadata.priority", + ["standard_metadata", "priority"] + ] + ], + "program" : "p4src/main.p4", + "__meta__" : { + "version" : [2, 18], + "compiler" : "https://github.com/p4lang/p4c" + } +} \ No newline at end of file diff --git a/hackfest/p4/p4/main.p4 b/hackfest/p4/p4/main.p4 new file mode 100644 index 0000000000000000000000000000000000000000..fb94bdfd24722862831989bad1e173858f5a0d4d --- /dev/null +++ b/hackfest/p4/p4/main.p4 @@ -0,0 +1,162 @@ +/* + * Copyright 2019-present Open Networking Foundation + * + * 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. + */ + + +#include +#include + +typedef bit<9> port_num_t; +typedef bit<48> mac_addr_t; +typedef bit<16> mcast_group_id_t; + +//------------------------------------------------------------------------------ +// HEADER DEFINITIONS +//------------------------------------------------------------------------------ + +header ethernet_t { + mac_addr_t dst_addr; + mac_addr_t src_addr; + bit<16> ether_type; +} + +struct parsed_headers_t { + ethernet_t ethernet; +} + +struct local_metadata_t { + bool is_multicast; +} + + +//------------------------------------------------------------------------------ +// INGRESS PIPELINE +//------------------------------------------------------------------------------ + +parser ParserImpl (packet_in packet, + out parsed_headers_t hdr, + inout local_metadata_t local_metadata, + inout standard_metadata_t standard_metadata) +{ + state start { + transition parse_ethernet; + } + + state parse_ethernet { + packet.extract(hdr.ethernet); + transition accept; + } +} + + +control VerifyChecksumImpl(inout parsed_headers_t hdr, + inout local_metadata_t meta) +{ + apply { /* EMPTY */ } +} + + +control IngressPipeImpl (inout parsed_headers_t hdr, + inout local_metadata_t local_metadata, + inout standard_metadata_t standard_metadata) { + + // Drop action shared by many tables. + action drop() { + mark_to_drop(standard_metadata); + } + + action set_egress_port(port_num_t port_num) { + standard_metadata.egress_spec = port_num; + } + + action set_multicast_group(mcast_group_id_t gid) { + // gid will be used by the Packet Replication Engine (PRE) in the + // Traffic Manager--located right after the ingress pipeline, to + // replicate a packet to multiple egress ports, specified by the control + // plane by means of P4Runtime MulticastGroupEntry messages. + standard_metadata.mcast_grp = gid; + local_metadata.is_multicast = true; + } + + // --- l2_exact_table ------------------ + + table l2_exact_table { + key = { + hdr.ethernet.dst_addr: exact; + } + actions = { + set_egress_port; + set_multicast_group; + @defaultonly drop; + } + const default_action = drop; + } + + // --- l2_ternary_table ------------------ + + table l2_ternary_table { + key = { + hdr.ethernet.dst_addr: ternary; + } + actions = { + set_egress_port; + set_multicast_group; + @defaultonly drop; + } + const default_action = drop; + } + + apply { + if (!l2_exact_table.apply().hit) { + // ...if an entry is NOT found, apply the ternary one in case + // this is a multicast/broadcast NDP NS packet. + l2_ternary_table.apply(); + } + } +} + +//------------------------------------------------------------------------------ +// EGRESS PIPELINE +//------------------------------------------------------------------------------ + +control EgressPipeImpl (inout parsed_headers_t hdr, + inout local_metadata_t local_metadata, + inout standard_metadata_t standard_metadata) { + apply { /* EMPTY */ } +} + + +control ComputeChecksumImpl(inout parsed_headers_t hdr, + inout local_metadata_t local_metadata) +{ + apply { /* EMPTY */ } +} + + +control DeparserImpl(packet_out packet, in parsed_headers_t hdr) { + apply { + packet.emit(hdr.ethernet); + } +} + + +V1Switch( + ParserImpl(), + VerifyChecksumImpl(), + IngressPipeImpl(), + EgressPipeImpl(), + ComputeChecksumImpl(), + DeparserImpl() +) main; diff --git a/hackfest/p4/p4/p4info.txt b/hackfest/p4/p4/p4info.txt new file mode 100644 index 0000000000000000000000000000000000000000..4048dfcd32bdb5dfd58b89b6b83ab7e1fc0188ca --- /dev/null +++ b/hackfest/p4/p4/p4info.txt @@ -0,0 +1,88 @@ +pkg_info { + arch: "v1model" +} +tables { + preamble { + id: 33605373 + name: "IngressPipeImpl.l2_exact_table" + alias: "l2_exact_table" + } + match_fields { + id: 1 + name: "hdr.ethernet.dst_addr" + bitwidth: 48 + match_type: EXACT + } + action_refs { + id: 16812802 + } + action_refs { + id: 16841371 + } + action_refs { + id: 16796182 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 16796182 + size: 1024 +} +tables { + preamble { + id: 33573501 + name: "IngressPipeImpl.l2_ternary_table" + alias: "l2_ternary_table" + } + match_fields { + id: 1 + name: "hdr.ethernet.dst_addr" + bitwidth: 48 + match_type: TERNARY + } + action_refs { + id: 16812802 + } + action_refs { + id: 16841371 + } + action_refs { + id: 16796182 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 16796182 + size: 1024 +} +actions { + preamble { + id: 16796182 + name: "IngressPipeImpl.drop" + alias: "drop" + } +} +actions { + preamble { + id: 16812802 + name: "IngressPipeImpl.set_egress_port" + alias: "set_egress_port" + } + params { + id: 1 + name: "port_num" + bitwidth: 9 + } +} +actions { + preamble { + id: 16841371 + name: "IngressPipeImpl.set_multicast_group" + alias: "set_multicast_group" + } + params { + id: 1 + name: "gid" + bitwidth: 16 + } +} +type_info { +} diff --git a/hackfest/p4/run_test_01_bootstrap.sh b/hackfest/p4/run_test_01_bootstrap.sh new file mode 100755 index 0000000000000000000000000000000000000000..42e647be17b0e1731a8c69fb68c2cb414fdb542c --- /dev/null +++ b/hackfest/p4/run_test_01_bootstrap.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +# make sure to source the following scripts: +# - my_deploy.sh +# - tfs_runtime_env_vars.sh + +source tfs_runtime_env_vars.sh +python -m pytest --verbose hackfest/p4/tests/test_functional_bootstrap.py + diff --git a/hackfest/p4/run_test_02_create_service.sh b/hackfest/p4/run_test_02_create_service.sh new file mode 100755 index 0000000000000000000000000000000000000000..8fb9038d8abaff5abd36b18a316af267186f7fcc --- /dev/null +++ b/hackfest/p4/run_test_02_create_service.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +source tfs_runtime_env_vars.sh +python -m pytest --verbose hackfest/p4/tests/test_functional_create_service.py diff --git a/hackfest/p4/run_test_03_delete_service.sh b/hackfest/p4/run_test_03_delete_service.sh new file mode 100755 index 0000000000000000000000000000000000000000..96f79c0714b65f7ebfd125b7d429e23d7213549d --- /dev/null +++ b/hackfest/p4/run_test_03_delete_service.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +source tfs_runtime_env_vars.sh +python -m pytest --verbose hackfest/p4/tests/test_functional_delete_service.py diff --git a/hackfest/p4/run_test_04_cleanup.sh b/hackfest/p4/run_test_04_cleanup.sh new file mode 100755 index 0000000000000000000000000000000000000000..5cb265f6f647516e0ec4da9484bff5ec7d6e488a --- /dev/null +++ b/hackfest/p4/run_test_04_cleanup.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +source tfs_runtime_env_vars.sh +python -m pytest --verbose hackfest/p4/tests/test_functional_cleanup.py diff --git a/hackfest/p4/setup.sh b/hackfest/p4/setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..195327a03fedafdc64a2d0dc34577766eda72a4f --- /dev/null +++ b/hackfest/p4/setup.sh @@ -0,0 +1,8 @@ +#! /bin/bash + +export POD_NAME=$(kubectl get pods -n=tfs | grep device | awk '{print $1}') + +kubectl exec ${POD_NAME} -n=tfs -- mkdir /root/p4 + +kubectl cp hackfest/p4/p4/p4info.txt tfs/${POD_NAME}:/root/p4 +kubectl cp hackfest/p4/p4/bmv2.json tfs/${POD_NAME}:/root/p4 diff --git a/hackfest/p4/tests/.gitignore b/hackfest/p4/tests/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..76cb708d1b532c9b69166e55f36bcb912fd5e370 --- /dev/null +++ b/hackfest/p4/tests/.gitignore @@ -0,0 +1,2 @@ +# Add here your files containing confidential testbed details such as IP addresses, ports, usernames, passwords, etc. +Credentials.py diff --git a/src/tests/ofc22/tests/BuildDescriptors.py b/hackfest/p4/tests/BuildDescriptors.py similarity index 100% rename from src/tests/ofc22/tests/BuildDescriptors.py rename to hackfest/p4/tests/BuildDescriptors.py diff --git a/src/tests/ofc22/tests/LoadDescriptors.py b/hackfest/p4/tests/LoadDescriptors.py similarity index 96% rename from src/tests/ofc22/tests/LoadDescriptors.py rename to hackfest/p4/tests/LoadDescriptors.py index 4d3af78f5c9a3fd9b09d94f24bb8aaec48af6b7a..33bc699af933601e4c6d4b8dbc7b0c51206241ef 100644 --- a/src/tests/ofc22/tests/LoadDescriptors.py +++ b/hackfest/p4/tests/LoadDescriptors.py @@ -15,7 +15,7 @@ import json, logging, sys from common.Settings import get_setting from context.client.ContextClient import ContextClient -from context.proto.context_pb2 import Context, Device, Link, Topology +from common.proto.context_pb2 import Context, Device, Link, Topology from device.client.DeviceClient import DeviceClient LOGGER = logging.getLogger(__name__) diff --git a/hackfest/p4/tests/Objects.py b/hackfest/p4/tests/Objects.py new file mode 100644 index 0000000000000000000000000000000000000000..c8b172244d714cd699ccc587e54c3751485a9a2e --- /dev/null +++ b/hackfest/p4/tests/Objects.py @@ -0,0 +1,311 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import os +from typing import Dict, List, Tuple +from common.Constants import DEFAULT_CONTEXT_UUID, DEFAULT_TOPOLOGY_UUID +from common.tools.object_factory.Context import json_context, json_context_id +from common.tools.object_factory.Device import ( + json_device_connect_rules, json_device_emulated_connect_rules, json_device_emulated_packet_router_disabled, + json_device_connect_rules, json_device_id, json_device_p4_disabled, + json_device_emulated_tapi_disabled, json_device_id, json_device_packetrouter_disabled, json_device_tapi_disabled) +from common.tools.object_factory.ConfigRule import ( + json_config_rule_set, json_config_rule_delete) +from common.tools.object_factory.EndPoint import json_endpoint, json_endpoint_id +from common.tools.object_factory.Link import json_link, json_link_id +from common.tools.object_factory.Topology import json_topology, json_topology_id +from common.proto.kpi_sample_types_pb2 import KpiSampleType + +# ----- Context -------------------------------------------------------------------------------------------------------- +CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_UUID) +CONTEXT = json_context(DEFAULT_CONTEXT_UUID) + +# ----- Topology ------------------------------------------------------------------------------------------------------- +TOPOLOGY_ID = json_topology_id(DEFAULT_TOPOLOGY_UUID, context_id=CONTEXT_ID) +TOPOLOGY = json_topology(DEFAULT_TOPOLOGY_UUID, context_id=CONTEXT_ID) + +# ----- Monitoring Samples --------------------------------------------------------------------------------------------- +PACKET_PORT_SAMPLE_TYPES = [ + KpiSampleType.KPISAMPLETYPE_PACKETS_TRANSMITTED, + KpiSampleType.KPISAMPLETYPE_PACKETS_RECEIVED, + KpiSampleType.KPISAMPLETYPE_BYTES_TRANSMITTED, + KpiSampleType.KPISAMPLETYPE_BYTES_RECEIVED, +] + +# ----- Device Credentials and Settings -------------------------------------------------------------------------------- + + +# ----- Devices -------------------------------------------------------------------------------------------------------- + +CUR_PATH = os.path.dirname(os.path.abspath(__file__)) + +DEVICE_SW1_UUID = 'SW1' +DEVICE_SW1_TIMEOUT = 60 +DEVICE_SW1_ID = json_device_id(DEVICE_SW1_UUID) +DEVICE_SW1 = json_device_p4_disabled(DEVICE_SW1_UUID) + +DEVICE_SW1_DPID = 1 +DEVICE_SW1_NAME = DEVICE_SW1_UUID +DEVICE_SW1_IP_ADDR = 'localhost' +DEVICE_SW1_PORT = '50001' +DEVICE_SW1_VENDOR = 'Open Networking Foundation' +DEVICE_SW1_HW_VER = 'BMv2 simple_switch' +DEVICE_SW1_SW_VER = 'Stratum' + +DEVICE_SW1_BIN_PATH = '/root/p4/bmv2.json' +DEVICE_SW1_INFO_PATH = '/root/p4/p4info.txt' + +DEVICE_SW1_CONNECT_RULES = json_device_connect_rules( + DEVICE_SW1_IP_ADDR, + DEVICE_SW1_PORT, + { + 'id': DEVICE_SW1_DPID, + 'name': DEVICE_SW1_NAME, + 'vendor': DEVICE_SW1_VENDOR, + 'hw_ver': DEVICE_SW1_HW_VER, + 'sw_ver': DEVICE_SW1_SW_VER, + 'timeout': DEVICE_SW1_TIMEOUT, + 'p4bin': DEVICE_SW1_BIN_PATH, + 'p4info': DEVICE_SW1_INFO_PATH + } +) + +DEVICE_SW2_UUID = 'SW2' +DEVICE_SW2_TIMEOUT = 60 +DEVICE_SW2_ID = json_device_id(DEVICE_SW2_UUID) +DEVICE_SW2 = json_device_p4_disabled(DEVICE_SW2_UUID) + +DEVICE_SW2_DPID = 1 +DEVICE_SW2_NAME = DEVICE_SW2_UUID +DEVICE_SW2_IP_ADDR = 'localhost' +DEVICE_SW2_PORT = '50002' +DEVICE_SW2_VENDOR = 'Open Networking Foundation' +DEVICE_SW2_HW_VER = 'BMv2 simple_switch' +DEVICE_SW2_SW_VER = 'Stratum' + +DEVICE_SW2_BIN_PATH = '/root/p4/bmv2.json' +DEVICE_SW2_INFO_PATH = '/root/p4/p4info.txt' + +DEVICE_SW2_CONNECT_RULES = json_device_connect_rules( + DEVICE_SW2_IP_ADDR, + DEVICE_SW2_PORT, + { + 'id': DEVICE_SW2_DPID, + 'name': DEVICE_SW2_NAME, + 'vendor': DEVICE_SW2_VENDOR, + 'hw_ver': DEVICE_SW2_HW_VER, + 'sw_ver': DEVICE_SW2_SW_VER, + 'timeout': DEVICE_SW2_TIMEOUT, + 'p4bin': DEVICE_SW2_BIN_PATH, + 'p4info': DEVICE_SW2_INFO_PATH + } +) + +################################## TABLE ENTRIES ################################## + +DEVICE_SW1_CONFIG_TABLE_ENTRIES = [ + json_config_rule_set( + 'table', + { + 'table-name': 'IngressPipeImpl.l2_exact_table', + 'match-fields': [ + { + 'match-field': 'hdr.ethernet.dst_addr', + 'match-value': 'aa:bb:cc:dd:ee:11' + } + ], + 'action-name': 'IngressPipeImpl.set_egress_port', + 'action-params': [ + { + 'action-param': 'port_num', + 'action-value': '1' + } + ] + } + ), + json_config_rule_set( + 'table', + { + 'table-name': 'IngressPipeImpl.l2_exact_table', + 'match-fields': [ + { + 'match-field': 'hdr.ethernet.dst_addr', + 'match-value': 'aa:bb:cc:dd:ee:22' + } + ], + 'action-name': 'IngressPipeImpl.set_egress_port', + 'action-params': [ + { + 'action-param': 'port_num', + 'action-value': '2' + } + ] + } + ) +] + +DEVICE_SW2_CONFIG_TABLE_ENTRIES = DEVICE_SW1_CONFIG_TABLE_ENTRIES + + +""" +DEVICE_SW1_CONFIG_TABLE_ENTRIES = [ + json_config_rule_set( + 'table', + { + 'table-name': 'IngressPipeImpl.l2_ternary_table', + 'match-fields': [ + { + 'match-field': 'hdr.ethernet.dst_addr', + 'match-value': 'aa:bb:cc:dd:ee:11 &&& ff:ff:ff:ff:ff:ff' + } + ], + 'action-name': 'IngressPipeImpl.set_egress_port', + 'action-params': [ + { + 'action-param': 'port_num', + 'action-value': '1' + } + ], + 'priority': 1 + } + ), + json_config_rule_set( + 'table', + { + 'table-name': 'IngressPipeImpl.l2_ternary_table', + 'match-fields': [ + { + 'match-field': 'hdr.ethernet.dst_addr', + 'match-value': 'aa:bb:cc:dd:ee:22 &&& ff:ff:ff:ff:ff:ff' + } + ], + 'action-name': 'IngressPipeImpl.set_egress_port', + 'action-params': [ + { + 'action-param': 'port_num', + 'action-value': '2' + } + ], + 'priority': 1 + } + ), +] +""" + +################################## TABLE DECONF ################################## + +DEVICE_SW1_DECONF_TABLE_ENTRIES = [ + json_config_rule_delete( + 'table', + { + 'table-name': 'IngressPipeImpl.l2_exact_table', + 'match-fields': [ + { + 'match-field': 'hdr.ethernet.dst_addr', + 'match-value': 'aa:bb:cc:dd:ee:11' + } + ], + 'action-name': 'IngressPipeImpl.set_egress_port', + 'action-params': [ + { + 'action-param': 'port_num', + 'action-value': '1' + } + ] + } + ), + json_config_rule_delete( + 'table', + { + 'table-name': 'IngressPipeImpl.l2_exact_table', + 'match-fields': [ + { + 'match-field': 'hdr.ethernet.dst_addr', + 'match-value': 'aa:bb:cc:dd:ee:22' + } + ], + 'action-name': 'IngressPipeImpl.set_egress_port', + 'action-params': [ + { + 'action-param': 'port_num', + 'action-value': '2' + } + ] + } + ) +] + +DEVICE_SW2_DECONF_TABLE_ENTRIES = DEVICE_SW1_DECONF_TABLE_ENTRIES + + +""" +DEVICE_SW1_DECONF_TABLE_ENTRIES = [ + json_config_rule_delete( + 'table', + { + 'table-name': 'IngressPipeImpl.l2_ternary_table', + 'match-fields': [ + { + 'match-field': 'hdr.ethernet.dst_addr', + 'match-value': 'aa:bb:cc:dd:ee:11 &&& ff:ff:ff:ff:ff:ff' + } + ], + 'action-name': 'IngressPipeImpl.set_egress_port', + 'action-params': [ + { + 'action-param': 'port_num', + 'action-value': '1' + } + ], + 'priority': 1 + } + ), + json_config_rule_delete( + 'table', + { + 'table-name': 'IngressPipeImpl.l2_ternary_table', + 'match-fields': [ + { + 'match-field': 'hdr.ethernet.dst_addr', + 'match-value': 'aa:bb:cc:dd:ee:22 &&& ff:ff:ff:ff:ff:ff' + } + ], + 'action-name': 'IngressPipeImpl.set_egress_port', + 'action-params': [ + { + 'action-param': 'port_num', + 'action-value': '2' + } + ], + 'priority': 1 + } + ), +] +""" + +# ----- Links ---------------------------------------------------------------------------------------------------------- + +# ----- WIM Service Settings ------------------------------------------------------------------------------------------- + +# ----- Object Collections --------------------------------------------------------------------------------------------- + +CONTEXTS = [CONTEXT] +TOPOLOGIES = [TOPOLOGY] + +DEVICES = [ + (DEVICE_SW1, DEVICE_SW1_CONNECT_RULES, DEVICE_SW1_CONFIG_TABLE_ENTRIES, DEVICE_SW1_DECONF_TABLE_ENTRIES), + (DEVICE_SW2, DEVICE_SW2_CONNECT_RULES, DEVICE_SW2_CONFIG_TABLE_ENTRIES, DEVICE_SW2_DECONF_TABLE_ENTRIES), +] + +LINKS = [] diff --git a/src/compute/tests/mock_osm/__init__.py b/hackfest/p4/tests/__init__.py similarity index 100% rename from src/compute/tests/mock_osm/__init__.py rename to hackfest/p4/tests/__init__.py diff --git a/hackfest/p4/tests/test_functional_bootstrap.py b/hackfest/p4/tests/test_functional_bootstrap.py new file mode 100644 index 0000000000000000000000000000000000000000..0254ffd2602bd8dfc0766db0b9e766f7e7e79b32 --- /dev/null +++ b/hackfest/p4/tests/test_functional_bootstrap.py @@ -0,0 +1,95 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import copy, logging, pytest +from common.Settings import get_setting +from common.tests.EventTools import EVENT_CREATE, EVENT_UPDATE, check_events +from common.tools.object_factory.Context import json_context_id +from common.tools.object_factory.Device import json_device_id +from common.tools.object_factory.Link import json_link_id +from common.tools.object_factory.Topology import json_topology_id +from context.client.ContextClient import ContextClient +from context.client.EventsCollector import EventsCollector +from common.proto.context_pb2 import ConfigActionEnum, Context, ContextId, Device, Empty, Link, Topology, DeviceOperationalStatusEnum +from device.client.DeviceClient import DeviceClient +from .Objects import CONTEXT_ID, CONTEXTS, DEVICES, LINKS, TOPOLOGIES + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +@pytest.fixture(scope='session') +def context_client(): + _client = ContextClient(get_setting('CONTEXTSERVICE_SERVICE_HOST'), get_setting('CONTEXTSERVICE_SERVICE_PORT_GRPC')) + yield _client + _client.close() + + +@pytest.fixture(scope='session') +def device_client(): + _client = DeviceClient(get_setting('DEVICESERVICE_SERVICE_HOST'), get_setting('DEVICESERVICE_SERVICE_PORT_GRPC')) + yield _client + _client.close() + +def test_prepare_scenario(context_client : ContextClient): # pylint: disable=redefined-outer-name + + # ----- Create Contexts and Topologies ----------------------------------------------------------------------------- + for context in CONTEXTS: + context_uuid = context['context_id']['context_uuid']['uuid'] + LOGGER.info('Adding Context {:s}'.format(context_uuid)) + response = context_client.SetContext(Context(**context)) + assert response.context_uuid.uuid == context_uuid + + for topology in TOPOLOGIES: + context_uuid = topology['topology_id']['context_id']['context_uuid']['uuid'] + topology_uuid = topology['topology_id']['topology_uuid']['uuid'] + LOGGER.info('Adding Topology {:s}/{:s}'.format(context_uuid, topology_uuid)) + response = context_client.SetTopology(Topology(**topology)) + assert response.context_id.context_uuid.uuid == context_uuid + assert response.topology_uuid.uuid == topology_uuid + context_id = json_context_id(context_uuid) + +def test_scenario_ready(context_client : ContextClient): # pylint: disable=redefined-outer-name + # ----- List entities - Ensure scenario is ready ------------------------------------------------------------------- + response = context_client.ListContexts(Empty()) + assert len(response.contexts) == len(CONTEXTS) + + response = context_client.ListTopologies(ContextId(**CONTEXT_ID)) + assert len(response.topologies) == len(TOPOLOGIES) + + response = context_client.ListDevices(Empty()) + assert len(response.devices) == 0 + +def test_devices_bootstraping( + context_client : ContextClient, device_client : DeviceClient): # pylint: disable=redefined-outer-name + + # ----- Create Devices --------------------------------------------------------------- + for device, connect_rules, config_rules, _ in DEVICES: + device_uuid = device['device_id']['device_uuid']['uuid'] + LOGGER.info('Adding Device {:s}'.format(device_uuid)) + + device_p4_with_connect_rules = copy.deepcopy(device) + device_p4_with_connect_rules['device_config']['config_rules'].extend(connect_rules) + response = device_client.AddDevice(Device(**device_p4_with_connect_rules)) + assert response.device_uuid.uuid == device_uuid + +def test_devices_bootstrapped(context_client : ContextClient): # pylint: disable=redefined-outer-name + # ----- List entities - Ensure bevices are created ----------------------------------------------------------------- + response = context_client.ListContexts(Empty()) + assert len(response.contexts) == len(CONTEXTS) + + response = context_client.ListTopologies(ContextId(**CONTEXT_ID)) + assert len(response.topologies) == len(TOPOLOGIES) + + response = context_client.ListDevices(Empty()) + assert len(response.devices) == len(DEVICES) diff --git a/hackfest/p4/tests/test_functional_cleanup.py b/hackfest/p4/tests/test_functional_cleanup.py new file mode 100644 index 0000000000000000000000000000000000000000..ccbcb9843a03bbf095743af0753da3fe8af3bfce --- /dev/null +++ b/hackfest/p4/tests/test_functional_cleanup.py @@ -0,0 +1,76 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import copy, logging, pytest +from common.Settings import get_setting +from common.tests.EventTools import EVENT_REMOVE, check_events +from common.tools.object_factory.Context import json_context_id +from common.tools.object_factory.Device import json_device_id +from common.tools.object_factory.Link import json_link_id +from common.tools.object_factory.Topology import json_topology_id +from context.client.ContextClient import ContextClient +from context.client.EventsCollector import EventsCollector +from common.proto.context_pb2 import ConfigActionEnum, ContextId, Device, DeviceId, Empty, LinkId, TopologyId, DeviceOperationalStatusEnum +from device.client.DeviceClient import DeviceClient +from .Objects import CONTEXT_ID, CONTEXTS, DEVICES, LINKS, TOPOLOGIES + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + + +@pytest.fixture(scope='session') +def context_client(): + _client = ContextClient(get_setting('CONTEXTSERVICE_SERVICE_HOST'), get_setting('CONTEXTSERVICE_SERVICE_PORT_GRPC')) + yield _client + _client.close() + + +@pytest.fixture(scope='session') +def device_client(): + _client = DeviceClient(get_setting('DEVICESERVICE_SERVICE_HOST'), get_setting('DEVICESERVICE_SERVICE_PORT_GRPC')) + yield _client + _client.close() + +def test_scenario_cleanup( + context_client : ContextClient, device_client : DeviceClient): # pylint: disable=redefined-outer-name + + # ----- Delete Devices and Validate Collected Events --------------------------------------------------------------- + for device, _, _, deconf_rules in DEVICES: + + device_id = device['device_id'] + device_uuid = device_id['device_uuid']['uuid'] + LOGGER.info('Deleting Device {:s}'.format(device_uuid)) + device_client.DeleteDevice(DeviceId(**device_id)) + #expected_events.append(('DeviceEvent', EVENT_REMOVE, json_device_id(device_uuid))) + + response = context_client.ListDevices(Empty()) + assert len(response.devices) == 0 + + # ----- Delete Topologies and Validate Collected Events ------------------------------------------------------------ + for topology in TOPOLOGIES: + topology_id = topology['topology_id'] + context_uuid = topology_id['context_id']['context_uuid']['uuid'] + topology_uuid = topology_id['topology_uuid']['uuid'] + LOGGER.info('Deleting Topology {:s}/{:s}'.format(context_uuid, topology_uuid)) + context_client.RemoveTopology(TopologyId(**topology_id)) + context_id = json_context_id(context_uuid) + #expected_events.append(('TopologyEvent', EVENT_REMOVE, json_topology_id(topology_uuid, context_id=context_id))) + + # ----- Delete Contexts and Validate Collected Events -------------------------------------------------------------- + for context in CONTEXTS: + context_id = context['context_id'] + context_uuid = context_id['context_uuid']['uuid'] + LOGGER.info('Deleting Context {:s}'.format(context_uuid)) + context_client.RemoveContext(ContextId(**context_id)) + #expected_events.append(('ContextEvent', EVENT_REMOVE, json_context_id(context_uuid))) diff --git a/hackfest/p4/tests/test_functional_create_service.py b/hackfest/p4/tests/test_functional_create_service.py new file mode 100644 index 0000000000000000000000000000000000000000..501536bdb6299091cf791438f60f7e48cb0b0626 --- /dev/null +++ b/hackfest/p4/tests/test_functional_create_service.py @@ -0,0 +1,62 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import copy, logging, pytest +from common.Settings import get_setting +from common.tests.EventTools import EVENT_CREATE, EVENT_UPDATE, check_events +from common.tools.object_factory.Context import json_context_id +from common.tools.object_factory.Device import json_device_id +from common.tools.object_factory.Link import json_link_id +from common.tools.object_factory.Topology import json_topology_id +from context.client.ContextClient import ContextClient +from context.client.EventsCollector import EventsCollector +from common.proto.context_pb2 import Context, ContextId, Device, Empty, Link, Topology +from device.client.DeviceClient import DeviceClient +from .Objects import CONTEXT_ID, CONTEXTS, DEVICES, LINKS, TOPOLOGIES +from common.proto.context_pb2 import ConfigActionEnum, Device, DeviceId,\ + DeviceOperationalStatusEnum + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +@pytest.fixture(scope='session') +def context_client(): + _client = ContextClient(get_setting('CONTEXTSERVICE_SERVICE_HOST'), get_setting('CONTEXTSERVICE_SERVICE_PORT_GRPC')) + yield _client + _client.close() + + +@pytest.fixture(scope='session') +def device_client(): + _client = DeviceClient(get_setting('DEVICESERVICE_SERVICE_HOST'), get_setting('DEVICESERVICE_SERVICE_PORT_GRPC')) + yield _client + _client.close() + +def test_rules_entry( + context_client : ContextClient, device_client : DeviceClient): # pylint: disable=redefined-outer-name + + # ----- Create Devices --------------------------------------------------------------- + for device, connect_rules, config_rules, _ in DEVICES: + # Enable device + device_p4_with_operational_status = copy.deepcopy(device) + device_p4_with_operational_status['device_operational_status'] = \ + DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED + device_client.ConfigureDevice(Device(**device_p4_with_operational_status)) + + device_data = context_client.GetDevice(DeviceId(**json_device_id('SW1'))) + + # Insert table entries + device_p4_with_config_rules = copy.deepcopy(device) + device_p4_with_config_rules['device_config']['config_rules'].extend(config_rules) + device_client.ConfigureDevice(Device(**device_p4_with_config_rules)) diff --git a/hackfest/p4/tests/test_functional_delete_service.py b/hackfest/p4/tests/test_functional_delete_service.py new file mode 100644 index 0000000000000000000000000000000000000000..1be7e324080befe8c7e4719f364201ef16772fc8 --- /dev/null +++ b/hackfest/p4/tests/test_functional_delete_service.py @@ -0,0 +1,58 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import copy, logging, pytest +from common.Settings import get_setting +from common.tests.EventTools import EVENT_REMOVE, check_events +from common.tools.object_factory.Context import json_context_id +from common.tools.object_factory.Device import json_device_id +from common.tools.object_factory.Link import json_link_id +from common.tools.object_factory.Topology import json_topology_id +from context.client.ContextClient import ContextClient +from context.client.EventsCollector import EventsCollector +from common.proto.context_pb2 import ConfigActionEnum, ContextId, Device, DeviceId, Empty, LinkId, TopologyId, DeviceOperationalStatusEnum +from device.client.DeviceClient import DeviceClient +from .Objects import CONTEXT_ID, CONTEXTS, DEVICES, LINKS, TOPOLOGIES + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + + +@pytest.fixture(scope='session') +def context_client(): + _client = ContextClient(get_setting('CONTEXTSERVICE_SERVICE_HOST'), get_setting('CONTEXTSERVICE_SERVICE_PORT_GRPC')) + yield _client + _client.close() + + +@pytest.fixture(scope='session') +def device_client(): + _client = DeviceClient(get_setting('DEVICESERVICE_SERVICE_HOST'), get_setting('DEVICESERVICE_SERVICE_PORT_GRPC')) + yield _client + _client.close() + +def test_rules_delete( + context_client : ContextClient, device_client : DeviceClient): # pylint: disable=redefined-outer-name + + # ----- Delete Devices and Validate Collected Events --------------------------------------------------------------- + for device, _, _, deconf_rules in DEVICES: + + device_p4_with_deconf_rules = copy.deepcopy(device) + device_p4_with_deconf_rules['device_config']['config_rules'].extend(deconf_rules) + device_client.ConfigureDevice(Device(**device_p4_with_deconf_rules)) + + device_p4_with_operational_status = copy.deepcopy(device) + device_p4_with_operational_status['device_operational_status'] = \ + DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_DISABLED + device_client.ConfigureDevice(Device(**device_p4_with_operational_status)) diff --git a/hackfest/restconf/commands.txt b/hackfest/restconf/commands.txt new file mode 100644 index 0000000000000000000000000000000000000000..2eac80cf60d58675981983c722bb7d2fdcbd84bf --- /dev/null +++ b/hackfest/restconf/commands.txt @@ -0,0 +1,48 @@ +== RESTCONF + +=== YANG2SWAGGER + +$ cd ~/tfs-ctrl/hackfest/restconf +(if needed) +$ wget https://github.com/bartoszm/yang2swagger/releases/download/1.1.11/swagger-generator-cli-1.1.11-executable.jar + +Generate swagger files: +$ java -jar swagger-generator-cli-1.1.11-executable.jar -yang-dir ../yang/ -output topology.yaml topology +$ java -jar swagger-generator-cli-1.1.11-executable.jar -yang-dir ../yang/ -output connection.yaml connection + + + +=== SERVER +$ cd ~/tfs-ctrl/hackfest/restconf +(if needed) +$ wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.11/swagger-codegen-cli-3.0.11.jar -O swagger-codegen-cli.jar + +Create the server: +$ mkdir ~/tfs-ctrl/hackfest/restconf/server +$ java -jar swagger-codegen-cli.jar generate -i connection.yaml -l python-flask -o server + +Run the server: +$ cd ~/tfs-ctrl/hackfest/restconf/server +$ pip3 install -r requirements.txt +(Open ~/tfs-ctrl/hackfest/restconf/server/swagger_server/swagger/swagger.yaml and modify all: "name: connection_id" for "name: connection-id") +RUN AUTOGENERATED SERVER +$ python3 -m swagger_server + +(you have the solution in ~/tfs-ctrl/hackfest/restconf/connectionserver ) + +RUN CURL AS CLIENT (In another window) +$ cd ~/tfs-ctrl/hackfest/restconf/ +$ curl -X POST -H "Content-Type: application/yang-data+json" http://127.0.0.1:8080/data/connection/ -d@conn1.json +$ curl -X GET -H "Content-Type: application/yang-data+json" http://127.0.0.1:8080/data/connection=0/ +$ curl -X DELETE -H "Content-Type: application/yang-data+json" http://127.0.0.1:8080/data/connection=0/ + + +=== Exercise: RESTCONF TOPOLOGY === +$ mkdir ~/tfs-ctrl/hackfest/restconf/topologyserver +$ java -jar swagger-codegen-cli.jar generate -i topology.yaml -l python-flask -o topologyserver +$ cd ~/tfs-ctrl/hackfest/restconf/topologyserver +(Open ~/tfs-ctrl/hackfest/restconf/topologyserver/swagger_server/swagger/swagger.yaml and modify all: "name: link_id" for "name: link-id", same for node and port) +$ python3 -m swagger_server + +RUN CURL AS CLIENT (In another window) +$curl -X GET -H "Content-Type: application/yang-data+json" http://127.0.0.1:8080/data/topology/ diff --git a/hackfest/restconf/conn1.json b/hackfest/restconf/conn1.json new file mode 100644 index 0000000000000000000000000000000000000000..e541b477c2bef70d2f02ab988e2c599e20405c67 --- /dev/null +++ b/hackfest/restconf/conn1.json @@ -0,0 +1,7 @@ +{ + "source-node" : "node1", + "target-node" : "node2", + "source-port" : "node1portA", + "target-port" : "node2portA", + "bandwidth" : 10 +} \ No newline at end of file diff --git a/hackfest/restconf/connection.yaml b/hackfest/restconf/connection.yaml new file mode 100644 index 0000000000000000000000000000000000000000..abc119f26cee8be17d91cb036f5b5dcf37a8331d --- /dev/null +++ b/hackfest/restconf/connection.yaml @@ -0,0 +1,138 @@ +--- +swagger: "2.0" +info: + description: "connection API generated from yang definitions" + version: "1.0" + title: "connection API" +host: "localhost:1234" +consumes: +- "application/yang-data+json" +produces: +- "application/yang-data+json" +paths: + /data/connection/: + post: + tags: + - "connection" + description: "creates connection.Connection" + parameters: + - in: "body" + name: "connection.Connection.body-param" + description: "connection.Connection to be added to list" + required: false + schema: + $ref: "#/definitions/connection.Connection" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/connection={connection-id}/: + get: + tags: + - "connection" + description: "returns connection.Connection" + parameters: + - name: "connection-id" + in: "path" + description: "Id of connection" + required: true + type: "string" + responses: + 200: + description: "connection.Connection" + schema: + $ref: "#/definitions/connection.Connection" + 400: + description: "Internal error" + post: + tags: + - "connection" + description: "creates connection.Connection" + parameters: + - name: "connection-id" + in: "path" + description: "Id of connection" + required: true + type: "string" + - in: "body" + name: "connection.Connection.body-param" + description: "connection.Connection to be added to list" + required: false + schema: + $ref: "#/definitions/connection.Connection" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "connection" + description: "creates or updates connection.Connection" + parameters: + - name: "connection-id" + in: "path" + description: "Id of connection" + required: true + type: "string" + - in: "body" + name: "connection.Connection.body-param" + description: "connection.Connection to be added or updated" + required: false + schema: + $ref: "#/definitions/connection.Connection" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "connection" + description: "removes connection.Connection" + parameters: + - name: "connection-id" + in: "path" + description: "Id of connection" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" +definitions: + connection.Connection: + type: "object" + properties: + target-port: + type: "string" + x-path: "/topology:topology/topology:node/topology:port/topology:port-id" + source-port: + type: "string" + x-path: "/topology:topology/topology:node/topology:port/topology:port-id" + target-node: + type: "string" + x-path: "/topology:topology/topology:node/topology:node-id" + connection-id: + type: "string" + bandwidth: + type: "integer" + format: "int64" + source-node: + type: "string" + x-path: "/topology:topology/topology:node/topology:node-id" + layer-protocol-name: + $ref: "#/definitions/topology.LayerProtocolName" + topology.LayerProtocolName: + type: "string" + enum: + - "ETH" + - "OPTICAL" diff --git a/hackfest/restconf/connectionserver/.dockerignore b/hackfest/restconf/connectionserver/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..cdd823e64e7e91ae85da84f22410ecb7eb370ae2 --- /dev/null +++ b/hackfest/restconf/connectionserver/.dockerignore @@ -0,0 +1,72 @@ +.travis.yaml +.swagger-codegen-ignore +README.md +tox.ini +git_push.sh +test-requirements.txt +setup.py + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +venv/ +.python-version + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints diff --git a/hackfest/restconf/connectionserver/.gitignore b/hackfest/restconf/connectionserver/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a655050c2631466828b5b8bfc59ae27f9ac02dc5 --- /dev/null +++ b/hackfest/restconf/connectionserver/.gitignore @@ -0,0 +1,64 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +venv/ +.python-version + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints diff --git a/hackfest/restconf/connectionserver/.swagger-codegen-ignore b/hackfest/restconf/connectionserver/.swagger-codegen-ignore new file mode 100644 index 0000000000000000000000000000000000000000..c5fa491b4c557bf997d5dd21797de782545dc9e5 --- /dev/null +++ b/hackfest/restconf/connectionserver/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/hackfest/restconf/connectionserver/.swagger-codegen/VERSION b/hackfest/restconf/connectionserver/.swagger-codegen/VERSION new file mode 100644 index 0000000000000000000000000000000000000000..e4a0720dd5141073dced1d64dddb6afd14bf26d3 --- /dev/null +++ b/hackfest/restconf/connectionserver/.swagger-codegen/VERSION @@ -0,0 +1 @@ +3.0.11 \ No newline at end of file diff --git a/hackfest/restconf/connectionserver/.travis.yml b/hackfest/restconf/connectionserver/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..dd6c4450aa902ae68479c3d76d45145e18d6052e --- /dev/null +++ b/hackfest/restconf/connectionserver/.travis.yml @@ -0,0 +1,13 @@ +# ref: https://docs.travis-ci.com/user/languages/python +language: python +python: + - "3.2" + - "3.3" + - "3.4" + - "3.5" + #- "3.5-dev" # 3.5 development branch + #- "nightly" # points to the latest development branch e.g. 3.6-dev +# command to install dependencies +install: "pip install -r requirements.txt" +# command to run tests +script: nosetests diff --git a/hackfest/restconf/connectionserver/Dockerfile b/hackfest/restconf/connectionserver/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..f9243a5ad0d025c5481e5a81bac213f716242100 --- /dev/null +++ b/hackfest/restconf/connectionserver/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.6-alpine + +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +COPY requirements.txt /usr/src/app/ + +RUN pip3 install --no-cache-dir -r requirements.txt + +COPY . /usr/src/app + +EXPOSE 8080 + +ENTRYPOINT ["python3"] + +CMD ["-m", "swagger_server"] \ No newline at end of file diff --git a/hackfest/restconf/connectionserver/README.md b/hackfest/restconf/connectionserver/README.md new file mode 100644 index 0000000000000000000000000000000000000000..857c30a462c3dbad326a7d0a6b7b278f36fb9bd9 --- /dev/null +++ b/hackfest/restconf/connectionserver/README.md @@ -0,0 +1,49 @@ +# Swagger generated server + +## Overview +This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the +[OpenAPI-Spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This +is an example of building a swagger-enabled Flask server. + +This example uses the [Connexion](https://github.com/zalando/connexion) library on top of Flask. + +## Requirements +Python 3.5.2+ + +## Usage +To run the server, please execute the following from the root directory: + +``` +pip3 install -r requirements.txt +python3 -m swagger_server +``` + +and open your browser to here: + +``` +http://localhost:8080/ui/ +``` + +Your Swagger definition lives here: + +``` +http://localhost:8080/swagger.json +``` + +To launch the integration tests, use tox: +``` +sudo pip install tox +tox +``` + +## Running with Docker + +To run the server on a Docker container, please execute the following from the root directory: + +```bash +# building the image +docker build -t swagger_server . + +# starting up a container +docker run -p 8080:8080 swagger_server +``` \ No newline at end of file diff --git a/hackfest/restconf/connectionserver/git_push.sh b/hackfest/restconf/connectionserver/git_push.sh new file mode 100644 index 0000000000000000000000000000000000000000..160f6f213999c7ae67839fbd6fc2ba0b72675832 --- /dev/null +++ b/hackfest/restconf/connectionserver/git_push.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/hackfest/restconf/connectionserver/requirements.txt b/hackfest/restconf/connectionserver/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..b5bc506572753f5a29d2c1115a6ac15f34f09be8 --- /dev/null +++ b/hackfest/restconf/connectionserver/requirements.txt @@ -0,0 +1,3 @@ +connexion == 2.2.0 +python_dateutil == 2.6.0 +setuptools >= 21.0.0 diff --git a/hackfest/restconf/connectionserver/setup.py b/hackfest/restconf/connectionserver/setup.py new file mode 100644 index 0000000000000000000000000000000000000000..ba555c8a10b6e535508e81429887aa00e30d3c1a --- /dev/null +++ b/hackfest/restconf/connectionserver/setup.py @@ -0,0 +1,33 @@ +# coding: utf-8 + +import sys +from setuptools import setup, find_packages + +NAME = "swagger_server" +VERSION = "1.0.0" +# To install the library, run the following +# +# python setup.py install +# +# prerequisite: setuptools +# http://pypi.python.org/pypi/setuptools + +REQUIRES = ["connexion"] + +setup( + name=NAME, + version=VERSION, + description="connection API", + author_email="", + url="", + keywords=["Swagger", "connection API"], + install_requires=REQUIRES, + packages=find_packages(), + package_data={'': ['swagger/swagger.yaml']}, + include_package_data=True, + entry_points={ + 'console_scripts': ['swagger_server=swagger_server.__main__:main']}, + long_description="""\ + connection API generated from yang definitions + """ +) diff --git a/hackfest/restconf/connectionserver/swagger_server/__init__.py b/hackfest/restconf/connectionserver/swagger_server/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/hackfest/restconf/connectionserver/swagger_server/__main__.py b/hackfest/restconf/connectionserver/swagger_server/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..db49e4dcca3214b032f8dbd2a64f064dd685b389 --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/__main__.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +import connexion + +from swagger_server import encoder + + +def main(): + app = connexion.App(__name__, specification_dir='./swagger/') + app.app.json_encoder = encoder.JSONEncoder + app.app.config['JSON_SORT_KEYS']=False + app.add_api('swagger.yaml', arguments={'title': 'connection API'}, pythonic_params=True) + app.run(port=8080) + + +if __name__ == '__main__': + main() diff --git a/hackfest/restconf/connectionserver/swagger_server/controllers/__init__.py b/hackfest/restconf/connectionserver/swagger_server/controllers/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/hackfest/restconf/connectionserver/swagger_server/controllers/authorization_controller.py b/hackfest/restconf/connectionserver/swagger_server/controllers/authorization_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..2f7b0bb3e281b3fb9efb588dfc8ba4c8cc3a59ed --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/controllers/authorization_controller.py @@ -0,0 +1,6 @@ +from typing import List +""" +controller generated to handled auth operation described at: +https://connexion.readthedocs.io/en/latest/security.html +""" + diff --git a/hackfest/restconf/connectionserver/swagger_server/controllers/connection_controller.py b/hackfest/restconf/connectionserver/swagger_server/controllers/connection_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..8caa1e2ebe210c03791c13511cd555f333c5cf61 --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/controllers/connection_controller.py @@ -0,0 +1,89 @@ +import connexion +import six +import swagger_server.database as database + +from swagger_server.models.connection_connection import ConnectionConnection # noqa: E501 +from swagger_server import util + + +def data_connection_post(body=None): # noqa: E501 + """data_connection_post + + creates connection.Connection # noqa: E501 + + :param body: connection.Connection to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = ConnectionConnection.from_dict(connexion.request.get_json()) + body.connection_id=str(database.last_connection_id) + database.connection[str(database.last_connection_id)] = body + database.last_connection_id+=1 + return body + + +def data_connectionconnection_id_delete(connection_id): # noqa: E501 + """data_connectionconnection_id_delete + + removes connection.Connection # noqa: E501 + + :param connection_id: Id of connection + :type connection_id: str + + :rtype: None + """ + del database.connection[connection_id] + return 'ok' + + + +def data_connectionconnection_id_get(connection_id): # noqa: E501 + """data_connectionconnection_id_get + + returns connection.Connection # noqa: E501 + + :param connection_id: Id of connection + :type connection_id: str + + :rtype: ConnectionConnection + """ + print(database.connection) + if connection_id in database.connection: + return database.connection[connection_id] + return "Error", 400 + + +def data_connectionconnection_id_post(connection_id, body=None): # noqa: E501 + """data_connectionconnection_id_post + + creates connection.Connection # noqa: E501 + + :param connection_id: Id of connection + :type connection_id: str + :param body: connection.Connection to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = ConnectionConnection.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_connectionconnection_id_put(connection_id, body=None): # noqa: E501 + """data_connectionconnection_id_put + + creates or updates connection.Connection # noqa: E501 + + :param connection_id: Id of connection + :type connection_id: str + :param body: connection.Connection to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = ConnectionConnection.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' diff --git a/hackfest/restconf/connectionserver/swagger_server/database.py b/hackfest/restconf/connectionserver/swagger_server/database.py new file mode 100644 index 0000000000000000000000000000000000000000..9a5ea9fb27287e734eb72af4e9c8958b854801c7 --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/database.py @@ -0,0 +1,7 @@ +#!/usr/bin/env python3 + +from swagger_server.models.connection_connection import ConnectionConnection + +connection = {} +last_connection_id = 0 + diff --git a/hackfest/restconf/connectionserver/swagger_server/encoder.py b/hackfest/restconf/connectionserver/swagger_server/encoder.py new file mode 100644 index 0000000000000000000000000000000000000000..61ba4721961a65d38af5d5ce2948b0abe9c7aa58 --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/encoder.py @@ -0,0 +1,20 @@ +from connexion.apps.flask_app import FlaskJSONEncoder +import six + +from swagger_server.models.base_model_ import Model + + +class JSONEncoder(FlaskJSONEncoder): + include_nulls = False + + def default(self, o): + if isinstance(o, Model): + dikt = {} + for attr, _ in six.iteritems(o.swagger_types): + value = getattr(o, attr) + if value is None and not self.include_nulls: + continue + attr = o.attribute_map[attr] + dikt[attr] = value + return dikt + return FlaskJSONEncoder.default(self, o) diff --git a/hackfest/restconf/connectionserver/swagger_server/models/__init__.py b/hackfest/restconf/connectionserver/swagger_server/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..4df84643893fc3e509f355a8d47e4e1c653f8109 --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/models/__init__.py @@ -0,0 +1,7 @@ +# coding: utf-8 + +# flake8: noqa +from __future__ import absolute_import +# import models into model package +from swagger_server.models.connection_connection import ConnectionConnection +from swagger_server.models.topology_layer_protocol_name import TopologyLayerProtocolName diff --git a/hackfest/restconf/connectionserver/swagger_server/models/base_model_.py b/hackfest/restconf/connectionserver/swagger_server/models/base_model_.py new file mode 100644 index 0000000000000000000000000000000000000000..97999c3d3237c287013b2139acb9858a52b454e8 --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/models/base_model_.py @@ -0,0 +1,69 @@ +import pprint + +import six +import typing + +from swagger_server import util + +T = typing.TypeVar('T') + + +class Model(object): + # swaggerTypes: The key is attribute name and the + # value is attribute type. + swagger_types = {} + + # attributeMap: The key is attribute name and the + # value is json key in definition. + attribute_map = {} + + @classmethod + def from_dict(cls: typing.Type[T], dikt) -> T: + """Returns the dict as a model""" + return util.deserialize_model(dikt, cls) + + def to_dict(self): + """Returns the model properties as a dict + + :rtype: dict + """ + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Returns the string representation of the model + + :rtype: str + """ + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/hackfest/restconf/connectionserver/swagger_server/models/connection_connection.py b/hackfest/restconf/connectionserver/swagger_server/models/connection_connection.py new file mode 100644 index 0000000000000000000000000000000000000000..6d6ab83afa2600cd4f42b12dee80a572f9bf8024 --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/models/connection_connection.py @@ -0,0 +1,219 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server.models.topology_layer_protocol_name import TopologyLayerProtocolName # noqa: F401,E501 +from swagger_server import util + + +class ConnectionConnection(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, target_port: str=None, source_port: str=None, target_node: str=None, connection_id: str=None, bandwidth: int=None, source_node: str=None, layer_protocol_name: TopologyLayerProtocolName=None): # noqa: E501 + """ConnectionConnection - a model defined in Swagger + + :param target_port: The target_port of this ConnectionConnection. # noqa: E501 + :type target_port: str + :param source_port: The source_port of this ConnectionConnection. # noqa: E501 + :type source_port: str + :param target_node: The target_node of this ConnectionConnection. # noqa: E501 + :type target_node: str + :param connection_id: The connection_id of this ConnectionConnection. # noqa: E501 + :type connection_id: str + :param bandwidth: The bandwidth of this ConnectionConnection. # noqa: E501 + :type bandwidth: int + :param source_node: The source_node of this ConnectionConnection. # noqa: E501 + :type source_node: str + :param layer_protocol_name: The layer_protocol_name of this ConnectionConnection. # noqa: E501 + :type layer_protocol_name: TopologyLayerProtocolName + """ + self.swagger_types = { + 'target_port': str, + 'source_port': str, + 'target_node': str, + 'connection_id': str, + 'bandwidth': int, + 'source_node': str, + 'layer_protocol_name': TopologyLayerProtocolName + } + + self.attribute_map = { + 'target_port': 'target-port', + 'source_port': 'source-port', + 'target_node': 'target-node', + 'connection_id': 'connection-id', + 'bandwidth': 'bandwidth', + 'source_node': 'source-node', + 'layer_protocol_name': 'layer-protocol-name' + } + self._target_port = target_port + self._source_port = source_port + self._target_node = target_node + self._connection_id = connection_id + self._bandwidth = bandwidth + self._source_node = source_node + self._layer_protocol_name = layer_protocol_name + + @classmethod + def from_dict(cls, dikt) -> 'ConnectionConnection': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The connection.Connection of this ConnectionConnection. # noqa: E501 + :rtype: ConnectionConnection + """ + return util.deserialize_model(dikt, cls) + + @property + def target_port(self) -> str: + """Gets the target_port of this ConnectionConnection. + + + :return: The target_port of this ConnectionConnection. + :rtype: str + """ + return self._target_port + + @target_port.setter + def target_port(self, target_port: str): + """Sets the target_port of this ConnectionConnection. + + + :param target_port: The target_port of this ConnectionConnection. + :type target_port: str + """ + + self._target_port = target_port + + @property + def source_port(self) -> str: + """Gets the source_port of this ConnectionConnection. + + + :return: The source_port of this ConnectionConnection. + :rtype: str + """ + return self._source_port + + @source_port.setter + def source_port(self, source_port: str): + """Sets the source_port of this ConnectionConnection. + + + :param source_port: The source_port of this ConnectionConnection. + :type source_port: str + """ + + self._source_port = source_port + + @property + def target_node(self) -> str: + """Gets the target_node of this ConnectionConnection. + + + :return: The target_node of this ConnectionConnection. + :rtype: str + """ + return self._target_node + + @target_node.setter + def target_node(self, target_node: str): + """Sets the target_node of this ConnectionConnection. + + + :param target_node: The target_node of this ConnectionConnection. + :type target_node: str + """ + + self._target_node = target_node + + @property + def connection_id(self) -> str: + """Gets the connection_id of this ConnectionConnection. + + + :return: The connection_id of this ConnectionConnection. + :rtype: str + """ + return self._connection_id + + @connection_id.setter + def connection_id(self, connection_id: str): + """Sets the connection_id of this ConnectionConnection. + + + :param connection_id: The connection_id of this ConnectionConnection. + :type connection_id: str + """ + + self._connection_id = connection_id + + @property + def bandwidth(self) -> int: + """Gets the bandwidth of this ConnectionConnection. + + + :return: The bandwidth of this ConnectionConnection. + :rtype: int + """ + return self._bandwidth + + @bandwidth.setter + def bandwidth(self, bandwidth: int): + """Sets the bandwidth of this ConnectionConnection. + + + :param bandwidth: The bandwidth of this ConnectionConnection. + :type bandwidth: int + """ + + self._bandwidth = bandwidth + + @property + def source_node(self) -> str: + """Gets the source_node of this ConnectionConnection. + + + :return: The source_node of this ConnectionConnection. + :rtype: str + """ + return self._source_node + + @source_node.setter + def source_node(self, source_node: str): + """Sets the source_node of this ConnectionConnection. + + + :param source_node: The source_node of this ConnectionConnection. + :type source_node: str + """ + + self._source_node = source_node + + @property + def layer_protocol_name(self) -> TopologyLayerProtocolName: + """Gets the layer_protocol_name of this ConnectionConnection. + + + :return: The layer_protocol_name of this ConnectionConnection. + :rtype: TopologyLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TopologyLayerProtocolName): + """Sets the layer_protocol_name of this ConnectionConnection. + + + :param layer_protocol_name: The layer_protocol_name of this ConnectionConnection. + :type layer_protocol_name: TopologyLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name diff --git a/hackfest/restconf/connectionserver/swagger_server/models/topology_layer_protocol_name.py b/hackfest/restconf/connectionserver/swagger_server/models/topology_layer_protocol_name.py new file mode 100644 index 0000000000000000000000000000000000000000..2ea9beed2bf84b9288fb5829ebcabd2440d5a81b --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/models/topology_layer_protocol_name.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server import util + + +class TopologyLayerProtocolName(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + ETH = "ETH" + OPTICAL = "OPTICAL" + def __init__(self): # noqa: E501 + """TopologyLayerProtocolName - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TopologyLayerProtocolName': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The topology.LayerProtocolName of this TopologyLayerProtocolName. # noqa: E501 + :rtype: TopologyLayerProtocolName + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/restconf/connectionserver/swagger_server/swagger/swagger.yaml b/hackfest/restconf/connectionserver/swagger_server/swagger/swagger.yaml new file mode 100644 index 0000000000000000000000000000000000000000..85af552040a86c147fdc96fc0f602f33046686a0 --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/swagger/swagger.yaml @@ -0,0 +1,174 @@ +openapi: 3.0.1 +info: + title: connection API + description: connection API generated from yang definitions + version: "1.0" +servers: +- url: //localhost:1234/ +paths: + /data/connection/: + post: + tags: + - connection + description: creates connection.Connection + operationId: data_connection_post + requestBody: + description: connection.Connection to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/connection.Connection' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.connection_controller + /data/connection={connection-id}/: + get: + tags: + - connection + description: returns connection.Connection + operationId: data_connectionconnection_id_get + parameters: + - name: connection-id + in: path + description: Id of connection + required: true + schema: + type: string + responses: + 200: + description: connection.Connection + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/connection.Connection' + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.connection_controller + put: + tags: + - connection + description: creates or updates connection.Connection + operationId: data_connectionconnection_id_put + parameters: + - name: connection-id + in: path + description: Id of connection + required: true + schema: + type: string + requestBody: + description: connection.Connection to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/connection.Connection' + required: false + responses: + 201: + description: Object created + content: {} + 204: + description: Object modified + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.connection_controller + post: + tags: + - connection + description: creates connection.Connection + operationId: data_connectionconnection_id_post + parameters: + - name: connection-id + in: path + description: Id of connection + required: true + schema: + type: string + requestBody: + description: connection.Connection to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/connection.Connection' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.connection_controller + delete: + tags: + - connection + description: removes connection.Connection + operationId: data_connectionconnection_id_delete + parameters: + - name: connection-id + in: path + description: Id of connection + required: true + schema: + type: string + responses: + 204: + description: Object deleted + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.connection_controller +components: + schemas: + connection.Connection: + type: object + properties: + target-port: + type: string + x-path: /topology:topology/topology:node/topology:port/topology:port-id + source-port: + type: string + x-path: /topology:topology/topology:node/topology:port/topology:port-id + target-node: + type: string + x-path: /topology:topology/topology:node/topology:node-id + connection-id: + type: string + bandwidth: + type: integer + format: int64 + source-node: + type: string + x-path: /topology:topology/topology:node/topology:node-id + layer-protocol-name: + $ref: '#/components/schemas/topology.LayerProtocolName' + example: + target-port: target-port + source-port: source-port + target-node: target-node + connection-id: connection-id + bandwidth: 0 + source-node: source-node + layer-protocol-name: ETH + topology.LayerProtocolName: + type: string + enum: + - ETH + - OPTICAL + diff --git a/hackfest/restconf/connectionserver/swagger_server/test/__init__.py b/hackfest/restconf/connectionserver/swagger_server/test/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..644506301ce077f2e881fcda3454b6cba362ab5e --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/test/__init__.py @@ -0,0 +1,16 @@ +import logging + +import connexion +from flask_testing import TestCase + +from swagger_server.encoder import JSONEncoder + + +class BaseTestCase(TestCase): + + def create_app(self): + logging.getLogger('connexion.operation').setLevel('ERROR') + app = connexion.App(__name__, specification_dir='../swagger/') + app.app.json_encoder = JSONEncoder + app.add_api('swagger.yaml') + return app.app diff --git a/hackfest/restconf/connectionserver/swagger_server/test/test_connection_controller.py b/hackfest/restconf/connectionserver/swagger_server/test/test_connection_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..325dad4852c3583f0067499c177b56b1d7c569b7 --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/test/test_connection_controller.py @@ -0,0 +1,82 @@ +# coding: utf-8 + +from __future__ import absolute_import + +from flask import json +from six import BytesIO + +from swagger_server.models.connection_connection import ConnectionConnection # noqa: E501 +from swagger_server.test import BaseTestCase + + +class TestConnectionController(BaseTestCase): + """ConnectionController integration test stubs""" + + def test_data_connection_post(self): + """Test case for data_connection_post + + + """ + body = ConnectionConnection() + response = self.client.open( + '/data/connection/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_connectionconnection_id_delete(self): + """Test case for data_connectionconnection_id_delete + + + """ + response = self.client.open( + '/data/connection={connection-id}/'.format(connection_id='connection_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_connectionconnection_id_get(self): + """Test case for data_connectionconnection_id_get + + + """ + response = self.client.open( + '/data/connection={connection-id}/'.format(connection_id='connection_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_connectionconnection_id_post(self): + """Test case for data_connectionconnection_id_post + + + """ + body = ConnectionConnection() + response = self.client.open( + '/data/connection={connection-id}/'.format(connection_id='connection_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_connectionconnection_id_put(self): + """Test case for data_connectionconnection_id_put + + + """ + body = ConnectionConnection() + response = self.client.open( + '/data/connection={connection-id}/'.format(connection_id='connection_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + +if __name__ == '__main__': + import unittest + unittest.main() diff --git a/hackfest/restconf/connectionserver/swagger_server/util.py b/hackfest/restconf/connectionserver/swagger_server/util.py new file mode 100644 index 0000000000000000000000000000000000000000..527d1424c3d5563073b18b4da1a9904b2cb6b62b --- /dev/null +++ b/hackfest/restconf/connectionserver/swagger_server/util.py @@ -0,0 +1,141 @@ +import datetime + +import six +import typing + + +def _deserialize(data, klass): + """Deserializes dict, list, str into an object. + + :param data: dict, list or str. + :param klass: class literal, or string of class name. + + :return: object. + """ + if data is None: + return None + + if klass in six.integer_types or klass in (float, str, bool): + return _deserialize_primitive(data, klass) + elif klass == object: + return _deserialize_object(data) + elif klass == datetime.date: + return deserialize_date(data) + elif klass == datetime.datetime: + return deserialize_datetime(data) + elif type(klass) == typing.GenericMeta: + if klass.__extra__ == list: + return _deserialize_list(data, klass.__args__[0]) + if klass.__extra__ == dict: + return _deserialize_dict(data, klass.__args__[1]) + else: + return deserialize_model(data, klass) + + +def _deserialize_primitive(data, klass): + """Deserializes to primitive type. + + :param data: data to deserialize. + :param klass: class literal. + + :return: int, long, float, str, bool. + :rtype: int | long | float | str | bool + """ + try: + value = klass(data) + except UnicodeEncodeError: + value = six.u(data) + except TypeError: + value = data + return value + + +def _deserialize_object(value): + """Return a original value. + + :return: object. + """ + return value + + +def deserialize_date(string): + """Deserializes string to date. + + :param string: str. + :type string: str + :return: date. + :rtype: date + """ + try: + from dateutil.parser import parse + return parse(string).date() + except ImportError: + return string + + +def deserialize_datetime(string): + """Deserializes string to datetime. + + The string should be in iso8601 datetime format. + + :param string: str. + :type string: str + :return: datetime. + :rtype: datetime + """ + try: + from dateutil.parser import parse + return parse(string) + except ImportError: + return string + + +def deserialize_model(data, klass): + """Deserializes list or dict to model. + + :param data: dict, list. + :type data: dict | list + :param klass: class literal. + :return: model object. + """ + instance = klass() + + if not instance.swagger_types: + return data + + for attr, attr_type in six.iteritems(instance.swagger_types): + if data is not None \ + and instance.attribute_map[attr] in data \ + and isinstance(data, (list, dict)): + value = data[instance.attribute_map[attr]] + setattr(instance, attr, _deserialize(value, attr_type)) + + return instance + + +def _deserialize_list(data, boxed_type): + """Deserializes a list and its elements. + + :param data: list to deserialize. + :type data: list + :param boxed_type: class literal. + + :return: deserialized list. + :rtype: list + """ + return [_deserialize(sub_data, boxed_type) + for sub_data in data] + + +def _deserialize_dict(data, boxed_type): + """Deserializes a dict and its elements. + + :param data: dict to deserialize. + :type data: dict + :param boxed_type: class literal. + + :return: deserialized dict. + :rtype: dict + """ + return {k: _deserialize(v, boxed_type) + for k, v in six.iteritems(data)} diff --git a/hackfest/restconf/connectionserver/test-requirements.txt b/hackfest/restconf/connectionserver/test-requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..7f8d96e6b40e853d658f88fa745ddcf37ff7644c --- /dev/null +++ b/hackfest/restconf/connectionserver/test-requirements.txt @@ -0,0 +1,6 @@ +flask_testing==0.6.1 +coverage>=4.0.3 +nose>=1.3.7 +pluggy>=0.3.1 +py>=1.4.31 +randomize>=0.13 diff --git a/hackfest/restconf/connectionserver/tox.ini b/hackfest/restconf/connectionserver/tox.ini new file mode 100644 index 0000000000000000000000000000000000000000..3e0b644eec48f0d6d63f028c28315ca0eda5896f --- /dev/null +++ b/hackfest/restconf/connectionserver/tox.ini @@ -0,0 +1,10 @@ +[tox] +envlist = py35 + +[testenv] +deps=-r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +commands= + nosetests \ + [] \ No newline at end of file diff --git a/hackfest/restconf/swagger-codegen-cli.jar b/hackfest/restconf/swagger-codegen-cli.jar new file mode 100644 index 0000000000000000000000000000000000000000..25f1f6f6f77e43fc78812bd60428b859a48433f9 Binary files /dev/null and b/hackfest/restconf/swagger-codegen-cli.jar differ diff --git a/hackfest/restconf/swagger-generator-cli-1.1.11-executable.jar b/hackfest/restconf/swagger-generator-cli-1.1.11-executable.jar new file mode 100644 index 0000000000000000000000000000000000000000..d5aebe2734e7488f597418e724ed1abb611ad2d8 Binary files /dev/null and b/hackfest/restconf/swagger-generator-cli-1.1.11-executable.jar differ diff --git a/hackfest/restconf/topology.yaml b/hackfest/restconf/topology.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ebb0b7e3ca91597809aabddf0baea422d843db71 --- /dev/null +++ b/hackfest/restconf/topology.yaml @@ -0,0 +1,440 @@ +--- +swagger: "2.0" +info: + description: "topology API generated from yang definitions" + version: "1.0" + title: "topology API" +host: "localhost:1234" +consumes: +- "application/yang-data+json" +produces: +- "application/yang-data+json" +paths: + /data/topology/: + get: + tags: + - "topology" + description: "returns topology.Topology" + parameters: [] + responses: + 200: + description: "topology.Topology" + schema: + $ref: "#/definitions/topology.Topology" + 400: + description: "Internal error" + post: + tags: + - "topology" + description: "creates topology.Topology" + parameters: + - in: "body" + name: "topology.Topology.body-param" + description: "topology.Topology to be added to list" + required: false + schema: + $ref: "#/definitions/topology.Topology" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "topology" + description: "creates or updates topology.Topology" + parameters: + - in: "body" + name: "topology.Topology.body-param" + description: "topology.Topology to be added or updated" + required: false + schema: + $ref: "#/definitions/topology.Topology" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "topology" + description: "removes topology.Topology" + parameters: [] + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/topology/link/: + post: + tags: + - "topology" + description: "creates topology.Link" + parameters: + - in: "body" + name: "topology.Link.body-param" + description: "topology.Link to be added to list" + required: false + schema: + $ref: "#/definitions/topology.Link" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/topology/link={link-id}/: + get: + tags: + - "topology" + description: "returns topology.Link" + parameters: + - name: "link-id" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "topology.Link" + schema: + $ref: "#/definitions/topology.Link" + 400: + description: "Internal error" + post: + tags: + - "topology" + description: "creates topology.Link" + parameters: + - name: "link-id" + in: "path" + description: "Id of link" + required: true + type: "string" + - in: "body" + name: "topology.Link.body-param" + description: "topology.Link to be added to list" + required: false + schema: + $ref: "#/definitions/topology.Link" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "topology" + description: "creates or updates topology.Link" + parameters: + - name: "link-id" + in: "path" + description: "Id of link" + required: true + type: "string" + - in: "body" + name: "topology.Link.body-param" + description: "topology.Link to be added or updated" + required: false + schema: + $ref: "#/definitions/topology.Link" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "topology" + description: "removes topology.Link" + parameters: + - name: "link-id" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/topology/node/: + post: + tags: + - "topology" + description: "creates topology.Node" + parameters: + - in: "body" + name: "topology.Node.body-param" + description: "topology.Node to be added to list" + required: false + schema: + $ref: "#/definitions/topology.Node" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/topology/node={node-id}/: + get: + tags: + - "topology" + description: "returns topology.Node" + parameters: + - name: "node-id" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "topology.Node" + schema: + $ref: "#/definitions/topology.Node" + 400: + description: "Internal error" + post: + tags: + - "topology" + description: "creates topology.Node" + parameters: + - name: "node-id" + in: "path" + description: "Id of node" + required: true + type: "string" + - in: "body" + name: "topology.Node.body-param" + description: "topology.Node to be added to list" + required: false + schema: + $ref: "#/definitions/topology.Node" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "topology" + description: "creates or updates topology.Node" + parameters: + - name: "node-id" + in: "path" + description: "Id of node" + required: true + type: "string" + - in: "body" + name: "topology.Node.body-param" + description: "topology.Node to be added or updated" + required: false + schema: + $ref: "#/definitions/topology.Node" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "topology" + description: "removes topology.Node" + parameters: + - name: "node-id" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/topology/node={node-id}/port/: + post: + tags: + - "topology" + description: "creates topology.Port" + parameters: + - name: "node-id" + in: "path" + description: "Id of node" + required: true + type: "string" + - in: "body" + name: "topology.Port.body-param" + description: "topology.Port to be added to list" + required: false + schema: + $ref: "#/definitions/topology.Port" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/topology/node={node-id}/port={port-id}/: + get: + tags: + - "topology" + description: "returns topology.Port" + parameters: + - name: "node-id" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "port-id" + in: "path" + description: "Id of port" + required: true + type: "string" + responses: + 200: + description: "topology.Port" + schema: + $ref: "#/definitions/topology.Port" + 400: + description: "Internal error" + post: + tags: + - "topology" + description: "creates topology.Port" + parameters: + - name: "node-id" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "port-id" + in: "path" + description: "Id of port" + required: true + type: "string" + - in: "body" + name: "topology.Port.body-param" + description: "topology.Port to be added to list" + required: false + schema: + $ref: "#/definitions/topology.Port" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "topology" + description: "creates or updates topology.Port" + parameters: + - name: "node-id" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "port-id" + in: "path" + description: "Id of port" + required: true + type: "string" + - in: "body" + name: "topology.Port.body-param" + description: "topology.Port to be added or updated" + required: false + schema: + $ref: "#/definitions/topology.Port" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "topology" + description: "removes topology.Port" + parameters: + - name: "node-id" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "port-id" + in: "path" + description: "Id of port" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" +definitions: + topology.LayerProtocolName: + type: "string" + enum: + - "ETH" + - "OPTICAL" + topology.Link: + type: "object" + properties: + target-port: + type: "string" + x-path: "/topology/node/port/port-id" + source-port: + type: "string" + x-path: "/topology/node/port/port-id" + target-node: + type: "string" + x-path: "/topology/node/node-id" + link-id: + type: "string" + source-node: + type: "string" + x-path: "/topology/node/node-id" + topology.Node: + type: "object" + properties: + node-id: + type: "string" + port: + type: "array" + items: + $ref: "#/definitions/topology.Port" + topology.Port: + type: "object" + properties: + layer-protocol-name: + $ref: "#/definitions/topology.LayerProtocolName" + port-id: + type: "string" + topology.Topology: + type: "object" + properties: + link: + type: "array" + items: + $ref: "#/definitions/topology.Link" + node: + type: "array" + items: + $ref: "#/definitions/topology.Node" diff --git a/hackfest/restconf/topologyserver/.dockerignore b/hackfest/restconf/topologyserver/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..cdd823e64e7e91ae85da84f22410ecb7eb370ae2 --- /dev/null +++ b/hackfest/restconf/topologyserver/.dockerignore @@ -0,0 +1,72 @@ +.travis.yaml +.swagger-codegen-ignore +README.md +tox.ini +git_push.sh +test-requirements.txt +setup.py + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +venv/ +.python-version + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints diff --git a/hackfest/restconf/topologyserver/.gitignore b/hackfest/restconf/topologyserver/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a655050c2631466828b5b8bfc59ae27f9ac02dc5 --- /dev/null +++ b/hackfest/restconf/topologyserver/.gitignore @@ -0,0 +1,64 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +venv/ +.python-version + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints diff --git a/hackfest/restconf/topologyserver/.swagger-codegen-ignore b/hackfest/restconf/topologyserver/.swagger-codegen-ignore new file mode 100644 index 0000000000000000000000000000000000000000..c5fa491b4c557bf997d5dd21797de782545dc9e5 --- /dev/null +++ b/hackfest/restconf/topologyserver/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/hackfest/restconf/topologyserver/.swagger-codegen/VERSION b/hackfest/restconf/topologyserver/.swagger-codegen/VERSION new file mode 100644 index 0000000000000000000000000000000000000000..e4a0720dd5141073dced1d64dddb6afd14bf26d3 --- /dev/null +++ b/hackfest/restconf/topologyserver/.swagger-codegen/VERSION @@ -0,0 +1 @@ +3.0.11 \ No newline at end of file diff --git a/hackfest/restconf/topologyserver/.travis.yml b/hackfest/restconf/topologyserver/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..dd6c4450aa902ae68479c3d76d45145e18d6052e --- /dev/null +++ b/hackfest/restconf/topologyserver/.travis.yml @@ -0,0 +1,13 @@ +# ref: https://docs.travis-ci.com/user/languages/python +language: python +python: + - "3.2" + - "3.3" + - "3.4" + - "3.5" + #- "3.5-dev" # 3.5 development branch + #- "nightly" # points to the latest development branch e.g. 3.6-dev +# command to install dependencies +install: "pip install -r requirements.txt" +# command to run tests +script: nosetests diff --git a/hackfest/restconf/topologyserver/Dockerfile b/hackfest/restconf/topologyserver/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..f9243a5ad0d025c5481e5a81bac213f716242100 --- /dev/null +++ b/hackfest/restconf/topologyserver/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.6-alpine + +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +COPY requirements.txt /usr/src/app/ + +RUN pip3 install --no-cache-dir -r requirements.txt + +COPY . /usr/src/app + +EXPOSE 8080 + +ENTRYPOINT ["python3"] + +CMD ["-m", "swagger_server"] \ No newline at end of file diff --git a/hackfest/restconf/topologyserver/README.md b/hackfest/restconf/topologyserver/README.md new file mode 100644 index 0000000000000000000000000000000000000000..857c30a462c3dbad326a7d0a6b7b278f36fb9bd9 --- /dev/null +++ b/hackfest/restconf/topologyserver/README.md @@ -0,0 +1,49 @@ +# Swagger generated server + +## Overview +This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the +[OpenAPI-Spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This +is an example of building a swagger-enabled Flask server. + +This example uses the [Connexion](https://github.com/zalando/connexion) library on top of Flask. + +## Requirements +Python 3.5.2+ + +## Usage +To run the server, please execute the following from the root directory: + +``` +pip3 install -r requirements.txt +python3 -m swagger_server +``` + +and open your browser to here: + +``` +http://localhost:8080/ui/ +``` + +Your Swagger definition lives here: + +``` +http://localhost:8080/swagger.json +``` + +To launch the integration tests, use tox: +``` +sudo pip install tox +tox +``` + +## Running with Docker + +To run the server on a Docker container, please execute the following from the root directory: + +```bash +# building the image +docker build -t swagger_server . + +# starting up a container +docker run -p 8080:8080 swagger_server +``` \ No newline at end of file diff --git a/hackfest/restconf/topologyserver/git_push.sh b/hackfest/restconf/topologyserver/git_push.sh new file mode 100644 index 0000000000000000000000000000000000000000..160f6f213999c7ae67839fbd6fc2ba0b72675832 --- /dev/null +++ b/hackfest/restconf/topologyserver/git_push.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/hackfest/restconf/topologyserver/requirements.txt b/hackfest/restconf/topologyserver/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..b5bc506572753f5a29d2c1115a6ac15f34f09be8 --- /dev/null +++ b/hackfest/restconf/topologyserver/requirements.txt @@ -0,0 +1,3 @@ +connexion == 2.2.0 +python_dateutil == 2.6.0 +setuptools >= 21.0.0 diff --git a/hackfest/restconf/topologyserver/setup.py b/hackfest/restconf/topologyserver/setup.py new file mode 100644 index 0000000000000000000000000000000000000000..69a77b68664be2b9e6d2375fbcedbf88c3c1da06 --- /dev/null +++ b/hackfest/restconf/topologyserver/setup.py @@ -0,0 +1,33 @@ +# coding: utf-8 + +import sys +from setuptools import setup, find_packages + +NAME = "swagger_server" +VERSION = "1.0.0" +# To install the library, run the following +# +# python setup.py install +# +# prerequisite: setuptools +# http://pypi.python.org/pypi/setuptools + +REQUIRES = ["connexion"] + +setup( + name=NAME, + version=VERSION, + description="topology API", + author_email="", + url="", + keywords=["Swagger", "topology API"], + install_requires=REQUIRES, + packages=find_packages(), + package_data={'': ['swagger/swagger.yaml']}, + include_package_data=True, + entry_points={ + 'console_scripts': ['swagger_server=swagger_server.__main__:main']}, + long_description="""\ + topology API generated from yang definitions + """ +) diff --git a/hackfest/restconf/topologyserver/swagger_server/__init__.py b/hackfest/restconf/topologyserver/swagger_server/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/hackfest/restconf/topologyserver/swagger_server/__main__.py b/hackfest/restconf/topologyserver/swagger_server/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..752351aee00ec887d121457a3bba84206c731374 --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/__main__.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 + +import connexion + +from swagger_server import encoder + + +def main(): + app = connexion.App(__name__, specification_dir='./swagger/') + app.app.json_encoder = encoder.JSONEncoder + app.add_api('swagger.yaml', arguments={'title': 'topology API'}, pythonic_params=True) + app.run(port=8080) + + +if __name__ == '__main__': + main() diff --git a/hackfest/restconf/topologyserver/swagger_server/controllers/__init__.py b/hackfest/restconf/topologyserver/swagger_server/controllers/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/hackfest/restconf/topologyserver/swagger_server/controllers/authorization_controller.py b/hackfest/restconf/topologyserver/swagger_server/controllers/authorization_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..2f7b0bb3e281b3fb9efb588dfc8ba4c8cc3a59ed --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/controllers/authorization_controller.py @@ -0,0 +1,6 @@ +from typing import List +""" +controller generated to handled auth operation described at: +https://connexion.readthedocs.io/en/latest/security.html +""" + diff --git a/hackfest/restconf/topologyserver/swagger_server/controllers/topology_controller.py b/hackfest/restconf/topologyserver/swagger_server/controllers/topology_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..068c9385d00c4a3191a7729dffde45735474c0ef --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/controllers/topology_controller.py @@ -0,0 +1,295 @@ +import connexion +import six + +from swagger_server.models.topology_link import TopologyLink # noqa: E501 +from swagger_server.models.topology_node import TopologyNode # noqa: E501 +from swagger_server.models.topology_port import TopologyPort # noqa: E501 +from swagger_server.models.topology_topology import TopologyTopology # noqa: E501 +from swagger_server import util + + +def data_topology_delete(): # noqa: E501 + """data_topology_delete + + removes topology.Topology # noqa: E501 + + + :rtype: None + """ + return 'do some magic!' + + +def data_topology_get(): # noqa: E501 + """data_topology_get + + returns topology.Topology # noqa: E501 + + + :rtype: TopologyTopology + """ + return 'do some magic!' + + +def data_topology_link_post(body=None): # noqa: E501 + """data_topology_link_post + + creates topology.Link # noqa: E501 + + :param body: topology.Link to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyLink.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_linklink_id_delete(link_id): # noqa: E501 + """data_topology_linklink_id_delete + + removes topology.Link # noqa: E501 + + :param link_id: Id of link + :type link_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_topology_linklink_id_get(link_id): # noqa: E501 + """data_topology_linklink_id_get + + returns topology.Link # noqa: E501 + + :param link_id: Id of link + :type link_id: str + + :rtype: TopologyLink + """ + return 'do some magic!' + + +def data_topology_linklink_id_post(link_id, body=None): # noqa: E501 + """data_topology_linklink_id_post + + creates topology.Link # noqa: E501 + + :param link_id: Id of link + :type link_id: str + :param body: topology.Link to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyLink.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_linklink_id_put(link_id, body=None): # noqa: E501 + """data_topology_linklink_id_put + + creates or updates topology.Link # noqa: E501 + + :param link_id: Id of link + :type link_id: str + :param body: topology.Link to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyLink.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_node_post(body=None): # noqa: E501 + """data_topology_node_post + + creates topology.Node # noqa: E501 + + :param body: topology.Node to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyNode.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_nodenode_id_delete(node_id): # noqa: E501 + """data_topology_nodenode_id_delete + + removes topology.Node # noqa: E501 + + :param node_id: Id of node + :type node_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_topology_nodenode_id_get(node_id): # noqa: E501 + """data_topology_nodenode_id_get + + returns topology.Node # noqa: E501 + + :param node_id: Id of node + :type node_id: str + + :rtype: TopologyNode + """ + return 'do some magic!' + + +def data_topology_nodenode_id_port_post(node_id, body=None): # noqa: E501 + """data_topology_nodenode_id_port_post + + creates topology.Port # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param body: topology.Port to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyPort.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_nodenode_id_portport_id_delete(node_id, port_id): # noqa: E501 + """data_topology_nodenode_id_portport_id_delete + + removes topology.Port # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param port_id: Id of port + :type port_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_topology_nodenode_id_portport_id_get(node_id, port_id): # noqa: E501 + """data_topology_nodenode_id_portport_id_get + + returns topology.Port # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param port_id: Id of port + :type port_id: str + + :rtype: TopologyPort + """ + return 'do some magic!' + + +def data_topology_nodenode_id_portport_id_post(node_id, port_id, body=None): # noqa: E501 + """data_topology_nodenode_id_portport_id_post + + creates topology.Port # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param port_id: Id of port + :type port_id: str + :param body: topology.Port to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyPort.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_nodenode_id_portport_id_put(node_id, port_id, body=None): # noqa: E501 + """data_topology_nodenode_id_portport_id_put + + creates or updates topology.Port # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param port_id: Id of port + :type port_id: str + :param body: topology.Port to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyPort.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_nodenode_id_post(node_id, body=None): # noqa: E501 + """data_topology_nodenode_id_post + + creates topology.Node # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param body: topology.Node to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyNode.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_nodenode_id_put(node_id, body=None): # noqa: E501 + """data_topology_nodenode_id_put + + creates or updates topology.Node # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param body: topology.Node to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyNode.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_post(body=None): # noqa: E501 + """data_topology_post + + creates topology.Topology # noqa: E501 + + :param body: topology.Topology to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyTopology.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_put(body=None): # noqa: E501 + """data_topology_put + + creates or updates topology.Topology # noqa: E501 + + :param body: topology.Topology to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyTopology.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' diff --git a/hackfest/restconf/topologyserver/swagger_server/encoder.py b/hackfest/restconf/topologyserver/swagger_server/encoder.py new file mode 100644 index 0000000000000000000000000000000000000000..61ba4721961a65d38af5d5ce2948b0abe9c7aa58 --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/encoder.py @@ -0,0 +1,20 @@ +from connexion.apps.flask_app import FlaskJSONEncoder +import six + +from swagger_server.models.base_model_ import Model + + +class JSONEncoder(FlaskJSONEncoder): + include_nulls = False + + def default(self, o): + if isinstance(o, Model): + dikt = {} + for attr, _ in six.iteritems(o.swagger_types): + value = getattr(o, attr) + if value is None and not self.include_nulls: + continue + attr = o.attribute_map[attr] + dikt[attr] = value + return dikt + return FlaskJSONEncoder.default(self, o) diff --git a/hackfest/restconf/topologyserver/swagger_server/models/__init__.py b/hackfest/restconf/topologyserver/swagger_server/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..a2b223948a5b83c2ad25221d89643579e1e75f2a --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/models/__init__.py @@ -0,0 +1,10 @@ +# coding: utf-8 + +# flake8: noqa +from __future__ import absolute_import +# import models into model package +from swagger_server.models.topology_layer_protocol_name import TopologyLayerProtocolName +from swagger_server.models.topology_link import TopologyLink +from swagger_server.models.topology_node import TopologyNode +from swagger_server.models.topology_port import TopologyPort +from swagger_server.models.topology_topology import TopologyTopology diff --git a/hackfest/restconf/topologyserver/swagger_server/models/base_model_.py b/hackfest/restconf/topologyserver/swagger_server/models/base_model_.py new file mode 100644 index 0000000000000000000000000000000000000000..97999c3d3237c287013b2139acb9858a52b454e8 --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/models/base_model_.py @@ -0,0 +1,69 @@ +import pprint + +import six +import typing + +from swagger_server import util + +T = typing.TypeVar('T') + + +class Model(object): + # swaggerTypes: The key is attribute name and the + # value is attribute type. + swagger_types = {} + + # attributeMap: The key is attribute name and the + # value is json key in definition. + attribute_map = {} + + @classmethod + def from_dict(cls: typing.Type[T], dikt) -> T: + """Returns the dict as a model""" + return util.deserialize_model(dikt, cls) + + def to_dict(self): + """Returns the model properties as a dict + + :rtype: dict + """ + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Returns the string representation of the model + + :rtype: str + """ + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/hackfest/restconf/topologyserver/swagger_server/models/topology_layer_protocol_name.py b/hackfest/restconf/topologyserver/swagger_server/models/topology_layer_protocol_name.py new file mode 100644 index 0000000000000000000000000000000000000000..2ea9beed2bf84b9288fb5829ebcabd2440d5a81b --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/models/topology_layer_protocol_name.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server import util + + +class TopologyLayerProtocolName(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + ETH = "ETH" + OPTICAL = "OPTICAL" + def __init__(self): # noqa: E501 + """TopologyLayerProtocolName - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TopologyLayerProtocolName': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The topology.LayerProtocolName of this TopologyLayerProtocolName. # noqa: E501 + :rtype: TopologyLayerProtocolName + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/restconf/topologyserver/swagger_server/models/topology_link.py b/hackfest/restconf/topologyserver/swagger_server/models/topology_link.py new file mode 100644 index 0000000000000000000000000000000000000000..536e45c4201db476de7792d94711cd600803f17d --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/models/topology_link.py @@ -0,0 +1,166 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server import util + + +class TopologyLink(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, target_port: str=None, source_port: str=None, target_node: str=None, link_id: str=None, source_node: str=None): # noqa: E501 + """TopologyLink - a model defined in Swagger + + :param target_port: The target_port of this TopologyLink. # noqa: E501 + :type target_port: str + :param source_port: The source_port of this TopologyLink. # noqa: E501 + :type source_port: str + :param target_node: The target_node of this TopologyLink. # noqa: E501 + :type target_node: str + :param link_id: The link_id of this TopologyLink. # noqa: E501 + :type link_id: str + :param source_node: The source_node of this TopologyLink. # noqa: E501 + :type source_node: str + """ + self.swagger_types = { + 'target_port': str, + 'source_port': str, + 'target_node': str, + 'link_id': str, + 'source_node': str + } + + self.attribute_map = { + 'target_port': 'target-port', + 'source_port': 'source-port', + 'target_node': 'target-node', + 'link_id': 'link-id', + 'source_node': 'source-node' + } + self._target_port = target_port + self._source_port = source_port + self._target_node = target_node + self._link_id = link_id + self._source_node = source_node + + @classmethod + def from_dict(cls, dikt) -> 'TopologyLink': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The topology.Link of this TopologyLink. # noqa: E501 + :rtype: TopologyLink + """ + return util.deserialize_model(dikt, cls) + + @property + def target_port(self) -> str: + """Gets the target_port of this TopologyLink. + + + :return: The target_port of this TopologyLink. + :rtype: str + """ + return self._target_port + + @target_port.setter + def target_port(self, target_port: str): + """Sets the target_port of this TopologyLink. + + + :param target_port: The target_port of this TopologyLink. + :type target_port: str + """ + + self._target_port = target_port + + @property + def source_port(self) -> str: + """Gets the source_port of this TopologyLink. + + + :return: The source_port of this TopologyLink. + :rtype: str + """ + return self._source_port + + @source_port.setter + def source_port(self, source_port: str): + """Sets the source_port of this TopologyLink. + + + :param source_port: The source_port of this TopologyLink. + :type source_port: str + """ + + self._source_port = source_port + + @property + def target_node(self) -> str: + """Gets the target_node of this TopologyLink. + + + :return: The target_node of this TopologyLink. + :rtype: str + """ + return self._target_node + + @target_node.setter + def target_node(self, target_node: str): + """Sets the target_node of this TopologyLink. + + + :param target_node: The target_node of this TopologyLink. + :type target_node: str + """ + + self._target_node = target_node + + @property + def link_id(self) -> str: + """Gets the link_id of this TopologyLink. + + + :return: The link_id of this TopologyLink. + :rtype: str + """ + return self._link_id + + @link_id.setter + def link_id(self, link_id: str): + """Sets the link_id of this TopologyLink. + + + :param link_id: The link_id of this TopologyLink. + :type link_id: str + """ + + self._link_id = link_id + + @property + def source_node(self) -> str: + """Gets the source_node of this TopologyLink. + + + :return: The source_node of this TopologyLink. + :rtype: str + """ + return self._source_node + + @source_node.setter + def source_node(self, source_node: str): + """Sets the source_node of this TopologyLink. + + + :param source_node: The source_node of this TopologyLink. + :type source_node: str + """ + + self._source_node = source_node diff --git a/hackfest/restconf/topologyserver/swagger_server/models/topology_node.py b/hackfest/restconf/topologyserver/swagger_server/models/topology_node.py new file mode 100644 index 0000000000000000000000000000000000000000..811038a0c5876b6e46f0555866bf46af71930f75 --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/models/topology_node.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server.models.topology_port import TopologyPort # noqa: F401,E501 +from swagger_server import util + + +class TopologyNode(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node_id: str=None, port: List[TopologyPort]=None): # noqa: E501 + """TopologyNode - a model defined in Swagger + + :param node_id: The node_id of this TopologyNode. # noqa: E501 + :type node_id: str + :param port: The port of this TopologyNode. # noqa: E501 + :type port: List[TopologyPort] + """ + self.swagger_types = { + 'node_id': str, + 'port': List[TopologyPort] + } + + self.attribute_map = { + 'node_id': 'node-id', + 'port': 'port' + } + self._node_id = node_id + self._port = port + + @classmethod + def from_dict(cls, dikt) -> 'TopologyNode': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The topology.Node of this TopologyNode. # noqa: E501 + :rtype: TopologyNode + """ + return util.deserialize_model(dikt, cls) + + @property + def node_id(self) -> str: + """Gets the node_id of this TopologyNode. + + + :return: The node_id of this TopologyNode. + :rtype: str + """ + return self._node_id + + @node_id.setter + def node_id(self, node_id: str): + """Sets the node_id of this TopologyNode. + + + :param node_id: The node_id of this TopologyNode. + :type node_id: str + """ + + self._node_id = node_id + + @property + def port(self) -> List[TopologyPort]: + """Gets the port of this TopologyNode. + + + :return: The port of this TopologyNode. + :rtype: List[TopologyPort] + """ + return self._port + + @port.setter + def port(self, port: List[TopologyPort]): + """Sets the port of this TopologyNode. + + + :param port: The port of this TopologyNode. + :type port: List[TopologyPort] + """ + + self._port = port diff --git a/hackfest/restconf/topologyserver/swagger_server/models/topology_port.py b/hackfest/restconf/topologyserver/swagger_server/models/topology_port.py new file mode 100644 index 0000000000000000000000000000000000000000..7f6431baa9db534a2775171702db1c34cefcad15 --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/models/topology_port.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server.models.topology_layer_protocol_name import TopologyLayerProtocolName # noqa: F401,E501 +from swagger_server import util + + +class TopologyPort(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, layer_protocol_name: TopologyLayerProtocolName=None, port_id: str=None): # noqa: E501 + """TopologyPort - a model defined in Swagger + + :param layer_protocol_name: The layer_protocol_name of this TopologyPort. # noqa: E501 + :type layer_protocol_name: TopologyLayerProtocolName + :param port_id: The port_id of this TopologyPort. # noqa: E501 + :type port_id: str + """ + self.swagger_types = { + 'layer_protocol_name': TopologyLayerProtocolName, + 'port_id': str + } + + self.attribute_map = { + 'layer_protocol_name': 'layer-protocol-name', + 'port_id': 'port-id' + } + self._layer_protocol_name = layer_protocol_name + self._port_id = port_id + + @classmethod + def from_dict(cls, dikt) -> 'TopologyPort': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The topology.Port of this TopologyPort. # noqa: E501 + :rtype: TopologyPort + """ + return util.deserialize_model(dikt, cls) + + @property + def layer_protocol_name(self) -> TopologyLayerProtocolName: + """Gets the layer_protocol_name of this TopologyPort. + + + :return: The layer_protocol_name of this TopologyPort. + :rtype: TopologyLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TopologyLayerProtocolName): + """Sets the layer_protocol_name of this TopologyPort. + + + :param layer_protocol_name: The layer_protocol_name of this TopologyPort. + :type layer_protocol_name: TopologyLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def port_id(self) -> str: + """Gets the port_id of this TopologyPort. + + + :return: The port_id of this TopologyPort. + :rtype: str + """ + return self._port_id + + @port_id.setter + def port_id(self, port_id: str): + """Sets the port_id of this TopologyPort. + + + :param port_id: The port_id of this TopologyPort. + :type port_id: str + """ + + self._port_id = port_id diff --git a/hackfest/restconf/topologyserver/swagger_server/models/topology_topology.py b/hackfest/restconf/topologyserver/swagger_server/models/topology_topology.py new file mode 100644 index 0000000000000000000000000000000000000000..5f90f6fa52aade6732fdf9c0949b31e1550a6541 --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/models/topology_topology.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server.models.topology_link import TopologyLink # noqa: F401,E501 +from swagger_server.models.topology_node import TopologyNode # noqa: F401,E501 +from swagger_server import util + + +class TopologyTopology(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, link: List[TopologyLink]=None, node: List[TopologyNode]=None): # noqa: E501 + """TopologyTopology - a model defined in Swagger + + :param link: The link of this TopologyTopology. # noqa: E501 + :type link: List[TopologyLink] + :param node: The node of this TopologyTopology. # noqa: E501 + :type node: List[TopologyNode] + """ + self.swagger_types = { + 'link': List[TopologyLink], + 'node': List[TopologyNode] + } + + self.attribute_map = { + 'link': 'link', + 'node': 'node' + } + self._link = link + self._node = node + + @classmethod + def from_dict(cls, dikt) -> 'TopologyTopology': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The topology.Topology of this TopologyTopology. # noqa: E501 + :rtype: TopologyTopology + """ + return util.deserialize_model(dikt, cls) + + @property + def link(self) -> List[TopologyLink]: + """Gets the link of this TopologyTopology. + + + :return: The link of this TopologyTopology. + :rtype: List[TopologyLink] + """ + return self._link + + @link.setter + def link(self, link: List[TopologyLink]): + """Sets the link of this TopologyTopology. + + + :param link: The link of this TopologyTopology. + :type link: List[TopologyLink] + """ + + self._link = link + + @property + def node(self) -> List[TopologyNode]: + """Gets the node of this TopologyTopology. + + + :return: The node of this TopologyTopology. + :rtype: List[TopologyNode] + """ + return self._node + + @node.setter + def node(self, node: List[TopologyNode]): + """Sets the node of this TopologyTopology. + + + :param node: The node of this TopologyTopology. + :type node: List[TopologyNode] + """ + + self._node = node diff --git a/hackfest/restconf/topologyserver/swagger_server/swagger/swagger.yaml b/hackfest/restconf/topologyserver/swagger_server/swagger/swagger.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c359192088f24b3ec2fbde3a433519b7fbf1cfa7 --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/swagger/swagger.yaml @@ -0,0 +1,592 @@ +openapi: 3.0.1 +info: + title: topology API + description: topology API generated from yang definitions + version: "1.0" +servers: +- url: //localhost:1234/ +paths: + /data/topology/: + get: + tags: + - topology + description: returns topology.Topology + operationId: data_topology_get + responses: + 200: + description: topology.Topology + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Topology' + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + put: + tags: + - topology + description: creates or updates topology.Topology + operationId: data_topology_put + requestBody: + description: topology.Topology to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Topology' + required: false + responses: + 201: + description: Object created + content: {} + 204: + description: Object modified + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + post: + tags: + - topology + description: creates topology.Topology + operationId: data_topology_post + requestBody: + description: topology.Topology to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Topology' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + delete: + tags: + - topology + description: removes topology.Topology + operationId: data_topology_delete + responses: + 204: + description: Object deleted + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/link/: + post: + tags: + - topology + description: creates topology.Link + operationId: data_topology_link_post + requestBody: + description: topology.Link to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Link' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/link={link-id}/: + get: + tags: + - topology + description: returns topology.Link + operationId: data_topology_linklink_id_get + parameters: + - name: link-id + in: path + description: Id of link + required: true + schema: + type: string + responses: + 200: + description: topology.Link + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Link' + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + put: + tags: + - topology + description: creates or updates topology.Link + operationId: data_topology_linklink_id_put + parameters: + - name: link-id + in: path + description: Id of link + required: true + schema: + type: string + requestBody: + description: topology.Link to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Link' + required: false + responses: + 201: + description: Object created + content: {} + 204: + description: Object modified + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + post: + tags: + - topology + description: creates topology.Link + operationId: data_topology_linklink_id_post + parameters: + - name: link-id + in: path + description: Id of link + required: true + schema: + type: string + requestBody: + description: topology.Link to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Link' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + delete: + tags: + - topology + description: removes topology.Link + operationId: data_topology_linklink_id_delete + parameters: + - name: link-id + in: path + description: Id of link + required: true + schema: + type: string + responses: + 204: + description: Object deleted + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/node/: + post: + tags: + - topology + description: creates topology.Node + operationId: data_topology_node_post + requestBody: + description: topology.Node to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Node' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/node={node-id}/: + get: + tags: + - topology + description: returns topology.Node + operationId: data_topology_nodenode_id_get + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + responses: + 200: + description: topology.Node + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Node' + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + put: + tags: + - topology + description: creates or updates topology.Node + operationId: data_topology_nodenode_id_put + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + requestBody: + description: topology.Node to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Node' + required: false + responses: + 201: + description: Object created + content: {} + 204: + description: Object modified + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + post: + tags: + - topology + description: creates topology.Node + operationId: data_topology_nodenode_id_post + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + requestBody: + description: topology.Node to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Node' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + delete: + tags: + - topology + description: removes topology.Node + operationId: data_topology_nodenode_id_delete + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + responses: + 204: + description: Object deleted + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/node={node-id}/port/: + post: + tags: + - topology + description: creates topology.Port + operationId: data_topology_nodenode_id_port_post + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + requestBody: + description: topology.Port to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Port' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/node={node-id}/port={port-id}/: + get: + tags: + - topology + description: returns topology.Port + operationId: data_topology_nodenode_id_portport_id_get + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + - name: port-id + in: path + description: Id of port + required: true + schema: + type: string + responses: + 200: + description: topology.Port + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Port' + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + put: + tags: + - topology + description: creates or updates topology.Port + operationId: data_topology_nodenode_id_portport_id_put + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + - name: port-id + in: path + description: Id of port + required: true + schema: + type: string + requestBody: + description: topology.Port to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Port' + required: false + responses: + 201: + description: Object created + content: {} + 204: + description: Object modified + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + post: + tags: + - topology + description: creates topology.Port + operationId: data_topology_nodenode_id_portport_id_post + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + - name: port-id + in: path + description: Id of port + required: true + schema: + type: string + requestBody: + description: topology.Port to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Port' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + delete: + tags: + - topology + description: removes topology.Port + operationId: data_topology_nodenode_id_portport_id_delete + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + - name: port-id + in: path + description: Id of port + required: true + schema: + type: string + responses: + 204: + description: Object deleted + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller +components: + schemas: + topology.LayerProtocolName: + type: string + enum: + - ETH + - OPTICAL + topology.Link: + type: object + properties: + target-port: + type: string + x-path: /topology/node/port/port-id + source-port: + type: string + x-path: /topology/node/port/port-id + target-node: + type: string + x-path: /topology/node/node-id + link-id: + type: string + source-node: + type: string + x-path: /topology/node/node-id + example: + target-port: target-port + source-port: source-port + target-node: target-node + link-id: link-id + source-node: source-node + topology.Node: + type: object + properties: + node-id: + type: string + port: + type: array + items: + $ref: '#/components/schemas/topology.Port' + example: + node-id: node-id + port: + - layer-protocol-name: ETH + port-id: port-id + - layer-protocol-name: ETH + port-id: port-id + topology.Port: + type: object + properties: + layer-protocol-name: + $ref: '#/components/schemas/topology.LayerProtocolName' + port-id: + type: string + example: + layer-protocol-name: ETH + port-id: port-id + topology.Topology: + type: object + properties: + link: + type: array + items: + $ref: '#/components/schemas/topology.Link' + node: + type: array + items: + $ref: '#/components/schemas/topology.Node' + example: + node: + - node-id: node-id + port: + - layer-protocol-name: ETH + port-id: port-id + - layer-protocol-name: ETH + port-id: port-id + - node-id: node-id + port: + - layer-protocol-name: ETH + port-id: port-id + - layer-protocol-name: ETH + port-id: port-id + link: + - target-port: target-port + source-port: source-port + target-node: target-node + link-id: link-id + source-node: source-node + - target-port: target-port + source-port: source-port + target-node: target-node + link-id: link-id + source-node: source-node + diff --git a/hackfest/restconf/topologyserver/swagger_server/test/__init__.py b/hackfest/restconf/topologyserver/swagger_server/test/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..644506301ce077f2e881fcda3454b6cba362ab5e --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/test/__init__.py @@ -0,0 +1,16 @@ +import logging + +import connexion +from flask_testing import TestCase + +from swagger_server.encoder import JSONEncoder + + +class BaseTestCase(TestCase): + + def create_app(self): + logging.getLogger('connexion.operation').setLevel('ERROR') + app = connexion.App(__name__, specification_dir='../swagger/') + app.app.json_encoder = JSONEncoder + app.add_api('swagger.yaml') + return app.app diff --git a/hackfest/restconf/topologyserver/swagger_server/test/test_topology_controller.py b/hackfest/restconf/topologyserver/swagger_server/test/test_topology_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..69c6a2fa734c174df514d09a58c6db25be4b63c3 --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/test/test_topology_controller.py @@ -0,0 +1,263 @@ +# coding: utf-8 + +from __future__ import absolute_import + +from flask import json +from six import BytesIO + +from swagger_server.models.topology_link import TopologyLink # noqa: E501 +from swagger_server.models.topology_node import TopologyNode # noqa: E501 +from swagger_server.models.topology_port import TopologyPort # noqa: E501 +from swagger_server.models.topology_topology import TopologyTopology # noqa: E501 +from swagger_server.test import BaseTestCase + + +class TestTopologyController(BaseTestCase): + """TopologyController integration test stubs""" + + def test_data_topology_delete(self): + """Test case for data_topology_delete + + + """ + response = self.client.open( + '/data/topology/', + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_get(self): + """Test case for data_topology_get + + + """ + response = self.client.open( + '/data/topology/', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_link_post(self): + """Test case for data_topology_link_post + + + """ + body = TopologyLink() + response = self.client.open( + '/data/topology/link/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_linklink_id_delete(self): + """Test case for data_topology_linklink_id_delete + + + """ + response = self.client.open( + '/data/topology/link={link-id}/'.format(link_id='link_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_linklink_id_get(self): + """Test case for data_topology_linklink_id_get + + + """ + response = self.client.open( + '/data/topology/link={link-id}/'.format(link_id='link_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_linklink_id_post(self): + """Test case for data_topology_linklink_id_post + + + """ + body = TopologyLink() + response = self.client.open( + '/data/topology/link={link-id}/'.format(link_id='link_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_linklink_id_put(self): + """Test case for data_topology_linklink_id_put + + + """ + body = TopologyLink() + response = self.client.open( + '/data/topology/link={link-id}/'.format(link_id='link_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_node_post(self): + """Test case for data_topology_node_post + + + """ + body = TopologyNode() + response = self.client.open( + '/data/topology/node/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_delete(self): + """Test case for data_topology_nodenode_id_delete + + + """ + response = self.client.open( + '/data/topology/node={node-id}/'.format(node_id='node_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_get(self): + """Test case for data_topology_nodenode_id_get + + + """ + response = self.client.open( + '/data/topology/node={node-id}/'.format(node_id='node_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_port_post(self): + """Test case for data_topology_nodenode_id_port_post + + + """ + body = TopologyPort() + response = self.client.open( + '/data/topology/node={node-id}/port/'.format(node_id='node_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_portport_id_delete(self): + """Test case for data_topology_nodenode_id_portport_id_delete + + + """ + response = self.client.open( + '/data/topology/node={node-id}/port={port-id}/'.format(node_id='node_id_example', port_id='port_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_portport_id_get(self): + """Test case for data_topology_nodenode_id_portport_id_get + + + """ + response = self.client.open( + '/data/topology/node={node-id}/port={port-id}/'.format(node_id='node_id_example', port_id='port_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_portport_id_post(self): + """Test case for data_topology_nodenode_id_portport_id_post + + + """ + body = TopologyPort() + response = self.client.open( + '/data/topology/node={node-id}/port={port-id}/'.format(node_id='node_id_example', port_id='port_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_portport_id_put(self): + """Test case for data_topology_nodenode_id_portport_id_put + + + """ + body = TopologyPort() + response = self.client.open( + '/data/topology/node={node-id}/port={port-id}/'.format(node_id='node_id_example', port_id='port_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_post(self): + """Test case for data_topology_nodenode_id_post + + + """ + body = TopologyNode() + response = self.client.open( + '/data/topology/node={node-id}/'.format(node_id='node_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_put(self): + """Test case for data_topology_nodenode_id_put + + + """ + body = TopologyNode() + response = self.client.open( + '/data/topology/node={node-id}/'.format(node_id='node_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_post(self): + """Test case for data_topology_post + + + """ + body = TopologyTopology() + response = self.client.open( + '/data/topology/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_put(self): + """Test case for data_topology_put + + + """ + body = TopologyTopology() + response = self.client.open( + '/data/topology/', + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + +if __name__ == '__main__': + import unittest + unittest.main() diff --git a/hackfest/restconf/topologyserver/swagger_server/util.py b/hackfest/restconf/topologyserver/swagger_server/util.py new file mode 100644 index 0000000000000000000000000000000000000000..527d1424c3d5563073b18b4da1a9904b2cb6b62b --- /dev/null +++ b/hackfest/restconf/topologyserver/swagger_server/util.py @@ -0,0 +1,141 @@ +import datetime + +import six +import typing + + +def _deserialize(data, klass): + """Deserializes dict, list, str into an object. + + :param data: dict, list or str. + :param klass: class literal, or string of class name. + + :return: object. + """ + if data is None: + return None + + if klass in six.integer_types or klass in (float, str, bool): + return _deserialize_primitive(data, klass) + elif klass == object: + return _deserialize_object(data) + elif klass == datetime.date: + return deserialize_date(data) + elif klass == datetime.datetime: + return deserialize_datetime(data) + elif type(klass) == typing.GenericMeta: + if klass.__extra__ == list: + return _deserialize_list(data, klass.__args__[0]) + if klass.__extra__ == dict: + return _deserialize_dict(data, klass.__args__[1]) + else: + return deserialize_model(data, klass) + + +def _deserialize_primitive(data, klass): + """Deserializes to primitive type. + + :param data: data to deserialize. + :param klass: class literal. + + :return: int, long, float, str, bool. + :rtype: int | long | float | str | bool + """ + try: + value = klass(data) + except UnicodeEncodeError: + value = six.u(data) + except TypeError: + value = data + return value + + +def _deserialize_object(value): + """Return a original value. + + :return: object. + """ + return value + + +def deserialize_date(string): + """Deserializes string to date. + + :param string: str. + :type string: str + :return: date. + :rtype: date + """ + try: + from dateutil.parser import parse + return parse(string).date() + except ImportError: + return string + + +def deserialize_datetime(string): + """Deserializes string to datetime. + + The string should be in iso8601 datetime format. + + :param string: str. + :type string: str + :return: datetime. + :rtype: datetime + """ + try: + from dateutil.parser import parse + return parse(string) + except ImportError: + return string + + +def deserialize_model(data, klass): + """Deserializes list or dict to model. + + :param data: dict, list. + :type data: dict | list + :param klass: class literal. + :return: model object. + """ + instance = klass() + + if not instance.swagger_types: + return data + + for attr, attr_type in six.iteritems(instance.swagger_types): + if data is not None \ + and instance.attribute_map[attr] in data \ + and isinstance(data, (list, dict)): + value = data[instance.attribute_map[attr]] + setattr(instance, attr, _deserialize(value, attr_type)) + + return instance + + +def _deserialize_list(data, boxed_type): + """Deserializes a list and its elements. + + :param data: list to deserialize. + :type data: list + :param boxed_type: class literal. + + :return: deserialized list. + :rtype: list + """ + return [_deserialize(sub_data, boxed_type) + for sub_data in data] + + +def _deserialize_dict(data, boxed_type): + """Deserializes a dict and its elements. + + :param data: dict to deserialize. + :type data: dict + :param boxed_type: class literal. + + :return: deserialized dict. + :rtype: dict + """ + return {k: _deserialize(v, boxed_type) + for k, v in six.iteritems(data)} diff --git a/hackfest/restconf/topologyserver/test-requirements.txt b/hackfest/restconf/topologyserver/test-requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..7f8d96e6b40e853d658f88fa745ddcf37ff7644c --- /dev/null +++ b/hackfest/restconf/topologyserver/test-requirements.txt @@ -0,0 +1,6 @@ +flask_testing==0.6.1 +coverage>=4.0.3 +nose>=1.3.7 +pluggy>=0.3.1 +py>=1.4.31 +randomize>=0.13 diff --git a/hackfest/restconf/topologyserver/tox.ini b/hackfest/restconf/topologyserver/tox.ini new file mode 100644 index 0000000000000000000000000000000000000000..3e0b644eec48f0d6d63f028c28315ca0eda5896f --- /dev/null +++ b/hackfest/restconf/topologyserver/tox.ini @@ -0,0 +1,10 @@ +[tox] +envlist = py35 + +[testenv] +deps=-r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +commands= + nosetests \ + [] \ No newline at end of file diff --git a/hackfest/tapi/client/cs1.json b/hackfest/tapi/client/cs1.json new file mode 100644 index 0000000000000000000000000000000000000000..06290e137a280bb01b9de5adf98c4aaa9b73c122 --- /dev/null +++ b/hackfest/tapi/client/cs1.json @@ -0,0 +1,28 @@ +{ + "tapi-connectivity:connectivity-service": [ + { + "uuid" : "cs1", + "service-type":"POINT_TO_POINT_CONNECTIVITY", + "connectivity-constraint": { + "requested-capacity": {"total-size": { "value": "50", "unit": "GHz" }}, + "connectivity-direction": "UNIDIRECTIONAL" + }, + "end-point": [ + { + "local-id": "csep-1", + "layer-protocol-name": "PHOTONIC_MEDIA", + "service-interface-point": { + "service-interface-point-uuid": "node-1-port-13-input" + } + }, + { + "local-id":"csep-2", + "layer-protocol-name":"PHOTONIC_MEDIA", + "service-interface-point": { + "service-interface-point-uuid": "node-2-port-14-output" + } + } + ] + } + ] +} diff --git a/hackfest/tapi/client/tapi-client.sh b/hackfest/tapi/client/tapi-client.sh new file mode 100755 index 0000000000000000000000000000000000000000..a591a2006b06e9dcc6f13b85d9ff870bdca0c359 --- /dev/null +++ b/hackfest/tapi/client/tapi-client.sh @@ -0,0 +1,51 @@ +#Example CURL for TAPI 2.0 + +#Get Context +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/ + +#Get Service Interface Points +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/service-interface-point/ + +#Get SIP sip-pe1-uni1 +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/service-interface-point/sip-pe1-uni1/ + +#Get topologies +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/topology/ + +#Get topology topo-nwk +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/topology/topo-nwk/ + +#Get nodes +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/topology/topo-nwk/node/ + +#Get node 1 +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/topology/topo-nwk/node/node-pe-1/ + +#Get NEP list +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/topology/topo-nwk/node/node-pe-1/owned-node-edge-point/ + +#Get NEP NEP_PE_01_UNI1 +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/topology/topo-nwk/node/node-pe-1/owned-node-edge-point/NEP_PE_01_UNI1/ + +#Get links +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/topology/topo-nwk/link/ + +#Get link 1-3 +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/topology/topo-nwk/link/PE1_NNI3_PI3_NNI1/ + +#Create Connectivity Service +curl -X POST -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/connectivity-service/cs1/ -d @cs1.json + +#Get Connectivity Services +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/connectivity-service/ + +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/connectivity-service/cs1/ + +#Get connection +curl -X GET -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/connection/cs1/ + +#Delete Connectivity Services +curl -X DELETE -H "Content-Type: application/json" http://127.0.0.1:8080/restconf/config/context/connectivity-service/cs1/ + + + diff --git a/hackfest/tapi/codegen-config.json b/hackfest/tapi/codegen-config.json new file mode 100644 index 0000000000000000000000000000000000000000..be1ca6ac0958b42ec611cf9ff1a5cc228e4e7273 --- /dev/null +++ b/hackfest/tapi/codegen-config.json @@ -0,0 +1,4 @@ +{ + "packageName": "tapi_server", + "packageVersion": "2.1.3" +} diff --git a/hackfest/tapi/server/.dockerignore b/hackfest/tapi/server/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..cdd823e64e7e91ae85da84f22410ecb7eb370ae2 --- /dev/null +++ b/hackfest/tapi/server/.dockerignore @@ -0,0 +1,72 @@ +.travis.yaml +.swagger-codegen-ignore +README.md +tox.ini +git_push.sh +test-requirements.txt +setup.py + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +venv/ +.python-version + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints diff --git a/hackfest/tapi/server/.gitignore b/hackfest/tapi/server/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a655050c2631466828b5b8bfc59ae27f9ac02dc5 --- /dev/null +++ b/hackfest/tapi/server/.gitignore @@ -0,0 +1,64 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ +venv/ +.python-version + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints diff --git a/hackfest/tapi/server/.swagger-codegen-ignore b/hackfest/tapi/server/.swagger-codegen-ignore new file mode 100644 index 0000000000000000000000000000000000000000..c5fa491b4c557bf997d5dd21797de782545dc9e5 --- /dev/null +++ b/hackfest/tapi/server/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/hackfest/tapi/server/.swagger-codegen/VERSION b/hackfest/tapi/server/.swagger-codegen/VERSION new file mode 100644 index 0000000000000000000000000000000000000000..053a355ae8764725498657904f6aa8f694204d4a --- /dev/null +++ b/hackfest/tapi/server/.swagger-codegen/VERSION @@ -0,0 +1 @@ +3.0.35 \ No newline at end of file diff --git a/hackfest/tapi/server/.travis.yml b/hackfest/tapi/server/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..dd6c4450aa902ae68479c3d76d45145e18d6052e --- /dev/null +++ b/hackfest/tapi/server/.travis.yml @@ -0,0 +1,13 @@ +# ref: https://docs.travis-ci.com/user/languages/python +language: python +python: + - "3.2" + - "3.3" + - "3.4" + - "3.5" + #- "3.5-dev" # 3.5 development branch + #- "nightly" # points to the latest development branch e.g. 3.6-dev +# command to install dependencies +install: "pip install -r requirements.txt" +# command to run tests +script: nosetests diff --git a/hackfest/tapi/server/Acknowledgements.txt b/hackfest/tapi/server/Acknowledgements.txt new file mode 100644 index 0000000000000000000000000000000000000000..288a31e12df8aef0f2c8098c64a2f48b9fc11faf --- /dev/null +++ b/hackfest/tapi/server/Acknowledgements.txt @@ -0,0 +1,3 @@ +# [Ref-1]: https://github.com/OpenNetworkingFoundation/TAPI +# [Ref-2]: https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.3/YANG +# [Ref-3]: https://github.com/OpenNetworkingFoundation/TAPI/tree/develop/RI diff --git a/hackfest/tapi/server/Dockerfile b/hackfest/tapi/server/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..c9fdfe31e488e27eb023f38f521d65dc0896b11f --- /dev/null +++ b/hackfest/tapi/server/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.6-alpine + +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +COPY requirements.txt /usr/src/app/ + +RUN pip3 install --no-cache-dir -r requirements.txt + +COPY . /usr/src/app + +EXPOSE 8080 + +ENTRYPOINT ["python3"] + +CMD ["-m", "tapi_server"] \ No newline at end of file diff --git a/hackfest/tapi/server/README.md b/hackfest/tapi/server/README.md new file mode 100644 index 0000000000000000000000000000000000000000..3ddda50fb38fe89c346c95bc08914665da155a19 --- /dev/null +++ b/hackfest/tapi/server/README.md @@ -0,0 +1,49 @@ +# Swagger generated server + +## Overview +This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the +[OpenAPI-Spec](https://github.com/swagger-api/swagger-core/wiki) from a remote server, you can easily generate a server stub. This +is an example of building a swagger-enabled Flask server. + +This example uses the [Connexion](https://github.com/zalando/connexion) library on top of Flask. + +## Requirements +Python 3.5.2+ + +## Usage +To run the server, please execute the following from the root directory: + +``` +pip3 install -r requirements.txt +python3 -m tapi_server +``` + +and open your browser to here: + +``` +http://localhost:8080/ui/ +``` + +Your Swagger definition lives here: + +``` +http://localhost:8080/swagger.json +``` + +To launch the integration tests, use tox: +``` +sudo pip install tox +tox +``` + +## Running with Docker + +To run the server on a Docker container, please execute the following from the root directory: + +```bash +# building the image +docker build -t tapi_server . + +# starting up a container +docker run -p 8080:8080 tapi_server +``` \ No newline at end of file diff --git a/hackfest/tapi/server/git_push.sh b/hackfest/tapi/server/git_push.sh new file mode 100644 index 0000000000000000000000000000000000000000..160f6f213999c7ae67839fbd6fc2ba0b72675832 --- /dev/null +++ b/hackfest/tapi/server/git_push.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/hackfest/tapi/server/requirements.txt b/hackfest/tapi/server/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..62c7fffac8b5bc20011c481e6ae3601eca6d4a08 --- /dev/null +++ b/hackfest/tapi/server/requirements.txt @@ -0,0 +1,5 @@ +connexion >= 2.6.0 +connexion[swagger-ui] >= 2.6.0 +python_dateutil == 2.6.0 +setuptools >= 21.0.0 +swagger-ui-bundle >= 0.0.2 diff --git a/hackfest/tapi/server/run.sh b/hackfest/tapi/server/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..6b69692172b14f2fec299f88fa914be2eb811c01 --- /dev/null +++ b/hackfest/tapi/server/run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +python3 -m tapi_server 8080 database/mini-ols-context.json diff --git a/hackfest/tapi/server/setup.py b/hackfest/tapi/server/setup.py new file mode 100644 index 0000000000000000000000000000000000000000..eaf66f499a8e6311a6b5ea1946b6448b1144388b --- /dev/null +++ b/hackfest/tapi/server/setup.py @@ -0,0 +1,36 @@ +# coding: utf-8 + +import sys +from setuptools import setup, find_packages + +NAME = "tapi_server" +VERSION = "2.1.3" +# To install the library, run the following +# +# python setup.py install +# +# prerequisite: setuptools +# http://pypi.python.org/pypi/setuptools + +REQUIRES = [ + "connexion", + "swagger-ui-bundle>=0.0.2" +] + +setup( + name=NAME, + version=VERSION, + description="tapi-notification,tapi-connectivity,tapi-topology,tapi-common,tapi-path-computation API", + author_email="", + url="", + keywords=["Swagger", "tapi-notification,tapi-connectivity,tapi-topology,tapi-common,tapi-path-computation API"], + install_requires=REQUIRES, + packages=find_packages(), + package_data={'': ['swagger/swagger.yaml']}, + include_package_data=True, + entry_points={ + 'console_scripts': ['tapi_server=tapi_server.__main__:main']}, + long_description="""\ + This module contains TAPI Notification Model definitions. Source: TapiNotification.uml - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK. - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool] <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/EagleUmlYang__;!!OSsGDw!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G4QHf0bG$ > and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines] <https://urldefense.com/v3/__https://wiki.opennetworking.org/display/OIMT/UML*-*YANG*Guidelines__;Kysr!!OSsGDw!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G8IIivez$ > - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts. As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts. - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases. The YANG model backward compatibility criteria are outlined in section 11 of <https://urldefense.com/v3/__https://tools.ietf.org/html/rfc7950__;!!OSsGDw!d_dJlNtYLmD585It0DKukzB2TS5KZqBZQ-pdI1D-6c6c5hRDotd6G3bKxRf2$ >. YANG models included in this release may not be backward compatible with previous TAPI releases. Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved. License: This module is distributed under the Apache License 2.0, This module contains TAPI Connectivity Model definitions. Source: TapiConnectivity.uml - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK. - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool] <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/EagleUmlYang__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_6pxiNxl$ > and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines] <https://urldefense.com/v3/__https://wiki.opennetworking.org/display/OIMT/UML*-*YANG*Guidelines__;Kysr!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_wxKUbJ_$ > - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts. As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts. - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases. The YANG model backward compatibility criteria are outlined in section 11 of <https://urldefense.com/v3/__https://tools.ietf.org/html/rfc7950__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_zcAY1P4$ >. YANG models included in this release may not be backward compatible with previous TAPI releases. Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved. License: This module is distributed under the Apache License 2.0., This module contains TAPI Topology Model definitions. Source: TapiTopology.uml - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK. - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool] <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/EagleUmlYang__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_6pxiNxl$ > and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines] <https://urldefense.com/v3/__https://wiki.opennetworking.org/display/OIMT/UML*-*YANG*Guidelines__;Kysr!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_wxKUbJ_$ > - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts. As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts. - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases. The YANG model backward compatibility criteria are outlined in section 11 of <https://urldefense.com/v3/__https://tools.ietf.org/html/rfc7950__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_zcAY1P4$ >. YANG models included in this release may not be backward compatible with previous TAPI releases. Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved. License: This module is distributed under the Apache License 2.0., This module contains TAPI Common Model definitions. Source: TapiCommon.uml - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK. - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool] <https://github.com/OpenNetworkingFoundation/EagleUmlYang> and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines] <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines> - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts. As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts. - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases. The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>. YANG models included in this release may not be backward compatible with previous TAPI releases. Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved. License: This module is distributed under the Apache License 2.0., This module contains TAPI Path Computation Model definitions. Source: TapiPathComputation.uml - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK. - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool] <https://github.com/OpenNetworkingFoundation/EagleUmlYang> and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines] <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines> - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts. As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts. - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases. The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>. YANG models included in this release may not be backward compatible with previous TAPI releases. Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved. License: This module is distributed under the Apache License 2.0. + """ +) diff --git a/hackfest/tapi/server/tapi_server/__init__.py b/hackfest/tapi/server/tapi_server/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/hackfest/tapi/server/tapi_server/__main__.py b/hackfest/tapi/server/tapi_server/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..580c6f80f08d0d9d08d64c14ab8296165bfdb0bb --- /dev/null +++ b/hackfest/tapi/server/tapi_server/__main__.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 + +import connexion +import json +import sys + +from flask import current_app +from tapi_server import encoder +from tapi_server.models.tapi_common_context import TapiCommonContext +from tapi_server import database + + +def main(): + app = connexion.App(__name__, specification_dir='./swagger/') + app.app.json_encoder = encoder.JSONEncoder + app.add_api('swagger.yaml', + arguments={'title': 'tapi-notification,tapi-connectivity,tapi-topology,tapi-common,tapi-path-computation API'}, + base_path='/restconf', + pythonic_params=True) + with app.app.app_context(): + with current_app.open_resource(sys.argv[2], 'r') as f: + data = json.load(f) + database.context = TapiCommonContext.from_dict(data) + app.run(port=sys.argv[1]) + +if __name__ == '__main__': + main() diff --git a/hackfest/tapi/server/tapi_server/controllers/__init__.py b/hackfest/tapi/server/tapi_server/controllers/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/hackfest/tapi/server/tapi_server/controllers/authorization_controller.py b/hackfest/tapi/server/tapi_server/controllers/authorization_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..2f7b0bb3e281b3fb9efb588dfc8ba4c8cc3a59ed --- /dev/null +++ b/hackfest/tapi/server/tapi_server/controllers/authorization_controller.py @@ -0,0 +1,6 @@ +from typing import List +""" +controller generated to handled auth operation described at: +https://connexion.readthedocs.io/en/latest/security.html +""" + diff --git a/hackfest/tapi/server/tapi_server/controllers/tapi_common_controller.py b/hackfest/tapi/server/tapi_server/controllers/tapi_common_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..e6ad1e658b5a8300613882ca23e8bb5a0c4f4980 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/controllers/tapi_common_controller.py @@ -0,0 +1,477 @@ +import connexion +import six + +from tapi_server.models.operations_tapicommongetserviceinterfacepointdetails_body import OperationsTapicommongetserviceinterfacepointdetailsBody # noqa: E501 +from tapi_server.models.operations_tapicommonupdateserviceinterfacepoint_body import OperationsTapicommonupdateserviceinterfacepointBody # noqa: E501 +from tapi_server.models.tapi_common_bandwidth_profile_wrapper import TapiCommonBandwidthProfileWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_value_wrapper import TapiCommonCapacityValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_wrapper import TapiCommonCapacityWrapper # noqa: E501 +from tapi_server.models.tapi_common_context_wrapper import TapiCommonContextWrapper # noqa: E501 +from tapi_server.models.tapi_common_get_service_interface_point_details import TapiCommonGetServiceInterfacePointDetails # noqa: E501 +from tapi_server.models.tapi_common_get_service_interface_point_list import TapiCommonGetServiceInterfacePointList # noqa: E501 +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_service_interface_point_wrapper import TapiCommonServiceInterfacePointWrapper # noqa: E501 +from tapi_server import util + +from tapi_server.models.tapi_common_getserviceinterfacepointdetails_output import TapiCommonGetserviceinterfacepointdetailsOutput +from tapi_server.models.tapi_common_getserviceinterfacepointlist_output import TapiCommonGetserviceinterfacepointlistOutput +from tapi_server import database + + +def data_tapi_commoncontext_delete(): # noqa: E501 + """removes tapi.common.Context + + none # noqa: E501 + + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_get(): # noqa: E501 + """returns tapi.common.Context + + none # noqa: E501 + + + :rtype: TapiCommonContextWrapper + """ + return database.context + + +def data_tapi_commoncontext_name_post(body=None): # noqa: E501 + """creates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param body: tapi.common.NameAndValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_namevalue_name_delete(value_name): # noqa: E501 + """removes tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param value_name: Id of name + :type value_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_namevalue_name_get(value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_namevalue_name_put(value_name, body=None): # noqa: E501 + """creates or updates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param value_name: Id of name + :type value_name: str + :param body: tapi.common.NameAndValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_post(body=None): # noqa: E501 + """creates tapi.common.Context + + none # noqa: E501 + + :param body: tapi.common.Context to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonContextWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_put(body=None): # noqa: E501 + """creates or updates tapi.common.Context + + none # noqa: E501 + + :param body: tapi.common.Context to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonContextWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_point_post(body=None): # noqa: E501 + """creates tapi.common.ServiceInterfacePoint + + none # noqa: E501 + + :param body: tapi.common.ServiceInterfacePoint to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonServiceInterfacePointWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_committed_burst_size_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_committed_information_rate_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_get(uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_peak_burst_size_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_peak_information_rate_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_available_capacity_get(uuid): # noqa: E501 + """returns tapi.common.Capacity + + Capacity available to be assigned. # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_available_capacity_total_size_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_delete(uuid): # noqa: E501 + """removes tapi.common.ServiceInterfacePoint + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_get(uuid): # noqa: E501 + """returns tapi.common.ServiceInterfacePoint + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonServiceInterfacePointWrapper + """ + return database.service_interface_point(uuid) + + +def data_tapi_commoncontext_service_interface_pointuuid_name_post(uuid, body=None): # noqa: E501 + """creates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + :param body: tapi.common.NameAndValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_delete(uuid, value_name): # noqa: E501 + """removes tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_put(uuid, value_name, body=None): # noqa: E501 + """creates or updates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + :param value_name: Id of name + :type value_name: str + :param body: tapi.common.NameAndValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.common.ServiceInterfacePoint + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + :param body: tapi.common.ServiceInterfacePoint to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonServiceInterfacePointWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_get(uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_get(uuid): # noqa: E501 + """returns tapi.common.Capacity + + An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken. # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_total_size_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of service-interface-point + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def operations_tapi_commonget_service_interface_point_details_post(body=None): # noqa: E501 + """operates on tapi.common.GetServiceInterfacePointDetails + + operates on tapi.common.GetServiceInterfacePointDetails # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiCommonGetServiceInterfacePointDetails + """ + if connexion.request.is_json: + body = OperationsTapicommongetserviceinterfacepointdetailsBody.from_dict(connexion.request.get_json()) # noqa: E501 + return TapiCommonGetServiceInterfacePointDetails(TapiCommonGetserviceinterfacepointdetailsOutput( + database.service_interface_point(body.input.sip_id_or_name))) + + +def operations_tapi_commonget_service_interface_point_list_post(): # noqa: E501 + """operations_tapi_commonget_service_interface_point_list_post + + # noqa: E501 + + + :rtype: TapiCommonGetServiceInterfacePointList + """ + return TapiCommonGetServiceInterfacePointList(TapiCommonGetserviceinterfacepointlistOutput( + database.service_interface_point_list())) + + +def operations_tapi_commonupdate_service_interface_point_post(body=None): # noqa: E501 + """operates on tapi.common.UpdateServiceInterfacePoint + + operates on tapi.common.UpdateServiceInterfacePoint # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = OperationsTapicommonupdateserviceinterfacepointBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' diff --git a/hackfest/tapi/server/tapi_server/controllers/tapi_connectivity_controller.py b/hackfest/tapi/server/tapi_server/controllers/tapi_connectivity_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..640f5a72dacea883d145bca664810812e1d37f58 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/controllers/tapi_connectivity_controller.py @@ -0,0 +1,2852 @@ +import connexion +import six + +from tapi_server.models.operations_tapiconnectivitycreateconnectivityservice_body import OperationsTapiconnectivitycreateconnectivityserviceBody # noqa: E501 +from tapi_server.models.operations_tapiconnectivitydeleteconnectivityservice_body import OperationsTapiconnectivitydeleteconnectivityserviceBody # noqa: E501 +from tapi_server.models.operations_tapiconnectivitygetconnectiondetails_body import OperationsTapiconnectivitygetconnectiondetailsBody # noqa: E501 +from tapi_server.models.operations_tapiconnectivitygetconnectionendpointdetails_body import OperationsTapiconnectivitygetconnectionendpointdetailsBody # noqa: E501 +from tapi_server.models.operations_tapiconnectivitygetconnectivityservicedetails_body import OperationsTapiconnectivitygetconnectivityservicedetailsBody # noqa: E501 +from tapi_server.models.operations_tapiconnectivityupdateconnectivityservice_body import OperationsTapiconnectivityupdateconnectivityserviceBody # noqa: E501 +from tapi_server.models.tapi_common_bandwidth_profile_wrapper import TapiCommonBandwidthProfileWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_value_wrapper import TapiCommonCapacityValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_wrapper import TapiCommonCapacityWrapper # noqa: E501 +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_service_interface_point_ref_wrapper import TapiCommonServiceInterfacePointRefWrapper # noqa: E501 +from tapi_server.models.tapi_common_time_range_wrapper import TapiCommonTimeRangeWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_cep_list_wrapper import TapiConnectivityCepListWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_cep_role_wrapper import TapiConnectivityCepRoleWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connection_end_point_ref_wrapper import TapiConnectivityConnectionEndPointRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connection_end_point_wrapper import TapiConnectivityConnectionEndPointWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connection_ref_wrapper import TapiConnectivityConnectionRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connection_spec_reference_wrapper import TapiConnectivityConnectionSpecReferenceWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connection_wrapper import TapiConnectivityConnectionWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connectivity_context_wrapper import TapiConnectivityConnectivityContextWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connectivity_service_end_point_ref_wrapper import TapiConnectivityConnectivityServiceEndPointRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connectivity_service_end_point_wrapper import TapiConnectivityConnectivityServiceEndPointWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connectivity_service_ref_wrapper import TapiConnectivityConnectivityServiceRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connectivity_service_wrapper import TapiConnectivityConnectivityServiceWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_create_connectivity_service import TapiConnectivityCreateConnectivityService # noqa: E501 +from tapi_server.models.tapi_connectivity_get_connection_details import TapiConnectivityGetConnectionDetails # noqa: E501 +from tapi_server.models.tapi_connectivity_get_connection_end_point_details import TapiConnectivityGetConnectionEndPointDetails # noqa: E501 +from tapi_server.models.tapi_connectivity_get_connectivity_service_details import TapiConnectivityGetConnectivityServiceDetails # noqa: E501 +from tapi_server.models.tapi_connectivity_get_connectivity_service_list import TapiConnectivityGetConnectivityServiceList # noqa: E501 +from tapi_server.models.tapi_connectivity_resilience_route_wrapper import TapiConnectivityResilienceRouteWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_route_ref_wrapper import TapiConnectivityRouteRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_route_wrapper import TapiConnectivityRouteWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_switch_control_ref_wrapper import TapiConnectivitySwitchControlRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_switch_control_wrapper import TapiConnectivitySwitchControlWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_switch_wrapper import TapiConnectivitySwitchWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_update_connectivity_service import TapiConnectivityUpdateConnectivityService # noqa: E501 +from tapi_server.models.tapi_path_computation_value_or_priority_wrapper import TapiPathComputationValueOrPriorityWrapper # noqa: E501 +from tapi_server.models.tapi_topology_cost_characteristic_wrapper import TapiTopologyCostCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_latency_characteristic_wrapper import TapiTopologyLatencyCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_link_ref_wrapper import TapiTopologyLinkRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_node_edge_point_ref_wrapper import TapiTopologyNodeEdgePointRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_resilience_type_wrapper import TapiTopologyResilienceTypeWrapper # noqa: E501 +from tapi_server.models.tapi_topology_risk_characteristic_wrapper import TapiTopologyRiskCharacteristicWrapper # noqa: E501 +from tapi_server import util + +from tapi_server.models.tapi_connectivity_connection import TapiConnectivityConnection +from tapi_server.models.tapi_connectivity_connection_end_point_ref import TapiConnectivityConnectionEndPointRef +from tapi_server.models.tapi_connectivity_connection_ref import TapiConnectivityConnectionRef +from tapi_server.models.tapi_connectivity_connectivity_context import TapiConnectivityConnectivityContext +from tapi_server.models.tapi_connectivity_getconnectiondetails_output import TapiConnectivityGetconnectiondetailsOutput +from tapi_server.models.tapi_connectivity_getconnectionendpointdetails_output import TapiConnectivityGetconnectionendpointdetailsOutput +from tapi_server.models.tapi_connectivity_getconnectivityservicedetails_output import TapiConnectivityGetconnectivityservicedetailsOutput +from tapi_server.models.tapi_connectivity_getconnectivityservicelist_output import TapiConnectivityGetconnectivityservicelistOutput +from tapi_server import database + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get(uuid, topology_uuid, node_uuid, node_edge_point_uuid, connection_end_point_uuid): # noqa: E501 + """returns tapi.connectivity.ConnectionEndPointRef + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param topology_uuid: Id of connection-end-point + :type topology_uuid: str + :param node_uuid: Id of connection-end-point + :type node_uuid: str + :param node_edge_point_uuid: Id of connection-end-point + :type node_edge_point_uuid: str + :param connection_end_point_uuid: Id of connection-end-point + :type connection_end_point_uuid: str + + :rtype: TapiConnectivityConnectionEndPointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_connection_spec_reference_get(uuid): # noqa: E501 + """returns tapi.connectivity.ConnectionSpecReference + + Provides the reference to the spec that defines the connection type and cepRoles. # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + + :rtype: TapiConnectivityConnectionSpecReferenceWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_get(uuid): # noqa: E501 + """returns tapi.connectivity.Connection + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + + :rtype: TapiConnectivityConnectionWrapper + """ + return database.connection(uuid) + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_lower_connectionconnection_uuid_get(uuid, connection_uuid): # noqa: E501 + """returns tapi.connectivity.ConnectionRef + + An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning). Aggregation is used as for the Node/Topology to allow changes in hierarchy. Connection aggregation reflects Node/Topology aggregation. The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning. # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param connection_uuid: Id of lower-connection + :type connection_uuid: str + + :rtype: TapiConnectivityConnectionRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get(uuid, local_id, topology_uuid, node_uuid, node_edge_point_uuid, connection_end_point_uuid): # noqa: E501 + """returns tapi.connectivity.ConnectionEndPointRef + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param local_id: Id of route + :type local_id: str + :param topology_uuid: Id of connection-end-point + :type topology_uuid: str + :param node_uuid: Id of connection-end-point + :type node_uuid: str + :param node_edge_point_uuid: Id of connection-end-point + :type node_edge_point_uuid: str + :param connection_end_point_uuid: Id of connection-end-point + :type connection_end_point_uuid: str + + :rtype: TapiConnectivityConnectionEndPointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_get(uuid, local_id): # noqa: E501 + """returns tapi.connectivity.Route + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param local_id: Id of route + :type local_id: str + + :rtype: TapiConnectivityRouteWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_namevalue_name_get(uuid, local_id, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param local_id: Id of route + :type local_id: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_resilience_route_pac_get(uuid, local_id): # noqa: E501 + """returns tapi.connectivity.ResilienceRoute + + Provides optional resilience and state attributes to the Route. # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param local_id: Id of route + :type local_id: str + + :rtype: TapiConnectivityResilienceRouteWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_resilience_route_pac_namevalue_name_get(uuid, local_id, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param local_id: Id of route + :type local_id: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_supported_client_linktopology_uuidlink_uuid_get(uuid, topology_uuid, link_uuid): # noqa: E501 + """returns tapi.topology.LinkRef + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param topology_uuid: Id of supported-client-link + :type topology_uuid: str + :param link_uuid: Id of supported-client-link + :type link_uuid: str + + :rtype: TapiTopologyLinkRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_get(uuid, switch_control_uuid): # noqa: E501 + """returns tapi.connectivity.SwitchControl + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param switch_control_uuid: Id of switch-control + :type switch_control_uuid: str + + :rtype: TapiConnectivitySwitchControlWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_namevalue_name_get(uuid, switch_control_uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param switch_control_uuid: Id of switch-control + :type switch_control_uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_resilience_type_get(uuid, switch_control_uuid): # noqa: E501 + """returns tapi.topology.ResilienceType + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param switch_control_uuid: Id of switch-control + :type switch_control_uuid: str + + :rtype: TapiTopologyResilienceTypeWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_sub_switch_controlconnection_uuidsub_switch_control_switch_control_uuid_get(uuid, switch_control_uuid, connection_uuid, sub_switch_control_switch_control_uuid): # noqa: E501 + """returns tapi.connectivity.SwitchControlRef + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param switch_control_uuid: Id of switch-control + :type switch_control_uuid: str + :param connection_uuid: Id of sub-switch-control + :type connection_uuid: str + :param sub_switch_control_switch_control_uuid: Id of sub-switch-control + :type sub_switch_control_switch_control_uuid: str + + :rtype: TapiConnectivitySwitchControlRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_get(uuid, switch_control_uuid, local_id): # noqa: E501 + """returns tapi.connectivity.Switch + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param switch_control_uuid: Id of switch-control + :type switch_control_uuid: str + :param local_id: Id of switch + :type local_id: str + + :rtype: TapiConnectivitySwitchWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_namevalue_name_get(uuid, switch_control_uuid, local_id, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param switch_control_uuid: Id of switch-control + :type switch_control_uuid: str + :param local_id: Id of switch + :type local_id: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_selected_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get(uuid, switch_control_uuid, local_id, topology_uuid, node_uuid, node_edge_point_uuid, connection_end_point_uuid): # noqa: E501 + """returns tapi.connectivity.ConnectionEndPointRef + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param switch_control_uuid: Id of switch-control + :type switch_control_uuid: str + :param local_id: Id of switch + :type local_id: str + :param topology_uuid: Id of selected-connection-end-point + :type topology_uuid: str + :param node_uuid: Id of selected-connection-end-point + :type node_uuid: str + :param node_edge_point_uuid: Id of selected-connection-end-point + :type node_edge_point_uuid: str + :param connection_end_point_uuid: Id of selected-connection-end-point + :type connection_end_point_uuid: str + + :rtype: TapiConnectivityConnectionEndPointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_selected_routeconnection_uuidroute_local_id_get(uuid, switch_control_uuid, local_id, connection_uuid, route_local_id): # noqa: E501 + """returns tapi.connectivity.RouteRef + + none # noqa: E501 + + :param uuid: Id of connection + :type uuid: str + :param switch_control_uuid: Id of switch-control + :type switch_control_uuid: str + :param local_id: Id of switch + :type local_id: str + :param connection_uuid: Id of selected-route + :type connection_uuid: str + :param route_local_id: Id of selected-route + :type route_local_id: str + + :rtype: TapiConnectivityRouteRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_service_post(body=None): # noqa: E501 + """creates tapi.connectivity.ConnectivityService + + none # noqa: E501 + + :param body: tapi.connectivity.ConnectivityService to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + raw_body = connexion.request.get_json() + if "tapi-connectivity:connectivity-service" in raw_body: + raw_body["connectivity-service"] = raw_body.pop("tapi-connectivity:connectivity-service") + if isinstance(raw_body["connectivity-service"], list) and len(raw_body["connectivity-service"]) > 0: + raw_body["connectivity-service"] = raw_body["connectivity-service"][0] + body = TapiConnectivityConnectivityServiceWrapper.from_dict(raw_body) # noqa: E501 + + connection = TapiConnectivityConnection( + uuid=body.connectivity_service.uuid, + connection_end_point=[ + TapiConnectivityConnectionEndPointRef( + node_edge_point_uuid="node-1-port-3", connection_end_point_uuid="cep13"), + TapiConnectivityConnectionEndPointRef( + node_edge_point_uuid="node-3-port-2", connection_end_point_uuid="cep32"), + ] + ) + connection_ref = TapiConnectivityConnectionRef(connection.uuid) + body.connectivity_service.connection = [ connection_ref ] + + if database.context.connectivity_context is None: + database.context.connectivity_context = TapiConnectivityConnectivityContext( + connectivity_service=[], connection=[] + ) + + database.context.connectivity_context.connection.append(connection) + database.context.connectivity_context.connectivity_service.append(body.connectivity_service) + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_connectionconnection_uuid_get(uuid, connection_uuid): # noqa: E501 + """returns tapi.connectivity.ConnectionRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param connection_uuid: Id of connection + :type connection_uuid: str + + :rtype: TapiConnectivityConnectionRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_delete(uuid): # noqa: E501 + """removes tapi.connectivity.ConnectivityServiceRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_get(uuid): # noqa: E501 + """returns tapi.connectivity.ConnectivityServiceRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiConnectivityConnectivityServiceRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_post(uuid, body=None): # noqa: E501 + """creates tapi.connectivity.ConnectivityServiceRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.connectivity.ConnectivityServiceRef to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.connectivity.ConnectivityServiceRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.connectivity.ConnectivityServiceRef to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristic_post(uuid, body=None): # noqa: E501 + """creates tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.topology.CostCharacteristic to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyCostCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_delete(uuid, cost_name): # noqa: E501 + """removes tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_get(uuid, cost_name): # noqa: E501 + """returns tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + + :rtype: TapiTopologyCostCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_put(uuid, cost_name, body=None): # noqa: E501 + """creates or updates tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + :param body: tapi.topology.CostCharacteristic to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyCostCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_delete(uuid): # noqa: E501 + """removes tapi.connectivity.ConnectivityService + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + if database.context.connectivity_context is None: + database.context.connectivity_context = TapiConnectivityConnectivityContext( + connectivity_service=[], connection=[] + ) + + database.context.connectivity_context.connectivity_service = [ + connectivity_service + for connectivity_service in database.context.connectivity_context.connectivity_service + if connectivity_service.uuid != uuid # keep items with different uuid + ] + database.context.connectivity_context.connection = [ + connection + for connection in database.context.connectivity_context.connection + if connection.uuid != uuid # keep items with different uuid + ] + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusion_post(uuid, body=None): # noqa: E501 + """creates tapi.connectivity.ConnectivityServiceRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.connectivity.ConnectivityServiceRef to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_delete(uuid, connectivity_service_uuid): # noqa: E501 + """removes tapi.connectivity.ConnectivityServiceRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param connectivity_service_uuid: Id of diversity-exclusion + :type connectivity_service_uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_get(uuid, connectivity_service_uuid): # noqa: E501 + """returns tapi.connectivity.ConnectivityServiceRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param connectivity_service_uuid: Id of diversity-exclusion + :type connectivity_service_uuid: str + + :rtype: TapiConnectivityConnectivityServiceRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_put(uuid, connectivity_service_uuid, body=None): # noqa: E501 + """creates or updates tapi.connectivity.ConnectivityServiceRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param connectivity_service_uuid: Id of diversity-exclusion + :type connectivity_service_uuid: str + :param body: tapi.connectivity.ConnectivityServiceRef to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_point_post(uuid, body=None): # noqa: E501 + """creates tapi.connectivity.ConnectivityServiceEndPoint + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.connectivity.ConnectivityServiceEndPoint to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceEndPointWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_get(uuid, local_id): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_get(uuid, local_id): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_get(uuid, local_id): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_get(uuid, local_id): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_get(uuid, local_id): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.BandwidthProfile to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonBandwidthProfileWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.BandwidthProfile to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonBandwidthProfileWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_get(uuid, local_id): # noqa: E501 + """returns tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.Capacity to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.Capacity to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_get(uuid, local_id): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get(uuid, local_id, topology_uuid, node_uuid, node_edge_point_uuid, connection_end_point_uuid): # noqa: E501 + """returns tapi.connectivity.ConnectionEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param topology_uuid: Id of connection-end-point + :type topology_uuid: str + :param node_uuid: Id of connection-end-point + :type node_uuid: str + :param node_edge_point_uuid: Id of connection-end-point + :type node_edge_point_uuid: str + :param connection_end_point_uuid: Id of connection-end-point + :type connection_end_point_uuid: str + + :rtype: TapiConnectivityConnectionEndPointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_delete(uuid, local_id): # noqa: E501 + """removes tapi.connectivity.ConnectivityServiceEndPoint + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_get(uuid, local_id): # noqa: E501 + """returns tapi.connectivity.ConnectivityServiceEndPoint + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiConnectivityConnectivityServiceEndPointWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_name_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.NameAndValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_delete(uuid, local_id, value_name): # noqa: E501 + """removes tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param value_name: Id of name + :type value_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_get(uuid, local_id, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_put(uuid, local_id, value_name, body=None): # noqa: E501 + """creates or updates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param value_name: Id of name + :type value_name: str + :param body: tapi.common.NameAndValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_delete(uuid, local_id): # noqa: E501 + """removes tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_get(uuid, local_id): # noqa: E501 + """returns tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiConnectivityConnectivityServiceEndPointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.connectivity.ConnectivityServiceEndPointRef to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceEndPointRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.connectivity.ConnectivityServiceEndPointRef to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceEndPointRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_delete(uuid, local_id): # noqa: E501 + """removes tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_get(uuid, local_id): # noqa: E501 + """returns tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiConnectivityConnectivityServiceEndPointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.connectivity.ConnectivityServiceEndPointRef to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceEndPointRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.connectivity.ConnectivityServiceEndPointRef to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceEndPointRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.connectivity.ConnectivityServiceEndPoint + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.connectivity.ConnectivityServiceEndPoint to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceEndPointWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_delete(uuid, local_id): # noqa: E501 + """removes tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_get(uuid, local_id): # noqa: E501 + """returns tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiConnectivityConnectivityServiceEndPointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.connectivity.ConnectivityServiceEndPointRef to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceEndPointRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.connectivity.ConnectivityServiceEndPointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.connectivity.ConnectivityServiceEndPointRef to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceEndPointRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.ServiceInterfacePointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_get(uuid, local_id): # noqa: E501 + """returns tapi.common.ServiceInterfacePointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonServiceInterfacePointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.ServiceInterfacePointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.ServiceInterfacePointRef to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonServiceInterfacePointRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.ServiceInterfacePointRef + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.ServiceInterfacePointRef to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonServiceInterfacePointRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_get(uuid): # noqa: E501 + """returns tapi.connectivity.ConnectivityService + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiConnectivityConnectivityServiceWrapper + """ + if database.context.connectivity_context is None: + database.context.connectivity_context = TapiConnectivityConnectivityContext( + connectivity_service=[], connection=[] + ) + return database.connectivity_service(uuid) + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristic_post(uuid, body=None): # noqa: E501 + """creates tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.topology.LatencyCharacteristic to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyLatencyCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_delete(uuid, traffic_property_name): # noqa: E501 + """removes tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_get(uuid, traffic_property_name): # noqa: E501 + """returns tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + + :rtype: TapiTopologyLatencyCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_put(uuid, traffic_property_name, body=None): # noqa: E501 + """creates or updates tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + :param body: tapi.topology.LatencyCharacteristic to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyLatencyCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_delete(uuid): # noqa: E501 + """removes tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_get(uuid): # noqa: E501 + """returns tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiPathComputationValueOrPriorityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_delete(uuid): # noqa: E501 + """removes tapi.path.computation.ValueOrPriority + + Delay unit is microseconds. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_get(uuid): # noqa: E501 + """returns tapi.path.computation.ValueOrPriority + + Delay unit is microseconds. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiPathComputationValueOrPriorityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.ValueOrPriority + + Delay unit is microseconds. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.ValueOrPriority + + Delay unit is microseconds. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_delete(uuid): # noqa: E501 + """removes tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_get(uuid): # noqa: E501 + """returns tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiPathComputationValueOrPriorityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_name_post(uuid, body=None): # noqa: E501 + """creates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.NameAndValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_delete(uuid, value_name): # noqa: E501 + """removes tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_put(uuid, value_name, body=None): # noqa: E501 + """creates or updates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + :param body: tapi.common.NameAndValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.connectivity.ConnectivityService + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.connectivity.ConnectivityService to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityServiceWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_delete(uuid): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_post(uuid, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_delete(uuid): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_post(uuid, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_delete(uuid): # noqa: E501 + """removes tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_get(uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_delete(uuid): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_post(uuid, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_delete(uuid): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_post(uuid, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_post(uuid, body=None): # noqa: E501 + """creates tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.BandwidthProfile to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonBandwidthProfileWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.BandwidthProfile to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonBandwidthProfileWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_delete(uuid): # noqa: E501 + """removes tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_get(uuid): # noqa: E501 + """returns tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_post(uuid, body=None): # noqa: E501 + """creates tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.Capacity to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.Capacity to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_delete(uuid): # noqa: E501 + """removes tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_get(uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_post(uuid, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_delete(uuid): # noqa: E501 + """removes tapi.topology.ResilienceType + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_get(uuid): # noqa: E501 + """returns tapi.topology.ResilienceType + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiTopologyResilienceTypeWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_post(uuid, body=None): # noqa: E501 + """creates tapi.topology.ResilienceType + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.topology.ResilienceType to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyResilienceTypeWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.topology.ResilienceType + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.topology.ResilienceType to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyResilienceTypeWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristic_post(uuid, body=None): # noqa: E501 + """creates tapi.topology.RiskCharacteristic + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.topology.RiskCharacteristic to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyRiskCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_delete(uuid, risk_characteristic_name): # noqa: E501 + """removes tapi.topology.RiskCharacteristic + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param risk_characteristic_name: Id of risk-diversity-characteristic + :type risk_characteristic_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_get(uuid, risk_characteristic_name): # noqa: E501 + """returns tapi.topology.RiskCharacteristic + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param risk_characteristic_name: Id of risk-diversity-characteristic + :type risk_characteristic_name: str + + :rtype: TapiTopologyRiskCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_put(uuid, risk_characteristic_name, body=None): # noqa: E501 + """creates or updates tapi.topology.RiskCharacteristic + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param risk_characteristic_name: Id of risk-diversity-characteristic + :type risk_characteristic_name: str + :param body: tapi.topology.RiskCharacteristic to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyRiskCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_delete(uuid): # noqa: E501 + """removes tapi.common.TimeRange + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_get(uuid): # noqa: E501 + """returns tapi.common.TimeRange + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + + :rtype: TapiCommonTimeRangeWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_post(uuid, body=None): # noqa: E501 + """creates tapi.common.TimeRange + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.TimeRange to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonTimeRangeWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.common.TimeRange + + none # noqa: E501 + + :param uuid: Id of connectivity-service + :type uuid: str + :param body: tapi.common.TimeRange to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonTimeRangeWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_delete(): # noqa: E501 + """removes tapi.connectivity.ConnectivityContext + + Augments the base TAPI Context with ConnectivityService information # noqa: E501 + + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_get(): # noqa: E501 + """returns tapi.connectivity.ConnectivityContext + + Augments the base TAPI Context with ConnectivityService information # noqa: E501 + + + :rtype: TapiConnectivityConnectivityContextWrapper + """ + if database.context.connectivity_context is None: + database.context.connectivity_context = TapiConnectivityConnectivityContext( + connectivity_service=[], connection=[] + ) + return database.connectivity_context() + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_post(body=None): # noqa: E501 + """creates tapi.connectivity.ConnectivityContext + + Augments the base TAPI Context with ConnectivityService information # noqa: E501 + + :param body: tapi.connectivity.ConnectivityContext to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityContextWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_connectivityconnectivity_context_put(body=None): # noqa: E501 + """creates or updates tapi.connectivity.ConnectivityContext + + Augments the base TAPI Context with ConnectivityService information # noqa: E501 + + :param body: tapi.connectivity.ConnectivityContext to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiConnectivityConnectivityContextWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_aggregated_connection_end_pointtopology_uuidaggregated_connection_end_point_node_uuidnode_edge_point_uuidaggregated_connection_end_point_connection_end_point_uuid_get(uuid, node_uuid, owned_node_edge_point_uuid, connection_end_point_uuid, topology_uuid, aggregated_connection_end_point_node_uuid, node_edge_point_uuid, aggregated_connection_end_point_connection_end_point_uuid): # noqa: E501 + """returns tapi.connectivity.ConnectionEndPointRef + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + :param connection_end_point_uuid: Id of connection-end-point + :type connection_end_point_uuid: str + :param topology_uuid: Id of aggregated-connection-end-point + :type topology_uuid: str + :param aggregated_connection_end_point_node_uuid: Id of aggregated-connection-end-point + :type aggregated_connection_end_point_node_uuid: str + :param node_edge_point_uuid: Id of aggregated-connection-end-point + :type node_edge_point_uuid: str + :param aggregated_connection_end_point_connection_end_point_uuid: Id of aggregated-connection-end-point + :type aggregated_connection_end_point_connection_end_point_uuid: str + + :rtype: TapiConnectivityConnectionEndPointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_cep_role_connection_spec_reference_get(uuid, node_uuid, owned_node_edge_point_uuid, connection_end_point_uuid): # noqa: E501 + """returns tapi.connectivity.ConnectionSpecReference + + The reference to the spec that defines the cep role. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + :param connection_end_point_uuid: Id of connection-end-point + :type connection_end_point_uuid: str + + :rtype: TapiConnectivityConnectionSpecReferenceWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_cep_role_get(uuid, node_uuid, owned_node_edge_point_uuid, connection_end_point_uuid): # noqa: E501 + """returns tapi.connectivity.CepRole + + Defines the role of the CEP in the context of the connection spec. There may be many cep role - connection spec combinations for a particular CEP where each corresponds to a specific connection associated with the CEP. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + :param connection_end_point_uuid: Id of connection-end-point + :type connection_end_point_uuid: str + + :rtype: TapiConnectivityCepRoleWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_client_node_edge_pointtopology_uuidclient_node_edge_point_node_uuidnode_edge_point_uuid_get(uuid, node_uuid, owned_node_edge_point_uuid, connection_end_point_uuid, topology_uuid, client_node_edge_point_node_uuid, node_edge_point_uuid): # noqa: E501 + """returns tapi.topology.NodeEdgePointRef + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + :param connection_end_point_uuid: Id of connection-end-point + :type connection_end_point_uuid: str + :param topology_uuid: Id of client-node-edge-point + :type topology_uuid: str + :param client_node_edge_point_node_uuid: Id of client-node-edge-point + :type client_node_edge_point_node_uuid: str + :param node_edge_point_uuid: Id of client-node-edge-point + :type node_edge_point_uuid: str + + :rtype: TapiTopologyNodeEdgePointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_get(uuid, node_uuid, owned_node_edge_point_uuid, connection_end_point_uuid): # noqa: E501 + """returns tapi.connectivity.ConnectionEndPoint + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + :param connection_end_point_uuid: Id of connection-end-point + :type connection_end_point_uuid: str + + :rtype: TapiConnectivityConnectionEndPointWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_namevalue_name_get(uuid, node_uuid, owned_node_edge_point_uuid, connection_end_point_uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + :param connection_end_point_uuid: Id of connection-end-point + :type connection_end_point_uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_parent_node_edge_point_get(uuid, node_uuid, owned_node_edge_point_uuid, connection_end_point_uuid): # noqa: E501 + """returns tapi.topology.NodeEdgePointRef + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + :param connection_end_point_uuid: Id of connection-end-point + :type connection_end_point_uuid: str + + :rtype: TapiTopologyNodeEdgePointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.connectivity.CepList + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiConnectivityCepListWrapper + """ + return database.connection_end_point_list(uuid, node_uuid, owned_node_edge_point_uuid) + + +def operations_tapi_connectivitycreate_connectivity_service_post(body=None): # noqa: E501 + """operates on tapi.connectivity.CreateConnectivityService + + operates on tapi.connectivity.CreateConnectivityService # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiConnectivityCreateConnectivityService + """ + if connexion.request.is_json: + body = OperationsTapiconnectivitycreateconnectivityserviceBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def operations_tapi_connectivitydelete_connectivity_service_post(body=None): # noqa: E501 + """operates on tapi.connectivity.DeleteConnectivityService + + operates on tapi.connectivity.DeleteConnectivityService # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = OperationsTapiconnectivitydeleteconnectivityserviceBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def operations_tapi_connectivityget_connection_details_post(body=None): # noqa: E501 + """operates on tapi.connectivity.GetConnectionDetails + + operates on tapi.connectivity.GetConnectionDetails # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiConnectivityGetConnectionDetails + """ + if connexion.request.is_json: + body = OperationsTapiconnectivitygetconnectiondetailsBody.from_dict(connexion.request.get_json()) # noqa: E501 + return TapiConnectivityGetConnectionDetails(TapiConnectivityGetconnectiondetailsOutput( + database.connection(body.input.connection_id_or_name))) + + +def operations_tapi_connectivityget_connection_end_point_details_post(body=None): # noqa: E501 + """operates on tapi.connectivity.GetConnectionEndPointDetails + + operates on tapi.connectivity.GetConnectionEndPointDetails # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiConnectivityGetConnectionEndPointDetails + """ + if connexion.request.is_json: + body = OperationsTapiconnectivitygetconnectionendpointdetailsBody.from_dict(connexion.request.get_json()) # noqa: E501 + return TapiConnectivityGetConnectionEndPointDetails(TapiConnectivityGetconnectionendpointdetailsOutput( + database.connection_end_point(body.input.topology_id_or_name, + body.input.node_id_or_name, + body.input.nep_id_or_name, + body.input.cep_id_or_name))) + + +def operations_tapi_connectivityget_connectivity_service_details_post(body=None): # noqa: E501 + """operates on tapi.connectivity.GetConnectivityServiceDetails + + operates on tapi.connectivity.GetConnectivityServiceDetails # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiConnectivityGetConnectivityServiceDetails + """ + if connexion.request.is_json: + body = OperationsTapiconnectivitygetconnectivityservicedetailsBody.from_dict(connexion.request.get_json()) # noqa: E501 + return TapiConnectivityGetConnectivityServiceDetails(TapiConnectivityGetconnectivityservicedetailsOutput( + database.connectivity_service(body.input.service_id_or_name))) + + +def operations_tapi_connectivityget_connectivity_service_list_post(): # noqa: E501 + """operations_tapi_connectivityget_connectivity_service_list_post + + # noqa: E501 + + + :rtype: TapiConnectivityGetConnectivityServiceList + """ + return TapiConnectivityGetConnectivityServiceList(TapiConnectivityGetconnectivityservicelistOutput( + database.connectivity_service_list())) + + +def operations_tapi_connectivityupdate_connectivity_service_post(body=None): # noqa: E501 + """operates on tapi.connectivity.UpdateConnectivityService + + operates on tapi.connectivity.UpdateConnectivityService # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiConnectivityUpdateConnectivityService + """ + if connexion.request.is_json: + body = OperationsTapiconnectivityupdateconnectivityserviceBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' diff --git a/hackfest/tapi/server/tapi_server/controllers/tapi_notification_controller.py b/hackfest/tapi/server/tapi_server/controllers/tapi_notification_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..efb0dfd3ed866bec279be72b8e4774b78b332081 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/controllers/tapi_notification_controller.py @@ -0,0 +1,664 @@ +import connexion +import six + +from tapi_server.models.operations_tapinotificationcreatenotificationsubscriptionservice_body import OperationsTapinotificationcreatenotificationsubscriptionserviceBody # noqa: E501 +from tapi_server.models.operations_tapinotificationdeletenotificationsubscriptionservice_body import OperationsTapinotificationdeletenotificationsubscriptionserviceBody # noqa: E501 +from tapi_server.models.operations_tapinotificationgetnotificationlist_body import OperationsTapinotificationgetnotificationlistBody # noqa: E501 +from tapi_server.models.operations_tapinotificationgetnotificationsubscriptionservicedetails_body import OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody # noqa: E501 +from tapi_server.models.operations_tapinotificationupdatenotificationsubscriptionservice_body import OperationsTapinotificationupdatenotificationsubscriptionserviceBody # noqa: E501 +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper # noqa: E501 +from tapi_server.models.tapi_notification_alarm_info_wrapper import TapiNotificationAlarmInfoWrapper # noqa: E501 +from tapi_server.models.tapi_notification_create_notification_subscription_service import TapiNotificationCreateNotificationSubscriptionService # noqa: E501 +from tapi_server.models.tapi_notification_delete_notification_subscription_service import TapiNotificationDeleteNotificationSubscriptionService # noqa: E501 +from tapi_server.models.tapi_notification_get_notification_list import TapiNotificationGetNotificationList # noqa: E501 +from tapi_server.models.tapi_notification_get_notification_subscription_service_details import TapiNotificationGetNotificationSubscriptionServiceDetails # noqa: E501 +from tapi_server.models.tapi_notification_get_notification_subscription_service_list import TapiNotificationGetNotificationSubscriptionServiceList # noqa: E501 +from tapi_server.models.tapi_notification_get_supported_notification_types import TapiNotificationGetSupportedNotificationTypes # noqa: E501 +from tapi_server.models.tapi_notification_name_and_value_change_wrapper import TapiNotificationNameAndValueChangeWrapper # noqa: E501 +from tapi_server.models.tapi_notification_notification_channel_wrapper import TapiNotificationNotificationChannelWrapper # noqa: E501 +from tapi_server.models.tapi_notification_notification_context_wrapper import TapiNotificationNotificationContextWrapper # noqa: E501 +from tapi_server.models.tapi_notification_notification_subscription_service_wrapper import TapiNotificationNotificationSubscriptionServiceWrapper # noqa: E501 +from tapi_server.models.tapi_notification_notification_wrapper import TapiNotificationNotificationWrapper # noqa: E501 +from tapi_server.models.tapi_notification_subscription_filter_wrapper import TapiNotificationSubscriptionFilterWrapper # noqa: E501 +from tapi_server.models.tapi_notification_tca_info_wrapper import TapiNotificationTcaInfoWrapper # noqa: E501 +from tapi_server.models.tapi_notification_update_notification_subscription_service import TapiNotificationUpdateNotificationSubscriptionService # noqa: E501 +from tapi_server import util + + +def data_tapi_commoncontext_tapi_notificationnotification_context_delete(): # noqa: E501 + """removes tapi.notification.NotificationContext + + Augments the base TAPI Context with NotificationService information # noqa: E501 + + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_get(): # noqa: E501 + """returns tapi.notification.NotificationContext + + Augments the base TAPI Context with NotificationService information # noqa: E501 + + + :rtype: TapiNotificationNotificationContextWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscription_post(body=None): # noqa: E501 + """creates tapi.notification.NotificationSubscriptionService + + none # noqa: E501 + + :param body: tapi.notification.NotificationSubscriptionService to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiNotificationNotificationSubscriptionServiceWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_delete(uuid): # noqa: E501 + """removes tapi.notification.NotificationSubscriptionService + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_get(uuid): # noqa: E501 + """returns tapi.notification.NotificationSubscriptionService + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + + :rtype: TapiNotificationNotificationSubscriptionServiceWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_name_post(uuid, body=None): # noqa: E501 + """creates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param body: tapi.common.NameAndValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_delete(uuid, value_name): # noqa: E501 + """removes tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_put(uuid, value_name, body=None): # noqa: E501 + """creates or updates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param value_name: Id of name + :type value_name: str + :param body: tapi.common.NameAndValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notification_channel_get(uuid): # noqa: E501 + """returns tapi.notification.NotificationChannel + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + + :rtype: TapiNotificationNotificationChannelWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notification_channel_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_additional_infovalue_name_get(uuid, notification_uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param notification_uuid: Id of notification + :type notification_uuid: str + :param value_name: Id of additional-info + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_alarm_info_get(uuid, notification_uuid): # noqa: E501 + """returns tapi.notification.AlarmInfo + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param notification_uuid: Id of notification + :type notification_uuid: str + + :rtype: TapiNotificationAlarmInfoWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_changed_attributesvalue_name_get(uuid, notification_uuid, value_name): # noqa: E501 + """returns tapi.notification.NameAndValueChange + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param notification_uuid: Id of notification + :type notification_uuid: str + :param value_name: Id of changed-attributes + :type value_name: str + + :rtype: TapiNotificationNameAndValueChangeWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_get(uuid, notification_uuid): # noqa: E501 + """returns tapi.notification.Notification + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param notification_uuid: Id of notification + :type notification_uuid: str + + :rtype: TapiNotificationNotificationWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_namevalue_name_get(uuid, notification_uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param notification_uuid: Id of notification + :type notification_uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_target_object_namevalue_name_get(uuid, notification_uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param notification_uuid: Id of notification + :type notification_uuid: str + :param value_name: Id of target-object-name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_tca_info_get(uuid, notification_uuid): # noqa: E501 + """returns tapi.notification.TcaInfo + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param notification_uuid: Id of notification + :type notification_uuid: str + + :rtype: TapiNotificationTcaInfoWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.notification.NotificationSubscriptionService + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param body: tapi.notification.NotificationSubscriptionService to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiNotificationNotificationSubscriptionServiceWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_delete(uuid): # noqa: E501 + """removes tapi.notification.SubscriptionFilter + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_get(uuid): # noqa: E501 + """returns tapi.notification.SubscriptionFilter + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + + :rtype: TapiNotificationSubscriptionFilterWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_name_post(uuid, body=None): # noqa: E501 + """creates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param body: tapi.common.NameAndValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_delete(uuid, value_name): # noqa: E501 + """removes tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_put(uuid, value_name, body=None): # noqa: E501 + """creates or updates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param value_name: Id of name + :type value_name: str + :param body: tapi.common.NameAndValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_post(uuid, body=None): # noqa: E501 + """creates tapi.notification.SubscriptionFilter + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param body: tapi.notification.SubscriptionFilter to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiNotificationSubscriptionFilterWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.notification.SubscriptionFilter + + none # noqa: E501 + + :param uuid: Id of notif-subscription + :type uuid: str + :param body: tapi.notification.SubscriptionFilter to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiNotificationSubscriptionFilterWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_additional_infovalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + none # noqa: E501 + + :param uuid: Id of notification + :type uuid: str + :param value_name: Id of additional-info + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_alarm_info_get(uuid): # noqa: E501 + """returns tapi.notification.AlarmInfo + + none # noqa: E501 + + :param uuid: Id of notification + :type uuid: str + + :rtype: TapiNotificationAlarmInfoWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_changed_attributesvalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.notification.NameAndValueChange + + none # noqa: E501 + + :param uuid: Id of notification + :type uuid: str + :param value_name: Id of changed-attributes + :type value_name: str + + :rtype: TapiNotificationNameAndValueChangeWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_get(uuid): # noqa: E501 + """returns tapi.notification.Notification + + none # noqa: E501 + + :param uuid: Id of notification + :type uuid: str + + :rtype: TapiNotificationNotificationWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of notification + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_target_object_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + none # noqa: E501 + + :param uuid: Id of notification + :type uuid: str + :param value_name: Id of target-object-name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_tca_info_get(uuid): # noqa: E501 + """returns tapi.notification.TcaInfo + + none # noqa: E501 + + :param uuid: Id of notification + :type uuid: str + + :rtype: TapiNotificationTcaInfoWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_post(body=None): # noqa: E501 + """creates tapi.notification.NotificationContext + + Augments the base TAPI Context with NotificationService information # noqa: E501 + + :param body: tapi.notification.NotificationContext to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiNotificationNotificationContextWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_notificationnotification_context_put(body=None): # noqa: E501 + """creates or updates tapi.notification.NotificationContext + + Augments the base TAPI Context with NotificationService information # noqa: E501 + + :param body: tapi.notification.NotificationContext to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiNotificationNotificationContextWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def operations_tapi_notificationcreate_notification_subscription_service_post(body=None): # noqa: E501 + """operates on tapi.notification.CreateNotificationSubscriptionService + + operates on tapi.notification.CreateNotificationSubscriptionService # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiNotificationCreateNotificationSubscriptionService + """ + if connexion.request.is_json: + body = OperationsTapinotificationcreatenotificationsubscriptionserviceBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def operations_tapi_notificationdelete_notification_subscription_service_post(body=None): # noqa: E501 + """operates on tapi.notification.DeleteNotificationSubscriptionService + + operates on tapi.notification.DeleteNotificationSubscriptionService # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiNotificationDeleteNotificationSubscriptionService + """ + if connexion.request.is_json: + body = OperationsTapinotificationdeletenotificationsubscriptionserviceBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def operations_tapi_notificationget_notification_list_post(body=None): # noqa: E501 + """operates on tapi.notification.GetNotificationList + + operates on tapi.notification.GetNotificationList # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiNotificationGetNotificationList + """ + if connexion.request.is_json: + body = OperationsTapinotificationgetnotificationlistBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def operations_tapi_notificationget_notification_subscription_service_details_post(body=None): # noqa: E501 + """operates on tapi.notification.GetNotificationSubscriptionServiceDetails + + operates on tapi.notification.GetNotificationSubscriptionServiceDetails # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiNotificationGetNotificationSubscriptionServiceDetails + """ + if connexion.request.is_json: + body = OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def operations_tapi_notificationget_notification_subscription_service_list_post(): # noqa: E501 + """operations_tapi_notificationget_notification_subscription_service_list_post + + # noqa: E501 + + + :rtype: TapiNotificationGetNotificationSubscriptionServiceList + """ + return 'do some magic!' + + +def operations_tapi_notificationget_supported_notification_types_post(): # noqa: E501 + """operations_tapi_notificationget_supported_notification_types_post + + # noqa: E501 + + + :rtype: TapiNotificationGetSupportedNotificationTypes + """ + return 'do some magic!' + + +def operations_tapi_notificationupdate_notification_subscription_service_post(body=None): # noqa: E501 + """operates on tapi.notification.UpdateNotificationSubscriptionService + + operates on tapi.notification.UpdateNotificationSubscriptionService # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiNotificationUpdateNotificationSubscriptionService + """ + if connexion.request.is_json: + body = OperationsTapinotificationupdatenotificationsubscriptionserviceBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' diff --git a/hackfest/tapi/server/tapi_server/controllers/tapi_path_computation_controller.py b/hackfest/tapi/server/tapi_server/controllers/tapi_path_computation_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..012d1f915c0da0334e589c15023a27a37854754f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/controllers/tapi_path_computation_controller.py @@ -0,0 +1,1841 @@ +import connexion +import six + +from tapi_server.models.operations_tapipathcomputationcomputep2ppath_body import OperationsTapipathcomputationcomputep2ppathBody # noqa: E501 +from tapi_server.models.operations_tapipathcomputationdeletep2ppath_body import OperationsTapipathcomputationdeletep2ppathBody # noqa: E501 +from tapi_server.models.operations_tapipathcomputationoptimizep2ppath_body import OperationsTapipathcomputationoptimizep2ppathBody # noqa: E501 +from tapi_server.models.tapi_common_bandwidth_profile_wrapper import TapiCommonBandwidthProfileWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_value_wrapper import TapiCommonCapacityValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_wrapper import TapiCommonCapacityWrapper # noqa: E501 +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_service_interface_point_ref_wrapper import TapiCommonServiceInterfacePointRefWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_compute_p2_p_path import TapiPathComputationComputeP2PPath # noqa: E501 +from tapi_server.models.tapi_path_computation_delete_p2_p_path import TapiPathComputationDeleteP2PPath # noqa: E501 +from tapi_server.models.tapi_path_computation_optimize_p2_ppath import TapiPathComputationOptimizeP2Ppath # noqa: E501 +from tapi_server.models.tapi_path_computation_path_computation_context_wrapper import TapiPathComputationPathComputationContextWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_computation_service_wrapper import TapiPathComputationPathComputationServiceWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_objective_function_wrapper import TapiPathComputationPathObjectiveFunctionWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_optimization_constraint_wrapper import TapiPathComputationPathOptimizationConstraintWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_ref_wrapper import TapiPathComputationPathRefWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_service_end_point_wrapper import TapiPathComputationPathServiceEndPointWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_wrapper import TapiPathComputationPathWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_routing_constraint_wrapper import TapiPathComputationRoutingConstraintWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_topology_constraint_wrapper import TapiPathComputationTopologyConstraintWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_value_or_priority_wrapper import TapiPathComputationValueOrPriorityWrapper # noqa: E501 +from tapi_server.models.tapi_topology_cost_characteristic_wrapper import TapiTopologyCostCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_latency_characteristic_wrapper import TapiTopologyLatencyCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_link_ref_wrapper import TapiTopologyLinkRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_risk_characteristic_wrapper import TapiTopologyRiskCharacteristicWrapper # noqa: E501 +from tapi_server import util + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_delete(): # noqa: E501 + """removes tapi.path.computation.PathComputationContext + + Augments the base TAPI Context with PathComputationService information # noqa: E501 + + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_get(): # noqa: E501 + """returns tapi.path.computation.PathComputationContext + + Augments the base TAPI Context with PathComputationService information # noqa: E501 + + + :rtype: TapiPathComputationPathComputationContextWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_service_post(body=None): # noqa: E501 + """creates tapi.path.computation.PathComputationService + + none # noqa: E501 + + :param body: tapi.path.computation.PathComputationService to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationPathComputationServiceWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_delete(uuid): # noqa: E501 + """removes tapi.path.computation.PathComputationService + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_point_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.PathServiceEndPoint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.PathServiceEndPoint to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationPathServiceEndPointWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_get(uuid, local_id): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_get(uuid, local_id): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_get(uuid, local_id): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_get(uuid, local_id): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_get(uuid, local_id): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.BandwidthProfile to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonBandwidthProfileWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.BandwidthProfile to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonBandwidthProfileWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_get(uuid, local_id): # noqa: E501 + """returns tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.Capacity to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.Capacity + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.Capacity to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_get(uuid, local_id): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.CapacityValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonCapacityValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_delete(uuid, local_id): # noqa: E501 + """removes tapi.path.computation.PathServiceEndPoint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_get(uuid, local_id): # noqa: E501 + """returns tapi.path.computation.PathServiceEndPoint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiPathComputationPathServiceEndPointWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_name_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.NameAndValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_delete(uuid, local_id, value_name): # noqa: E501 + """removes tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param value_name: Id of name + :type value_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_get(uuid, local_id, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_put(uuid, local_id, value_name, body=None): # noqa: E501 + """creates or updates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param value_name: Id of name + :type value_name: str + :param body: tapi.common.NameAndValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.path.computation.PathServiceEndPoint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.path.computation.PathServiceEndPoint to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationPathServiceEndPointWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_delete(uuid, local_id): # noqa: E501 + """removes tapi.common.ServiceInterfacePointRef + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_get(uuid, local_id): # noqa: E501 + """returns tapi.common.ServiceInterfacePointRef + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + + :rtype: TapiCommonServiceInterfacePointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_post(uuid, local_id, body=None): # noqa: E501 + """creates tapi.common.ServiceInterfacePointRef + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.ServiceInterfacePointRef to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonServiceInterfacePointRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_put(uuid, local_id, body=None): # noqa: E501 + """creates or updates tapi.common.ServiceInterfacePointRef + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param local_id: Id of end-point + :type local_id: str + :param body: tapi.common.ServiceInterfacePointRef to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonServiceInterfacePointRefWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_get(uuid): # noqa: E501 + """returns tapi.path.computation.PathComputationService + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: TapiPathComputationPathComputationServiceWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_name_post(uuid, body=None): # noqa: E501 + """creates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.common.NameAndValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_delete(uuid, value_name): # noqa: E501 + """removes tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_put(uuid, value_name, body=None): # noqa: E501 + """creates or updates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + :param body: tapi.common.NameAndValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_delete(uuid): # noqa: E501 + """removes tapi.path.computation.PathObjectiveFunction + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_get(uuid): # noqa: E501 + """returns tapi.path.computation.PathObjectiveFunction + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: TapiPathComputationPathObjectiveFunctionWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_name_post(uuid, body=None): # noqa: E501 + """creates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.common.NameAndValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_delete(uuid, value_name): # noqa: E501 + """removes tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_put(uuid, value_name, body=None): # noqa: E501 + """creates or updates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + :param body: tapi.common.NameAndValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.PathObjectiveFunction + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.PathObjectiveFunction to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationPathObjectiveFunctionWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.PathObjectiveFunction + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.PathObjectiveFunction to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationPathObjectiveFunctionWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_delete(uuid): # noqa: E501 + """removes tapi.path.computation.PathOptimizationConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_get(uuid): # noqa: E501 + """returns tapi.path.computation.PathOptimizationConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: TapiPathComputationPathOptimizationConstraintWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_name_post(uuid, body=None): # noqa: E501 + """creates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.common.NameAndValue to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_delete(uuid, value_name): # noqa: E501 + """removes tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_put(uuid, value_name, body=None): # noqa: E501 + """creates or updates tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param value_name: Id of name + :type value_name: str + :param body: tapi.common.NameAndValue to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiCommonNameAndValueWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.PathOptimizationConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.PathOptimizationConstraint to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationPathOptimizationConstraintWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.PathOptimizationConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.PathOptimizationConstraint to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationPathOptimizationConstraintWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_pathpath_uuid_get(uuid, path_uuid): # noqa: E501 + """returns tapi.path.computation.PathRef + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param path_uuid: Id of path + :type path_uuid: str + + :rtype: TapiPathComputationPathRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.PathComputationService + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.PathComputationService to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationPathComputationServiceWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristic_post(uuid, body=None): # noqa: E501 + """creates tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.topology.CostCharacteristic to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyCostCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_delete(uuid, cost_name): # noqa: E501 + """removes tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_get(uuid, cost_name): # noqa: E501 + """returns tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + + :rtype: TapiTopologyCostCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_put(uuid, cost_name, body=None): # noqa: E501 + """creates or updates tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + :param body: tapi.topology.CostCharacteristic to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyCostCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_delete(uuid): # noqa: E501 + """removes tapi.path.computation.RoutingConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_get(uuid): # noqa: E501 + """returns tapi.path.computation.RoutingConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: TapiPathComputationRoutingConstraintWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristic_post(uuid, body=None): # noqa: E501 + """creates tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.topology.LatencyCharacteristic to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyLatencyCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_delete(uuid, traffic_property_name): # noqa: E501 + """removes tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_get(uuid, traffic_property_name): # noqa: E501 + """returns tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + + :rtype: TapiTopologyLatencyCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_put(uuid, traffic_property_name, body=None): # noqa: E501 + """creates or updates tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + :param body: tapi.topology.LatencyCharacteristic to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyLatencyCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_delete(uuid): # noqa: E501 + """removes tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_get(uuid): # noqa: E501 + """returns tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: TapiPathComputationValueOrPriorityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_delete(uuid): # noqa: E501 + """removes tapi.path.computation.ValueOrPriority + + Delay unit is microseconds. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_get(uuid): # noqa: E501 + """returns tapi.path.computation.ValueOrPriority + + Delay unit is microseconds. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: TapiPathComputationValueOrPriorityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.ValueOrPriority + + Delay unit is microseconds. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.ValueOrPriority + + Delay unit is microseconds. # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_delete(uuid): # noqa: E501 + """removes tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_get(uuid): # noqa: E501 + """returns tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: TapiPathComputationValueOrPriorityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.ValueOrPriority to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationValueOrPriorityWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.RoutingConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.RoutingConstraint to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationRoutingConstraintWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.RoutingConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.RoutingConstraint to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationRoutingConstraintWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristic_post(uuid, body=None): # noqa: E501 + """creates tapi.topology.RiskCharacteristic + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.topology.RiskCharacteristic to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyRiskCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_delete(uuid, risk_characteristic_name): # noqa: E501 + """removes tapi.topology.RiskCharacteristic + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param risk_characteristic_name: Id of risk-diversity-characteristic + :type risk_characteristic_name: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_get(uuid, risk_characteristic_name): # noqa: E501 + """returns tapi.topology.RiskCharacteristic + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param risk_characteristic_name: Id of risk-diversity-characteristic + :type risk_characteristic_name: str + + :rtype: TapiTopologyRiskCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_put(uuid, risk_characteristic_name, body=None): # noqa: E501 + """creates or updates tapi.topology.RiskCharacteristic + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param risk_characteristic_name: Id of risk-diversity-characteristic + :type risk_characteristic_name: str + :param body: tapi.topology.RiskCharacteristic to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyRiskCharacteristicWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_delete(uuid): # noqa: E501 + """removes tapi.path.computation.TopologyConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_get(uuid): # noqa: E501 + """returns tapi.path.computation.TopologyConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + + :rtype: TapiPathComputationTopologyConstraintWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_post(uuid, body=None): # noqa: E501 + """creates tapi.path.computation.TopologyConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.TopologyConstraint to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationTopologyConstraintWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_put(uuid, body=None): # noqa: E501 + """creates or updates tapi.path.computation.TopologyConstraint + + none # noqa: E501 + + :param uuid: Id of path-comp-service + :type uuid: str + :param body: tapi.path.computation.TopologyConstraint to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationTopologyConstraintWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_get(uuid): # noqa: E501 + """returns tapi.path.computation.Path + + none # noqa: E501 + + :param uuid: Id of path + :type uuid: str + + :rtype: TapiPathComputationPathWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_linktopology_uuidlink_uuid_get(uuid, topology_uuid, link_uuid): # noqa: E501 + """returns tapi.topology.LinkRef + + none # noqa: E501 + + :param uuid: Id of path + :type uuid: str + :param topology_uuid: Id of link + :type topology_uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiTopologyLinkRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of path + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_cost_characteristiccost_name_get(uuid, cost_name): # noqa: E501 + """returns tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of path + :type uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + + :rtype: TapiTopologyCostCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_get(uuid): # noqa: E501 + """returns tapi.path.computation.RoutingConstraint + + none # noqa: E501 + + :param uuid: Id of path + :type uuid: str + + :rtype: TapiPathComputationRoutingConstraintWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_latency_characteristictraffic_property_name_get(uuid, traffic_property_name): # noqa: E501 + """returns tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of path + :type uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + + :rtype: TapiTopologyLatencyCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_cost_get(uuid): # noqa: E501 + """returns tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of path + :type uuid: str + + :rtype: TapiPathComputationValueOrPriorityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_delay_get(uuid): # noqa: E501 + """returns tapi.path.computation.ValueOrPriority + + Delay unit is microseconds. # noqa: E501 + + :param uuid: Id of path + :type uuid: str + + :rtype: TapiPathComputationValueOrPriorityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_hops_get(uuid): # noqa: E501 + """returns tapi.path.computation.ValueOrPriority + + none # noqa: E501 + + :param uuid: Id of path + :type uuid: str + + :rtype: TapiPathComputationValueOrPriorityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_get(uuid, risk_characteristic_name): # noqa: E501 + """returns tapi.topology.RiskCharacteristic + + none # noqa: E501 + + :param uuid: Id of path + :type uuid: str + :param risk_characteristic_name: Id of risk-diversity-characteristic + :type risk_characteristic_name: str + + :rtype: TapiTopologyRiskCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_post(body=None): # noqa: E501 + """creates tapi.path.computation.PathComputationContext + + Augments the base TAPI Context with PathComputationService information # noqa: E501 + + :param body: tapi.path.computation.PathComputationContext to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationPathComputationContextWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_path_computationpath_computation_context_put(body=None): # noqa: E501 + """creates or updates tapi.path.computation.PathComputationContext + + Augments the base TAPI Context with PathComputationService information # noqa: E501 + + :param body: tapi.path.computation.PathComputationContext to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiPathComputationPathComputationContextWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def operations_tapi_path_computationcompute_p_2_p_path_post(body=None): # noqa: E501 + """operates on tapi.path.computation.ComputeP2PPath + + operates on tapi.path.computation.ComputeP2PPath # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiPathComputationComputeP2PPath + """ + if connexion.request.is_json: + body = OperationsTapipathcomputationcomputep2ppathBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def operations_tapi_path_computationdelete_p_2_p_path_post(body=None): # noqa: E501 + """operates on tapi.path.computation.DeleteP2PPath + + operates on tapi.path.computation.DeleteP2PPath # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiPathComputationDeleteP2PPath + """ + if connexion.request.is_json: + body = OperationsTapipathcomputationdeletep2ppathBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def operations_tapi_path_computationoptimize_p_2_ppath_post(body=None): # noqa: E501 + """operates on tapi.path.computation.OptimizeP2Ppath + + operates on tapi.path.computation.OptimizeP2Ppath # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiPathComputationOptimizeP2Ppath + """ + if connexion.request.is_json: + body = OperationsTapipathcomputationoptimizep2ppathBody.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' diff --git a/hackfest/tapi/server/tapi_server/controllers/tapi_topology_controller.py b/hackfest/tapi/server/tapi_server/controllers/tapi_topology_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..536be48d38978f220df04f7d4cd2f479ef7fa14d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/controllers/tapi_topology_controller.py @@ -0,0 +1,2193 @@ +import connexion +import six + +from tapi_server.models.operations_tapitopologygetlinkdetails_body import OperationsTapitopologygetlinkdetailsBody # noqa: E501 +from tapi_server.models.operations_tapitopologygetnodedetails_body import OperationsTapitopologygetnodedetailsBody # noqa: E501 +from tapi_server.models.operations_tapitopologygetnodeedgepointdetails_body import OperationsTapitopologygetnodeedgepointdetailsBody # noqa: E501 +from tapi_server.models.operations_tapitopologygettopologydetails_body import OperationsTapitopologygettopologydetailsBody # noqa: E501 +from tapi_server.models.tapi_common_bandwidth_profile_wrapper import TapiCommonBandwidthProfileWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_value_wrapper import TapiCommonCapacityValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_wrapper import TapiCommonCapacityWrapper # noqa: E501 +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_service_interface_point_ref_wrapper import TapiCommonServiceInterfacePointRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_connection_spec_reference_wrapper import TapiTopologyConnectionSpecReferenceWrapper # noqa: E501 +from tapi_server.models.tapi_topology_cost_characteristic_wrapper import TapiTopologyCostCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_get_link_details import TapiTopologyGetLinkDetails # noqa: E501 +from tapi_server.models.tapi_topology_get_node_details import TapiTopologyGetNodeDetails # noqa: E501 +from tapi_server.models.tapi_topology_get_node_edge_point_details import TapiTopologyGetNodeEdgePointDetails # noqa: E501 +from tapi_server.models.tapi_topology_get_topology_details import TapiTopologyGetTopologyDetails # noqa: E501 +from tapi_server.models.tapi_topology_get_topology_list import TapiTopologyGetTopologyList # noqa: E501 +from tapi_server.models.tapi_topology_inter_rule_group_wrapper import TapiTopologyInterRuleGroupWrapper # noqa: E501 +from tapi_server.models.tapi_topology_latency_characteristic_wrapper import TapiTopologyLatencyCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_link_wrapper import TapiTopologyLinkWrapper # noqa: E501 +from tapi_server.models.tapi_topology_network_topology_service_wrapper import TapiTopologyNetworkTopologyServiceWrapper # noqa: E501 +from tapi_server.models.tapi_topology_node_edge_point_ref_wrapper import TapiTopologyNodeEdgePointRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_node_owned_node_edge_point_wrapper import TapiTopologyNodeOwnedNodeEdgePointWrapper # noqa: E501 +from tapi_server.models.tapi_topology_node_rule_group_ref_wrapper import TapiTopologyNodeRuleGroupRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_node_rule_group_wrapper import TapiTopologyNodeRuleGroupWrapper # noqa: E501 +from tapi_server.models.tapi_topology_port_role_rule_wrapper import TapiTopologyPortRoleRuleWrapper # noqa: E501 +from tapi_server.models.tapi_topology_resilience_type_wrapper import TapiTopologyResilienceTypeWrapper # noqa: E501 +from tapi_server.models.tapi_topology_risk_characteristic_wrapper import TapiTopologyRiskCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_rule_wrapper import TapiTopologyRuleWrapper # noqa: E501 +from tapi_server.models.tapi_topology_signal_property_rule_wrapper import TapiTopologySignalPropertyRuleWrapper # noqa: E501 +from tapi_server.models.tapi_topology_topology_context_wrapper import TapiTopologyTopologyContextWrapper # noqa: E501 +from tapi_server.models.tapi_topology_topology_node_wrapper import TapiTopologyTopologyNodeWrapper # noqa: E501 +from tapi_server.models.tapi_topology_topology_ref_wrapper import TapiTopologyTopologyRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_topology_wrapper import TapiTopologyTopologyWrapper # noqa: E501 +from tapi_server.models.tapi_topology_validation_mechanism_wrapper import TapiTopologyValidationMechanismWrapper # noqa: E501 +from tapi_server import util + +from tapi_server.models.tapi_topology_getlinkdetails_output import TapiTopologyGetlinkdetailsOutput +from tapi_server.models.tapi_topology_getnodeedgepointdetails_output import TapiTopologyGetnodeedgepointdetailsOutput +from tapi_server.models.tapi_topology_getnodedetails_output import TapiTopologyGetnodedetailsOutput +from tapi_server.models.tapi_topology_gettopologylist_output import TapiTopologyGettopologylistOutput +from tapi_server.models.tapi_topology_gettopologydetails_output import TapiTopologyGettopologydetailsOutput +from tapi_server import database + + +def data_tapi_commoncontext_tapi_topologytopology_context_delete(): # noqa: E501 + """removes tapi.topology.context.TopologyContext + + Augments the base TAPI Context with TopologyService information # noqa: E501 + + + :rtype: None + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_get(): # noqa: E501 + """returns tapi.topology.context.TopologyContext + + Augments the base TAPI Context with TopologyService information # noqa: E501 + + + :rtype: TapiTopologyTopologyContextWrapper + """ + return database.context.topology_context + + +def data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_get(): # noqa: E501 + """returns tapi.topology.NetworkTopologyService + + none # noqa: E501 + + + :rtype: TapiTopologyNetworkTopologyServiceWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_namevalue_name_get(value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_topologytopology_uuid_get(topology_uuid): # noqa: E501 + """returns tapi.topology.TopologyRef + + none # noqa: E501 + + :param topology_uuid: Id of topology + :type topology_uuid: str + + :rtype: TapiTopologyTopologyRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_post(body=None): # noqa: E501 + """creates tapi.topology.context.TopologyContext + + Augments the base TAPI Context with TopologyService information # noqa: E501 + + :param body: tapi.topology.TopologyContext to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyTopologyContextWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_put(body=None): # noqa: E501 + """creates or updates tapi.topology.context.TopologyContext + + Augments the base TAPI Context with TopologyService information # noqa: E501 + + :param body: tapi.topology.TopologyContext to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TapiTopologyTopologyContextWrapper.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_get(uuid): # noqa: E501 + """returns tapi.topology.topologycontext.Topology + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + + :rtype: TapiTopologyTopologyWrapper + """ + return database.topology(uuid) + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_committed_burst_size_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_committed_information_rate_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_peak_burst_size_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_peak_information_rate_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.Capacity + + Capacity available to be assigned. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_total_size_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_cost_characteristiccost_name_get(uuid, link_uuid, cost_name): # noqa: E501 + """returns tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + + :rtype: TapiTopologyCostCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_get(uuid, link_uuid): # noqa: E501 + """returns tapi.topology.Link + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiTopologyLinkWrapper + """ + return database.link(uuid, link_uuid) + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_latency_characteristictraffic_property_name_get(uuid, link_uuid, traffic_property_name): # noqa: E501 + """returns tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + + :rtype: TapiTopologyLatencyCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_namevalue_name_get(uuid, link_uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_node_edge_pointtopology_uuidnode_uuidnode_edge_point_uuid_get(uuid, link_uuid, topology_uuid, node_uuid, node_edge_point_uuid): # noqa: E501 + """returns tapi.topology.NodeEdgePointRef + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + :param topology_uuid: Id of node-edge-point + :type topology_uuid: str + :param node_uuid: Id of node-edge-point + :type node_uuid: str + :param node_edge_point_uuid: Id of node-edge-point + :type node_edge_point_uuid: str + + :rtype: TapiTopologyNodeEdgePointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_resilience_type_get(uuid, link_uuid): # noqa: E501 + """returns tapi.topology.ResilienceType + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiTopologyResilienceTypeWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_risk_characteristicrisk_characteristic_name_get(uuid, link_uuid, risk_characteristic_name): # noqa: E501 + """returns tapi.topology.RiskCharacteristic + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + :param risk_characteristic_name: Id of risk-characteristic + :type risk_characteristic_name: str + + :rtype: TapiTopologyRiskCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.Capacity + + An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_total_size_get(uuid, link_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_validation_mechanismvalidation_mechanism_get(uuid, link_uuid, validation_mechanism): # noqa: E501 + """returns tapi.topology.ValidationMechanism + + Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param link_uuid: Id of link + :type link_uuid: str + :param validation_mechanism: Id of validation-mechanism + :type validation_mechanism: str + + :rtype: TapiTopologyValidationMechanismWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_namevalue_name_get(uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_aggregated_node_edge_pointtopology_uuidaggregated_node_edge_point_node_uuidnode_edge_point_uuid_get(uuid, node_uuid, topology_uuid, aggregated_node_edge_point_node_uuid, node_edge_point_uuid): # noqa: E501 + """returns tapi.topology.NodeEdgePointRef + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param topology_uuid: Id of aggregated-node-edge-point + :type topology_uuid: str + :param aggregated_node_edge_point_node_uuid: Id of aggregated-node-edge-point + :type aggregated_node_edge_point_node_uuid: str + :param node_edge_point_uuid: Id of aggregated-node-edge-point + :type node_edge_point_uuid: str + + :rtype: TapiTopologyNodeEdgePointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_committed_burst_size_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_committed_information_rate_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_peak_burst_size_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_peak_information_rate_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.Capacity + + Capacity available to be assigned. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_total_size_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_cost_characteristiccost_name_get(uuid, node_uuid, cost_name): # noqa: E501 + """returns tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + + :rtype: TapiTopologyCostCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_encap_topology_get(uuid, node_uuid): # noqa: E501 + """returns tapi.topology.TopologyRef + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiTopologyTopologyRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_get(uuid, node_uuid): # noqa: E501 + """returns tapi.topology.topology.Node + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiTopologyTopologyNodeWrapper + """ + return database.node(uuid, node_uuid) + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_latency_characteristictraffic_property_name_get(uuid, node_uuid, traffic_property_name): # noqa: E501 + """returns tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + + :rtype: TapiTopologyLatencyCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_namevalue_name_get(uuid, node_uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_committed_burst_size_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_committed_information_rate_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_peak_burst_size_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_peak_information_rate_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.Capacity + + Capacity available to be assigned. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_total_size_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_cost_characteristiccost_name_get(uuid, node_uuid, node_rule_group_uuid, cost_name): # noqa: E501 + """returns tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + + :rtype: TapiTopologyCostCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.topology.NodeRuleGroup + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiTopologyNodeRuleGroupWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_associated_node_rule_grouptopology_uuidassociated_node_rule_group_node_uuidassociated_node_rule_group_node_rule_group_uuid_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid, topology_uuid, associated_node_rule_group_node_uuid, associated_node_rule_group_node_rule_group_uuid): # noqa: E501 + """returns tapi.topology.NodeRuleGroupRef + + The NodeRuleGroups that the InterRuleGroup constrains interconnection between. The CEPs of the NEPs of a referenced NodeRuleGroup can interconnect to the CEPs of the NEPs of another referenced NodeRuleGroup constrained by the rules of the InterRuleGroup. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + :param topology_uuid: Id of associated-node-rule-group + :type topology_uuid: str + :param associated_node_rule_group_node_uuid: Id of associated-node-rule-group + :type associated_node_rule_group_node_uuid: str + :param associated_node_rule_group_node_rule_group_uuid: Id of associated-node-rule-group + :type associated_node_rule_group_node_rule_group_uuid: str + + :rtype: TapiTopologyNodeRuleGroupRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_committed_burst_size_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_committed_information_rate_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_peak_burst_size_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_peak_information_rate_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.Capacity + + Capacity available to be assigned. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_total_size_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_cost_characteristiccost_name_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid, cost_name): # noqa: E501 + """returns tapi.topology.CostCharacteristic + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + :param cost_name: Id of cost-characteristic + :type cost_name: str + + :rtype: TapiTopologyCostCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.topology.InterRuleGroup + + Nested NodeRuleGroups may have InterRuleGroups. The Superior NodeRuleGroup contains the nested NodeRuleGroups and their associated InterRuleGroups. This is equivalent to the Node-Topology hierarchy. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiTopologyInterRuleGroupWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_latency_characteristictraffic_property_name_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid, traffic_property_name): # noqa: E501 + """returns tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + + :rtype: TapiTopologyLatencyCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_namevalue_name_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_risk_characteristicrisk_characteristic_name_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid, risk_characteristic_name): # noqa: E501 + """returns tapi.topology.RiskCharacteristic + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + :param risk_characteristic_name: Id of risk-characteristic + :type risk_characteristic_name: str + + :rtype: TapiTopologyRiskCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_cep_port_role_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid, local_id): # noqa: E501 + """returns tapi.topology.PortRoleRule + + Indicates the port role to which the rule applies. The port role is interpreted in the context of the connection type which is identified by the connection spec. The port role is not meaningful in the absence of a connection spec reference. If a node rule group carries a port role, that role applies also to the associated inter rule where the combination of the roles in the node rule groups at the ends of the inter group rule define the connection orientation. For example a root-and-leaf connection may be used in a node where a node rule group collects one set of NEPs has the port role 'root' and another node rule group collects another set of NEPs has the port role 'leaf' where these are joined by an inter rule group. This combination specifies an allowed orientation of the root-and-leaf connection. No port role statement means all port roles are allowed. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + :param local_id: Id of rule + :type local_id: str + + :rtype: TapiTopologyPortRoleRuleWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_connection_spec_reference_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid, local_id): # noqa: E501 + """returns tapi.topology.ConnectionSpecReference + + Identifies the type of connection that the rule applies to. If the attribute is not present then the rule applies to all types of connection supported by the device. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + :param local_id: Id of rule + :type local_id: str + + :rtype: TapiTopologyConnectionSpecReferenceWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid, local_id): # noqa: E501 + """returns tapi.topology.Rule + + The list of rules of the InterRuleGroup. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + :param local_id: Id of rule + :type local_id: str + + :rtype: TapiTopologyRuleWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_namevalue_name_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid, local_id, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + :param local_id: Id of rule + :type local_id: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_signal_property_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid, local_id): # noqa: E501 + """returns tapi.topology.SignalPropertyRule + + The rule only applies to signals with the properties listed. If the attribute is not present then the rule applies to all signals. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + :param local_id: Id of rule + :type local_id: str + + :rtype: TapiTopologySignalPropertyRuleWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.Capacity + + An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_total_size_get(uuid, node_uuid, node_rule_group_uuid, inter_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param inter_rule_group_uuid: Id of inter-rule-group + :type inter_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_latency_characteristictraffic_property_name_get(uuid, node_uuid, node_rule_group_uuid, traffic_property_name): # noqa: E501 + """returns tapi.topology.LatencyCharacteristic + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param traffic_property_name: Id of latency-characteristic + :type traffic_property_name: str + + :rtype: TapiTopologyLatencyCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_namevalue_name_get(uuid, node_uuid, node_rule_group_uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_node_edge_pointtopology_uuidnode_edge_point_node_uuidnode_edge_point_uuid_get(uuid, node_uuid, node_rule_group_uuid, topology_uuid, node_edge_point_node_uuid, node_edge_point_uuid): # noqa: E501 + """returns tapi.topology.NodeEdgePointRef + + NEPs and their client CEPs that the rules apply to. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param topology_uuid: Id of node-edge-point + :type topology_uuid: str + :param node_edge_point_node_uuid: Id of node-edge-point + :type node_edge_point_node_uuid: str + :param node_edge_point_uuid: Id of node-edge-point + :type node_edge_point_uuid: str + + :rtype: TapiTopologyNodeEdgePointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_node_rule_grouptopology_uuidnode_rule_group_node_uuidnode_rule_group_node_rule_group_uuid_get(uuid, node_uuid, node_rule_group_uuid, topology_uuid, node_rule_group_node_uuid, node_rule_group_node_rule_group_uuid): # noqa: E501 + """returns tapi.topology.NodeRuleGroupRef + + NodeRuleGroups may be nested such that finer grained rules may be applied. A nested rule group should have a subset of the NEPs of the superior rule group. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param topology_uuid: Id of node-rule-group + :type topology_uuid: str + :param node_rule_group_node_uuid: Id of node-rule-group + :type node_rule_group_node_uuid: str + :param node_rule_group_node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_node_rule_group_uuid: str + + :rtype: TapiTopologyNodeRuleGroupRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_risk_characteristicrisk_characteristic_name_get(uuid, node_uuid, node_rule_group_uuid, risk_characteristic_name): # noqa: E501 + """returns tapi.topology.RiskCharacteristic + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param risk_characteristic_name: Id of risk-characteristic + :type risk_characteristic_name: str + + :rtype: TapiTopologyRiskCharacteristicWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_cep_port_role_get(uuid, node_uuid, node_rule_group_uuid, local_id): # noqa: E501 + """returns tapi.topology.PortRoleRule + + Indicates the port role to which the rule applies. The port role is interpreted in the context of the connection type which is identified by the connection spec. The port role is not meaningful in the absence of a connection spec reference. If a node rule group carries a port role, that role applies also to the associated inter rule where the combination of the roles in the node rule groups at the ends of the inter group rule define the connection orientation. For example a root-and-leaf connection may be used in a node where a node rule group collects one set of NEPs has the port role 'root' and another node rule group collects another set of NEPs has the port role 'leaf' where these are joined by an inter rule group. This combination specifies an allowed orientation of the root-and-leaf connection. No port role statement means all port roles are allowed. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param local_id: Id of rule + :type local_id: str + + :rtype: TapiTopologyPortRoleRuleWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_connection_spec_reference_get(uuid, node_uuid, node_rule_group_uuid, local_id): # noqa: E501 + """returns tapi.topology.ConnectionSpecReference + + Identifies the type of connection that the rule applies to. If the attribute is not present then the rule applies to all types of connection supported by the device. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param local_id: Id of rule + :type local_id: str + + :rtype: TapiTopologyConnectionSpecReferenceWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_get(uuid, node_uuid, node_rule_group_uuid, local_id): # noqa: E501 + """returns tapi.topology.Rule + + The list of rules of the NodeRuleGroup. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param local_id: Id of rule + :type local_id: str + + :rtype: TapiTopologyRuleWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_namevalue_name_get(uuid, node_uuid, node_rule_group_uuid, local_id, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param local_id: Id of rule + :type local_id: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_signal_property_get(uuid, node_uuid, node_rule_group_uuid, local_id): # noqa: E501 + """returns tapi.topology.SignalPropertyRule + + The rule only applies to signals with the properties listed. If the attribute is not present then the rule applies to all signals. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + :param local_id: Id of rule + :type local_id: str + + :rtype: TapiTopologySignalPropertyRuleWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.Capacity + + An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_total_size_get(uuid, node_uuid, node_rule_group_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param node_rule_group_uuid: Id of node-rule-group + :type node_rule_group_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_aggregated_node_edge_pointtopology_uuidaggregated_node_edge_point_node_uuidnode_edge_point_uuid_get(uuid, node_uuid, owned_node_edge_point_uuid, topology_uuid, aggregated_node_edge_point_node_uuid, node_edge_point_uuid): # noqa: E501 + """returns tapi.topology.NodeEdgePointRef + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + :param topology_uuid: Id of aggregated-node-edge-point + :type topology_uuid: str + :param aggregated_node_edge_point_node_uuid: Id of aggregated-node-edge-point + :type aggregated_node_edge_point_node_uuid: str + :param node_edge_point_uuid: Id of aggregated-node-edge-point + :type node_edge_point_uuid: str + + :rtype: TapiTopologyNodeEdgePointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_committed_burst_size_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_committed_information_rate_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_peak_burst_size_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_peak_information_rate_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.Capacity + + Capacity available to be assigned. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_total_size_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.topology.node.OwnedNodeEdgePoint + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiTopologyNodeOwnedNodeEdgePointWrapper + """ + return database.node_edge_point(uuid, node_uuid, owned_node_edge_point_uuid) + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_mapped_service_interface_pointservice_interface_point_uuid_get(uuid, node_uuid, owned_node_edge_point_uuid, service_interface_point_uuid): # noqa: E501 + """returns tapi.common.ServiceInterfacePointRef + + NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + :param service_interface_point_uuid: Id of mapped-service-interface-point + :type service_interface_point_uuid: str + + :rtype: TapiCommonServiceInterfacePointRefWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_namevalue_name_get(uuid, node_uuid, owned_node_edge_point_uuid, value_name): # noqa: E501 + """returns tapi.common.NameAndValue + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + :param value_name: Id of name + :type value_name: str + + :rtype: TapiCommonNameAndValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.Capacity + + An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_total_size_get(uuid, node_uuid, owned_node_edge_point_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + :param owned_node_edge_point_uuid: Id of owned-node-edge-point + :type owned_node_edge_point_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.BandwidthProfile + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonBandwidthProfileWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + none # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.Capacity + + An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityWrapper + """ + return 'do some magic!' + + +def data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_total_size_get(uuid, node_uuid): # noqa: E501 + """returns tapi.common.CapacityValue + + Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate. # noqa: E501 + + :param uuid: Id of topology + :type uuid: str + :param node_uuid: Id of node + :type node_uuid: str + + :rtype: TapiCommonCapacityValueWrapper + """ + return 'do some magic!' + + +def operations_tapi_topologyget_link_details_post(body=None): # noqa: E501 + """operates on tapi.topology.GetLinkDetails + + operates on tapi.topology.GetLinkDetails # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiTopologyGetLinkDetails + """ + if connexion.request.is_json: + body = OperationsTapitopologygetlinkdetailsBody.from_dict(connexion.request.get_json()) # noqa: E501 + + return TapiTopologyGetLinkDetails(TapiTopologyGetlinkdetailsOutput( + database.link(body.input.topology_id_or_name, body.input.link_id_or_name))) + + +def operations_tapi_topologyget_node_details_post(body=None): # noqa: E501 + """operates on tapi.topology.GetNodeDetails + + operates on tapi.topology.GetNodeDetails # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiTopologyGetNodeDetails + """ + if connexion.request.is_json: + body = OperationsTapitopologygetnodedetailsBody.from_dict(connexion.request.get_json()) # noqa: E501 + return TapiTopologyGetNodeDetails(TapiTopologyGetnodedetailsOutput( + database.node(body.input.topology_id_or_name, + body.input.node_id_or_name))) + + +def operations_tapi_topologyget_node_edge_point_details_post(body=None): # noqa: E501 + """operates on tapi.topology.GetNodeEdgePointDetails + + operates on tapi.topology.GetNodeEdgePointDetails # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiTopologyGetNodeEdgePointDetails + """ + if connexion.request.is_json: + body = OperationsTapitopologygetnodeedgepointdetailsBody.from_dict(connexion.request.get_json()) # noqa: E501 + + return TapiTopologyGetNodeEdgePointDetails(TapiTopologyGetnodeedgepointdetailsOutput( + database.node_edge_point(body.input.topology_id_or_name, + body.input.node_id_or_name, + body.input.nep_id_or_name))) + + +def operations_tapi_topologyget_topology_details_post(body=None): # noqa: E501 + """operates on tapi.topology.GetTopologyDetails + + operates on tapi.topology.GetTopologyDetails # noqa: E501 + + :param body: + :type body: dict | bytes + + :rtype: TapiTopologyGetTopologyDetails + """ + if connexion.request.is_json: + body = OperationsTapitopologygettopologydetailsBody.from_dict(connexion.request.get_json()) # noqa: E501 + + return TapiTopologyGetTopologyDetails(TapiTopologyGettopologydetailsOutput( + database.topology(body.input.topology_id_or_name))) + + +def operations_tapi_topologyget_topology_list_post(): # noqa: E501 + """operations_tapi_topologyget_topology_list_post + + # noqa: E501 + + + :rtype: TapiTopologyGetTopologyList + """ + return TapiTopologyGetTopologyList(TapiTopologyGettopologylistOutput( + database.topology_list())) diff --git a/hackfest/tapi/server/tapi_server/database.py b/hackfest/tapi/server/tapi_server/database.py new file mode 100644 index 0000000000000000000000000000000000000000..1e3e3da6a6398f1f4114fcdaaf144bb493e6486b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/database.py @@ -0,0 +1,206 @@ +#!/usr/bin/env python3 + +from tapi_server.models.tapi_common_context import TapiCommonContext +from tapi_server.models.tapi_connectivity_cep_list import TapiConnectivityCepList +from tapi_server.models.tapi_connectivity_connectivity_context import TapiConnectivityConnectivityContext + +context = TapiCommonContext() + +def service_interface_point_list (): + """Retrieve all ServiceInterfacePoints + + :rtype: List(ServiceInterfacePoint) + """ + return context.service_interface_point + + +def service_interface_point (sip_uuid): + """Retrieve ServiceInterfacePoint by ID + + :param sip_uuid: ID of ServiceInterfacePoint + :type sip_uuid: str + + :rtype: ServiceInterfacePoint + """ + for sip in context.service_interface_point: + if sip.uuid == sip_uuid: + return sip + + +def topology_list (): + """Retrieve all Topology + + :rtype: List(Topology) + """ + return context.topology_context.topology + + +def topology (topo_uuid): + """Retrieve Topology by ID + + :param topo_uuid: ID of Topology + :type topo_uuid: str + + :rtype: Topology + """ + for topo in context.topology_context.topology: + if topo.uuid == topo_uuid: + return topo + + +def node (topo_uuid, node_uuid): + """Retrieve Node by ID + + :param topo_uuid: ID of Topology + :type topo_uuid: str + :param node_uuid: ID of Node + :type node_uuid: str + + :rtype: Node + """ + for topo in context.topology_context.topology: + if topo.uuid == topo_uuid: + for node in topo.node: + if node.uuid == node_uuid: + return node + + +def link (topo_uuid, link_uuid): + """Retrieve Link by ID + + :param topo_uuid: ID of Topology + :type topo_uuid: str + :param link_uuid: ID of Link + :type link_uuid: str + + :rtype: Link + """ + for topo in context.topology_context.topology: + if topo.uuid == topo_uuid: + for link in topo.link: + if link.uuid == link_uuid: + return link + + +def node_edge_point (topo_uuid, node_uuid, nep_uuid): + """Retrieve NodeEdgePoint by ID + + :param topo_uuid: ID of Topology + :type uuid: str + :param node_uuid: ID of Node + :type node_uuid: str + :param nep_uuid: ID of NodeEdgePoint + :type nep_uuid: str + + :rtype: NodeEdgePoint + """ + for topo in context.topology_context.topology: + if topo.uuid == topo_uuid: + for node in topo.node: + if node.uuid == node_uuid: + for nep in node.owned_node_edge_point: + if nep.uuid == nep_uuid: + return nep + +def connection_end_point_list (topo_uuid, node_uuid, nep_uuid): + """Retrieve NodeEdgePoint by ID + + :param topo_uuid: ID of Topology + :type uuid: str + :param node_uuid: ID of Node + :type node_uuid: str + :param nep_uuid: ID of NodeEdgePoint + :type nep_uuid: str + + :rtype: List[ConnectionEndPoint] + """ + for topo in context.topology_context.topology: + if topo.uuid == topo_uuid: + for node in topo.node: + if node.uuid == node_uuid: + for nep in node.owned_node_edge_point: + if nep.uuid == nep_uuid: + if not hasattr(nep, "cep_list"): + nep.cep_list = TapiConnectivityCepList(connection_end_point=[]) + return nep.cep_list.connection_end_point + +def connection_end_point (topo_uuid, node_uuid, nep_uuid, cep_uuid): + """Retrieve NodeEdgePoint by ID + + :param topo_uuid: ID of Topology + :type uuid: str + :param node_uuid: ID of Node + :type node_uuid: str + :param nep_uuid: ID of NodeEdgePoint + :type nep_uuid: str + :param cep_uuid: ID of ConnectionEndPoint + :type cep_uuid: str + + :rtype: ConnectionEndPoint + """ + for topo in context.topology_context.topology: + if topo.uuid == topo_uuid: + for node in topo.node: + if node.uuid == node_uuid: + for nep in node.owned_node_edge_point: + if nep.uuid == nep_uuid: + if not hasattr(nep, "cep_list"): + nep.cep_list = TapiConnectivityCepList(connection_end_point=[]) + for cep in nep.cep_list.connection_end_point: + if cep.uuid == cep_uuid: + return cep + +def connectivity_context (): + """Retrieve ConnectivityContext + + :rtype: TapiConnectivityConnectivityContext + """ + if context.connectivity_context is None: + context.connectivity_context = TapiConnectivityConnectivityContext( + connectivity_service=[], connection=[] + ) + return context.connectivity_context + +def connectivity_service_list (): + """Retrieve all ConnectivityService + + :rtype: List(ConnectivityService) + """ + if context.connectivity_context is None: + context.connectivity_context = TapiConnectivityConnectivityContext( + connectivity_service=[], connection=[] + ) + return context.connectivity_context.connectivity_service + + +def connectivity_service (cs_uuid): + """Retrieve ConnectivityService by ID + + :param cs_uuid: ID of ConnectivityService + :type cs_uuid: str + + :rtype: Topology + """ + if context.connectivity_context is None: + context.connectivity_context = TapiConnectivityConnectivityContext( + connectivity_service=[], connection=[] + ) + for cs in context.connectivity_context.connectivity_service: + if cs.uuid == cs_uuid: + return cs + +def connection (conn_uuid): + """Retrieve Connection by ID + + :param conn_uuid: ID of Connection + :type conn_uuid: str + + :rtype: Connection + """ + if context.connectivity_context is None: + context.connectivity_context = TapiConnectivityConnectivityContext( + connectivity_service=[], connection=[] + ) + for conn in context.connectivity_context.connection: + if conn.uuid == conn_uuid: + return conn diff --git a/hackfest/tapi/server/tapi_server/database/mini-ols-context.json b/hackfest/tapi/server/tapi_server/database/mini-ols-context.json new file mode 100644 index 0000000000000000000000000000000000000000..59a4fb7cfb54df9a101ac5eda848f36553791704 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/database/mini-ols-context.json @@ -0,0 +1,728 @@ +{ + "uuid": "ols-ctx", + "service-interface-point": [ + { + "uuid": "node-4-port-16-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-3-port-16-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-1-port-14-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-4-port-14-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-3-port-13-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-3-port-18-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-2-port-15-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-2-port-17-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-1-port-15-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-2-port-13-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-4-port-13-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-4-port-13-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-1-port-17-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-3-port-13-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-3-port-17-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-1-port-13-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-4-port-15-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-4-port-14-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-4-port-17-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-2-port-14-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-3-port-14-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-3-port-17-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-1-port-17-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-4-port-16-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-3-port-14-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-1-port-14-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-1-port-13-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-2-port-14-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-3-port-15-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-3-port-16-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-3-port-18-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-4-port-17-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-3-port-15-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-2-port-15-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + }, + { + "uuid": "node-2-port-17-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-2-port-13-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-4-port-15-input", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "INPUT" + }, + { + "uuid": "node-1-port-15-output", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "direction": "OUTPUT" + } + ], + "topology-context": { + "nw-topology-service": { + "uuid": "ols-ctx", + "topology": [{"topology-uuid": "ols-topo"}] + }, + "topology": [ + { + "uuid": "ols-topo", + "layer-protocol-name": ["PHOTONIC_MEDIA", "DSR"], + "node": [ + { + "uuid": "node-1", + "owned-node-edge-point": [ + { + "uuid": "node-1-port-13", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-1-port-13-output"}, + {"service-interface-point-uuid": "node-1-port-13-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-1-port-14", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-1-port-14-output"}, + {"service-interface-point-uuid": "node-1-port-14-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-1-port-15", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-1-port-15-input"}, + {"service-interface-point-uuid": "node-1-port-15-output"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-1-port-17", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-1-port-17-input"}, + {"service-interface-point-uuid": "node-1-port-17-output"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-1-port-3", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + { + "uuid": "node-1-port-4", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + } + ] + }, + { + "uuid": "node-2", + "owned-node-edge-point": [ + { + "uuid": "node-2-port-13", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-2-port-13-output"}, + {"service-interface-point-uuid": "node-2-port-13-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-2-port-14", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-2-port-14-input"}, + {"service-interface-point-uuid": "node-2-port-14-output"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-2-port-15", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-2-port-15-input"}, + {"service-interface-point-uuid": "node-2-port-15-output"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-2-port-17", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-2-port-17-output"}, + {"service-interface-point-uuid": "node-2-port-17-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-2-port-3", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + { + "uuid": "node-2-port-4", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + } + ] + }, + { + "uuid": "node-3", + "owned-node-edge-point": [ + { + "uuid": "node-3-port-13", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-3-port-13-input"}, + {"service-interface-point-uuid": "node-3-port-13-output"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-3-port-14", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-3-port-14-input"}, + {"service-interface-point-uuid": "node-3-port-14-output"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-3-port-15", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-3-port-15-output"}, + {"service-interface-point-uuid": "node-3-port-15-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-3-port-16", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-3-port-16-output"}, + {"service-interface-point-uuid": "node-3-port-16-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-3-port-17", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-3-port-17-output"}, + {"service-interface-point-uuid": "node-3-port-17-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-3-port-18", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-3-port-18-output"}, + {"service-interface-point-uuid": "node-3-port-18-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-3-port-1", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + { + "uuid": "node-3-port-2", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + { + "uuid": "node-3-port-4", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + } + ] + }, + { + "uuid": "node-4", + "owned-node-edge-point": [ + { + "uuid": "node-4-port-13", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-4-port-13-output"}, + {"service-interface-point-uuid": "node-4-port-13-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-4-port-14", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-4-port-14-input"}, + {"service-interface-point-uuid": "node-4-port-14-output"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-4-port-15", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-4-port-15-output"}, + {"service-interface-point-uuid": "node-4-port-15-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-4-port-16", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-4-port-16-output"}, + {"service-interface-point-uuid": "node-4-port-16-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-4-port-17", + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": [ + {"service-interface-point-uuid": "node-4-port-17-output"}, + {"service-interface-point-uuid": "node-4-port-17-input"} + ], + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"] + }, + { + "uuid": "node-4-port-1", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + { + "uuid": "node-4-port-2", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + { + "uuid": "node-4-port-3", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": ["tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC"], + "link-port-direction": "UNIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + } + ] + } + ], + "link": [ + { + "uuid": "link-1:3-3:1", + "direction": "UNIDIRECTIONAL", + "cost-characteristic": [{"cost-name": "te-metric", "cost-value": 1}], + "node-edge-point": [ + {"topology-uuid": "ols-topo", "node-uuid": "node-1", "node-edge-point-uuid": "node-1-port-3"}, + {"topology-uuid": "ols-topo", "node-uuid": "node-3", "node-edge-point-uuid": "node-3-port-1"} + ], + "layer-protocol-name": ["PHOTONIC_MEDIA"] + }, + { + "uuid": "link-1:4-4:1", + "direction": "UNIDIRECTIONAL", + "cost-characteristic": [{"cost-name": "te-metric", "cost-value": 1}], + "node-edge-point": [ + {"topology-uuid": "ols-topo", "node-uuid": "node-1", "node-edge-point-uuid": "node-1-port-4"}, + {"topology-uuid": "ols-topo", "node-uuid": "node-4", "node-edge-point-uuid": "node-4-port-1"} + ], + "layer-protocol-name": ["PHOTONIC_MEDIA"] + }, + { + "uuid": "link-2:3-3:2", + "direction": "UNIDIRECTIONAL", + "cost-characteristic": [{"cost-name": "te-metric", "cost-value": 1}], + "node-edge-point": [ + {"topology-uuid": "ols-topo", "node-uuid": "node-2", "node-edge-point-uuid": "node-2-port-3"}, + {"topology-uuid": "ols-topo", "node-uuid": "node-3", "node-edge-point-uuid": "node-3-port-2"} + ], + "layer-protocol-name": ["PHOTONIC_MEDIA"] + }, + { + "uuid": "link-2:4-4:2", + "direction": "UNIDIRECTIONAL", + "cost-characteristic": [{"cost-name": "te-metric", "cost-value": 1}], + "node-edge-point": [ + {"topology-uuid": "ols-topo", "node-uuid": "node-2", "node-edge-point-uuid": "node-2-port-4"}, + {"topology-uuid": "ols-topo", "node-uuid": "node-4", "node-edge-point-uuid": "node-4-port-2"} + ], + "layer-protocol-name": ["PHOTONIC_MEDIA"] + }, + { + "uuid": "link-3:1-1:3", + "direction": "UNIDIRECTIONAL", + "cost-characteristic": [{"cost-name": "te-metric", "cost-value": 1}], + "node-edge-point": [ + {"topology-uuid": "ols-topo", "node-uuid": "node-3", "node-edge-point-uuid": "node-3-port-1"}, + {"topology-uuid": "ols-topo", "node-uuid": "node-1", "node-edge-point-uuid": "node-1-port-3"} + ], + "layer-protocol-name": ["PHOTONIC_MEDIA"] + }, + { + "uuid": "link-3:2-2:3", + "direction": "UNIDIRECTIONAL", + "cost-characteristic": [{"cost-name": "te-metric", "cost-value": 1}], + "node-edge-point": [ + {"topology-uuid": "ols-topo", "node-uuid": "node-3", "node-edge-point-uuid": "node-3-port-2"}, + {"topology-uuid": "ols-topo", "node-uuid": "node-2", "node-edge-point-uuid": "node-2-port-3"} + ], + "layer-protocol-name": ["PHOTONIC_MEDIA"] + }, + { + "uuid": "link-3:4-4:3", + "direction": "UNIDIRECTIONAL", + "cost-characteristic": [{"cost-name": "te-metric", "cost-value": 1}], + "node-edge-point": [ + {"topology-uuid": "ols-topo", "node-uuid": "node-3", "node-edge-point-uuid": "node-3-port-4"}, + {"topology-uuid": "ols-topo", "node-uuid": "node-4", "node-edge-point-uuid": "node-4-port-3"} + ], + "layer-protocol-name": ["PHOTONIC_MEDIA"] + }, + { + "uuid": "link-4:1-1:4", + "direction": "UNIDIRECTIONAL", + "cost-characteristic": [{"cost-name": "te-metric", "cost-value": 1}], + "node-edge-point": [ + {"topology-uuid": "ols-topo", "node-uuid": "node-4", "node-edge-point-uuid": "node-4-port-1"}, + {"topology-uuid": "ols-topo", "node-uuid": "node-1", "node-edge-point-uuid": "node-1-port-4"} + ], + "layer-protocol-name": ["PHOTONIC_MEDIA"] + }, + { + "uuid": "link-4:2-2:4", + "direction": "UNIDIRECTIONAL", + "cost-characteristic": [{"cost-name": "te-metric", "cost-value": 1}], + "node-edge-point": [ + {"topology-uuid": "ols-topo", "node-uuid": "node-4", "node-edge-point-uuid": "node-4-port-2"}, + {"topology-uuid": "ols-topo", "node-uuid": "node-2", "node-edge-point-uuid": "node-2-port-4"} + ], + "layer-protocol-name": ["PHOTONIC_MEDIA"] + }, + { + "uuid": "link-4:3-3:4", + "direction": "UNIDIRECTIONAL", + "cost-characteristic": [{"cost-name": "te-metric", "cost-value": 1}], + "node-edge-point": [ + {"topology-uuid": "ols-topo", "node-uuid": "node-4", "node-edge-point-uuid": "node-4-port-3"}, + {"topology-uuid": "ols-topo", "node-uuid": "node-3", "node-edge-point-uuid": "node-3-port-4"} + ], + "layer-protocol-name": ["PHOTONIC_MEDIA"] + } + ] + } + ] + }, + "connectivity-context": { + "connectivity-service": [], + "connection": [] + } +} diff --git a/hackfest/tapi/server/tapi_server/database/odu_context.json b/hackfest/tapi/server/tapi_server/database/odu_context.json new file mode 100644 index 0000000000000000000000000000000000000000..20f4c96a5e0a2a7be15d96fee188a5bf3a2d9652 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/database/odu_context.json @@ -0,0 +1,1817 @@ +{ + "uuid": "ctx-ref", + "name": + [ + { + "value-name": "name", + "value": "REFERENCE_CONTEXT" + } + ], + + "service-interface-point": + [ + { + "uuid": "sip-pe1-uni1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_UNI_01" + } + ], + + "layer-protocol-name": + [ + "ETH" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "total-potential-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + } + }, + + { + "uuid": "sip-pe1-uni2", + "name": + [ + { + "value-name": "name", + "value": "PE_01_UNI_02" + } + ], + + "layer-protocol-name": + [ + "ETH" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "total-potential-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + } + }, + + { + "uuid": "sip-pe2-uni1", + "name": + [ + { + "value-name": "name", + "value": "PE_02_UNI_01" + } + ], + + "layer-protocol-name": + [ + "ETH" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "total-potential-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + } + }, + + { + "uuid": "sip-pe2-uni2", + "name": + [ + { + "value-name": "name", + "value": "PE_02_UNI_02" + } + ], + + "layer-protocol-name": + [ + "ETH" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "total-potential-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + } + }, + + { + "uuid": "sip-pe3-uni1", + "name": + [ + { + "value-name": "name", + "value": "PE_03_UNI_01" + } + ], + + "layer-protocol-name": + [ + "ETH" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "total-potential-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + } + }, + + { + "uuid": "sip-pe3-uni2", + "name": + [ + { + "value-name": "name", + "value": "PE_03_UNI_02" + } + ], + + "layer-protocol-name": + [ + "ETH" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "total-potential-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + } + } + ], + + "topology-context": { + "topology": + [ + { + "uuid": "topo-nwk", + "name": + [ + { + "value-name": "name", + "value": "NETWORK_TOPOLOGY" + } + ], + + "node": + [ + { + "uuid": "node-mul-pe-1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_MULTILAYER_NODE" + } + ], + + "layer-protocol-name": + [ + "ETH", + "ODU" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "encap-topology": "/restconf/config/context/topology/topo-pe1", + "owned-node-edge-point": + [ + + ], + + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe1/node/node-eth-pe-1/owned-node-edge-point/nep-pe1-eth-uni1", + "/restconf/config/context/topology/topo-pe1/node/node-eth-pe-1/owned-node-edge-point/nep-pe1-eth-uni2", + "/restconf/config/context/topology/topo-pe1/node/node-odu-pe-1/owned-node-edge-point/nep-pe1-odu4-nni1", + "/restconf/config/context/topology/topo-pe1/node/node-odu-pe-1/owned-node-edge-point/nep-pe1-odu4-nni2" + ] + }, + + { + "uuid": "node-mul-pe-2", + "name": + [ + { + "value-name": "name", + "value": "PE_02_MULTILAYER_NODE" + } + ], + + "layer-protocol-name": + [ + "ETH", + "ODU" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "encap-topology": "/restconf/config/context/topology/topo-pe2", + "owned-node-edge-point": + [ + + ], + + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe2/node/node-eth-pe-2/owned-node-edge-point/nep-pe2-eth-uni1", + "/restconf/config/context/topology/topo-pe2/node/node-eth-pe-2/owned-node-edge-point/nep-pe2-eth-uni2", + "/restconf/config/context/topology/topo-pe2/node/node-odu-pe-2/owned-node-edge-point/nep-pe2-odu4-nni1", + "/restconf/config/context/topology/topo-pe2/node/node-odu-pe-2/owned-node-edge-point/nep-pe2-odu4-nni2" + ] + }, + + { + "uuid": "node-mul-pe-3", + "name": + [ + { + "value-name": "name", + "value": "PE_03_MULTILAYER_NODE" + } + ], + + "layer-protocol-name": + [ + "ETH", + "ODU" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "encap-topology": "/restconf/config/context/topology/topo-pe3", + "owned-node-edge-point": + [ + + ], + + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe3/node/node-eth-pe-3/owned-node-edge-point/nep-pe3-eth-uni1", + "/restconf/config/context/topology/topo-pe2/node/node-eth-pe-3/owned-node-edge-point/nep-pe3-eth-uni2", + "/restconf/config/context/topology/topo-pe3/node/node-odu-pe-3/owned-node-edge-point/nep-pe3-odu4-nni1", + "/restconf/config/context/topology/topo-pe3/node/node-odu-pe-3/owned-node-edge-point/nep-pe3-odu4-nni2", + "/restconf/config/context/topology/topo-pe3/node/node-odu-pe-3/owned-node-edge-point/nep-pe3-odu4-nni3" + ] + }, + + { + "uuid": "node-odu-pi-4", + "name": + [ + { + "value-name": "name", + "value": "PI_04_ODU_NODE" + } + ], + + "layer-protocol-name": + [ + "ODU" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-nwk/node/node-odu-pi-4/owned-node-edge-point/nep-pi4-odu4-nni1", + "/restconf/config/context/topology/topo-nwk/node/node-odu-pi-4/owned-node-edge-point/nep-pi4-odu4-nni2", + "/restconf/config/context/topology/topo-nwk/node/node-odu-pi-4/owned-node-edge-point/nep-pi4-odu4-nni3" + ], + + "owned-node-edge-point": + [ + { + "uuid": "nep-pi4-odu4-nni1", + "name": + [ + { + "value-name": "name", + "value": "PI_04_ODU4_NNI_01" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + + { + "uuid": "nep-pi4-odu4-nni2", + "name": + [ + { + "value-name": "name", + "value": "PI_04_ODU4_NNI_02" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + + { + "uuid": "nep-pi4-odu4-nni3", + "name": + [ + { + "value-name": "name", + "value": "PI_04_ODU4_NNI_03" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + } + ] + } + ], + + "link": + [ + { + "uuid": "link-pe1-odu4-nni1-pi4-odu4-nni2", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ODU4_NNI_01-PI_04_ODU4_NNI_02" + } + ], + + "layer-protocol-name": + [ + "ODU" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": + { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + + "total-potential-capacity": + { + "total-size": + { + "value": "100", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "90", + "unit": "GBPS" + } + }, + + "cost-characteristic": + [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + + "latency-characteristic": + [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "1" + } + ], + + "node-edge-point": + [ + "/restconf/config/context/topology/topo-pe1/node/node-odu-pe-1/owned-node-edge-point/nep-pe1-odu4-nni1", + "/restconf/config/context/topology/topo-nwk/node/node-odu-pi-4/owned-node-edge-point/nep-pi4-odu4-nni2" + ] + }, + + { + "uuid": "link-pe2-odu4-nni2-pi4-odu4-nni1", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ODU4_NNI_02-PI_04_ODU4_NNI_01" + } + ], + + "layer-protocol-name": + [ + "ODU" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": + { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + + "total-potential-capacity": + { + "total-size": + { + "value": "100", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "90", + "unit": "GBPS" + } + }, + + "cost-characteristic": + [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + + "latency-characteristic": + [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "1" + } + ], + + "node-edge-point": + [ + "/restconf/config/context/topology/topo-pe2/node/node-odu-pe-2/owned-node-edge-point/nep-pe2-odu4-nni2", + "/restconf/config/context/topology/topo-nwk/node/node-odu-pi-4/owned-node-edge-point/nep-pi4-odu4-nni1" + ] + }, + + { + "uuid": "link-pe3-odu4-nni3-pi4-odu4-nni3", + "name": + [ + { + "value-name": "name", + "value": "PE_03_ODU4_NNI_03-PI_04_ODU4_NNI_03" + } + ], + + "layer-protocol-name": + [ + "ODU" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": + { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + + "total-potential-capacity": + { + "total-size": + { + "value": "100", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "100", + "unit": "GBPS" + } + }, + + "cost-characteristic": + [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + + "latency-characteristic": + [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "1" + } + ], + + "node-edge-point": + [ + "/restconf/config/context/topology/topo-pe3/node/node-odu-pe-3/owned-node-edge-point/nep-pe3-odu4-nni3", + "/restconf/config/context/topology/topo-nwk/node/node-odu-pi-4/owned-node-edge-point/nep-pi4-odu4-nni3" + ] + }, + + { + "uuid": "link-pe1-odu4-nni2-pe3-odu4-nni1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ODU4_NNI_02-PE_03_ODU4_NNI_01" + } + ], + + "layer-protocol-name": + [ + "ODU" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": + { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + + "total-potential-capacity": + { + "total-size": + { + "value": "100", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "100", + "unit": "GBPS" + } + }, + + "cost-characteristic": + [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + + "latency-characteristic": + [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "1" + } + ], + + "node-edge-point": + [ + "/restconf/config/context/topology/topo-pe1/node/node-odu-pe-1/owned-node-edge-point/nep-pe1-odu4-nni2", + "/restconf/config/context/topology/topo-pe3/node/node-odu-pe-3/owned-node-edge-point/nep-pe3-odu4-nni1" + ] + }, + + { + "uuid": "link-pe2-odu4-nni1-pe3-odu4-nni2", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ODU4_NNI_01-PE_03_ODU4_NNI_02" + } + ], + + "layer-protocol-name": + [ + "ODU" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": + { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + + "total-potential-capacity": + { + "total-size": + { + "value": "100", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "100", + "unit": "GBPS" + } + }, + + "cost-characteristic": + [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + + "latency-characteristic": + [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "1" + } + ], + + "node-edge-point": + [ + "/restconf/config/context/topology/topo-pe2/node/node-odu-pe-2/owned-node-edge-point/nep-pe2-odu4-nni1", + "/restconf/config/context/topology/topo-pe3/node/node-odu-pe-3/owned-node-edge-point/nep-pe3-odu4-nni2" + ] + }, + + { + "uuid": "link-pe1-odu2-nni1-pe2-odu2-nni2", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ODU2_NNI_01-PE_02_ODU2_NNI_02" + } + ], + + "layer-protocol-name": + [ + "ODU" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": + { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + + "total-potential-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + }, + + "cost-characteristic": + [ + { + "cost-name": "hop_count", + "cost-value": "3" + } + ], + + "latency-characteristic": + [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "3" + } + ], + + "node-edge-point": + [ + "/restconf/config/context/topology/topo-pe1/node/node-odu-pe-1/owned-node-edge-point/nep-pe1-odu2-nni1", + "/restconf/config/context/topology/topo-pe2/node/node-odu-pe-2/owned-node-edge-point/nep-pe2-odu2-nni2" + ] + }, + + { + "uuid": "link-pe1-odu2-clt1-pe2-odu2-clt1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ODU2_CLT_01-PE_02_ODU2_CLT_01" + } + ], + + "layer-protocol-name": + [ + "ETH" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": + { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + + "total-potential-capacity": + { + "total-size": + { + "value": "10", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "0", + "unit": "GBPS" + } + }, + + "cost-characteristic": + [ + { + "cost-name": "hop_count", + "cost-value": "5" + } + ], + + "latency-characteristic": + [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "7" + } + ], + + "node-edge-point": + [ + "/restconf/config/context/topology/topo-pe1/node/node-eth-pe-1/owned-node-edge-point/nep-pe1-odu2-clt1", + "/restconf/config/context/topology/topo-pe2/node/node-eth-pe-2/owned-node-edge-point/nep-pe2-odu2-clt1" + ] + } + ] + }, + + { + "uuid": "topo-pe1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_INTERNAL_TOPOLOGY" + } + ], + + "node": + [ + { + "uuid": "node-eth-pe-1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ETH_NODE" + } + ], + + "layer-protocol-name": + [ + "ETH" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe1/node/node-eth-pe-1/owned-node-edge-point/nep-pe1-eth-uni1", + "/restconf/config/context/topology/topo-pe1/node/node-eth-pe-1/owned-node-edge-point/nep-pe1-eth-uni2", + "/restconf/config/context/topology/topo-pe1/node/node-eth-pe-1/owned-node-edge-point/nep-pe1-eth-pool", + "/restconf/config/context/topology/topo-pe1/node/node-eth-pe-1/owned-node-edge-point/nep-pe1-odu2-clt1" + ], + + "owned-node-edge-point": + [ + { + "uuid": "nep-pe1-eth-uni1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ETH_UNI_01" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": + [ + "/restconf/config/context/service-interface-point/sip-pe1-uni1" + ] + }, + + { + "uuid": "nep-pe1-eth-uni2", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ETH_UNI_02" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": + [ + "/restconf/config/context/service-interface-point/sip-pe1-uni2" + ] + }, + + { + "uuid": "nep-pe1-eth-pool", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ETH_NEP_POOL" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe1/node/node-eth-pe-1/owned-node-edge-point/nep-pe1-odu2-clt1" + ] + }, + + { + "uuid": "nep-pe1-odu2-clt1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ODU2_CLT_01" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + } + ] + }, + + { + "uuid": "node-odu-pe-1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ODU_NODE" + } + ], + + "layer-protocol-name": + [ + "ODU" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe1/node/node-odu-pe-1/owned-node-edge-point/nep-pe1-odu4-nni1", + "/restconf/config/context/topology/topo-pe1/node/node-odu-pe-1/owned-node-edge-point/nep-pe1-odu4-nni2", + "/restconf/config/context/topology/topo-pe1/node/node-odu-pe-1/owned-node-edge-point/nep-pe1-odu2-nni1", + "/restconf/config/context/topology/topo-pe1/node/node-odu-pe-1/owned-node-edge-point/nep-pe1-odu2-pool" + ], + + "owned-node-edge-point": + [ + { + "uuid": "nep-pe1-odu4-nni1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ODU4_NNI_01" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + + { + "uuid": "nep-pe1-odu4-nni2", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ODU4_NNI_02" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + + { + "uuid": "nep-pe1-odu2-nni1", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ODU2_NNI_01" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + + { + "uuid": "nep-pe1-odu2-pool", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ODU2_TTP_POOL" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + } + ] + } + ], + + "link": + [ + { + "uuid": "link-pe1-eth-pool-pe1-odu2-pool", + "name": + [ + { + "value-name": "name", + "value": "PE_01_ETH_POOL-PE_01_ODU2_POOL" + } + ], + + "layer-protocol-name": + [ + "ETH", + "ODU" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": + { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + + "total-potential-capacity": + { + "total-size": + { + "value": "200", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "190", + "unit": "GBPS" + } + }, + + "cost-characteristic": + [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + + "latency-characteristic": + [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "2" + } + ], + + "node-edge-point": + [ + "/restconf/config/context/topology/topo-pe1/node/node-eth-pe-1/owned-node-edge-point/nep-pe1-eth-pool", + "/restconf/config/context/topology/topo-pe1/node/node-odu-pe-1/owned-node-edge-point/nep-pe1-odu2-pool" + ] + } + ] + }, + + { + "uuid": "topo-pe2", + "name": + [ + { + "value-name": "name", + "value": "PE_02_INTERNAL_TOPOLOGY" + } + ], + + "node": + [ + { + "uuid": "node-eth-pe-2", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ETH_NODE" + } + ], + + "layer-protocol-name": + [ + "ETH" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe2/node/node-eth-pe-2/owned-node-edge-point/nep-pe2-eth-uni1", + "/restconf/config/context/topology/topo-pe2/node/node-eth-pe-2/owned-node-edge-point/nep-pe2-eth-uni2", + "/restconf/config/context/topology/topo-pe2/node/node-eth-pe-2/owned-node-edge-point/nep-pe2-eth-pool", + "/restconf/config/context/topology/topo-pe2/node/node-eth-pe-2/owned-node-edge-point/nep-pe2-odu2-clt1" + ], + + "owned-node-edge-point": + [ + { + "uuid": "nep-pe2-eth-uni1", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ETH_UNI_01" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": + [ + "/restconf/config/context/service-interface-point/sip-pe2-uni1" + ] + }, + + { + "uuid": "nep-pe2-eth-uni2", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ETH_UNI_02" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": + [ + "/restconf/config/context/service-interface-point/sip-pe2-uni2" + ] + }, + + { + "uuid": "nep-pe2-eth-pool", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ETH_NEP_POOL" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe2/node/node-eth-pe-2/owned-node-edge-point/nep-pe2-odu2-clt1" + ] + }, + + { + "uuid": "nep-pe2-odu2-clt1", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ODU2_CLT_01" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + } + ] + }, + + { + "uuid": "node-odu-pe-2", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ODU_NODE" + } + ], + + "layer-protocol-name": + [ + "ODU" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe2/node/node-odu-pe-2/owned-node-edge-point/nep-pe2-odu4-nni1", + "/restconf/config/context/topology/topo-pe2/node/node-odu-pe-2/owned-node-edge-point/nep-pe2-odu4-nni2", + "/restconf/config/context/topology/topo-pe2/node/node-odu-pe-2/owned-node-edge-point/nep-pe2-odu2-nni1", + "/restconf/config/context/topology/topo-pe2/node/node-odu-pe-2/owned-node-edge-point/nep-pe2-odu2-pool" + ], + + "owned-node-edge-point": + [ + { + "uuid": "nep-pe2-odu4-nni1", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ODU4_NNI_01" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + + { + "uuid": "nep-pe2-odu4-nni2", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ODU4_NNI_02" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + + { + "uuid": "nep-pe2-odu2-nni2", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ODU2_NNI_02" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + + { + "uuid": "nep-pe2-odu2-pool", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ODU2_TTP_POOL" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + } + ] + } + ], + + "link": + [ + { + "uuid": "link-pe2-eth-pool-pe2-odu2-pool", + "name": + [ + { + "value-name": "name", + "value": "PE_02_ETH_POOL-PE_02_ODU2_POOL" + } + ], + + "layer-protocol-name": + [ + "ETH", + "ODU" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": + { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + + "total-potential-capacity": + { + "total-size": + { + "value": "200", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "190", + "unit": "GBPS" + } + }, + + "cost-characteristic": + [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + + "latency-characteristic": + [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "2" + } + ], + + "node-edge-point": + [ + "/restconf/config/context/topology/topo-pe2/node/node-eth-pe-2/owned-node-edge-point/nep-pe2-eth-pool", + "/restconf/config/context/topology/topo-pe2/node/node-odu-pe-2/owned-node-edge-point/nep-pe2-odu2-pool" + ] + } + ] + }, + + { + "uuid": "topo-pe3", + "name": + [ + { + "value-name": "name", + "value": "PE_03_INTERNAL_TOPOLOGY" + } + ], + + "node": + [ + { + "uuid": "node-eth-pe-3", + "name": + [ + { + "value-name": "name", + "value": "PE_03_ETH_NODE" + } + ], + + "layer-protocol-name": + [ + "ETH" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe3/node/node-eth-pe-3/owned-node-edge-point/nep-pe3-eth-uni1", + "/restconf/config/context/topology/topo-pe3/node/node-eth-pe-3/owned-node-edge-point/nep-pe3-eth-uni2", + "/restconf/config/context/topology/topo-pe3/node/node-eth-pe-3/owned-node-edge-point/nep-pe3-eth-pool" + ], + + "owned-node-edge-point": + [ + { + "uuid": "nep-pe3-eth-uni1", + "name": + [ + { + "value-name": "name", + "value": "PE_03_ETH_UNI_01" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": + [ + "/restconf/config/context/service-interface-point/sip-pe3-uni1" + ] + }, + + { + "uuid": "nep-pe3-eth-uni2", + "name": + [ + { + "value-name": "name", + "value": "PE_03_ETH_UNI_02" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "mapped-service-interface-point": + [ + "/restconf/config/context/service-interface-point/sip-pe3-uni2" + ] + }, + + { + "uuid": "nep-pe3-eth-pool", + "name": + [ + { + "value-name": "name", + "value": "PE_03_ETH_NEP_POOL" + } + ], + + "layer-protocol-name": "ETH", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC", + "aggregated-node-edge-point": + [ + + ] + } + ] + }, + + { + "uuid": "node-odu-pe-3", + "name": + [ + { + "value-name": "name", + "value": "PE_03_ODU_NODE" + } + ], + + "layer-protocol-name": + [ + "ODU" + ], + + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "aggregated-node-edge-point": + [ + "/restconf/config/context/topology/topo-pe3/node/node-odu-pe-3/owned-node-edge-point/nep-pe3-odu4-nni1", + "/restconf/config/context/topology/topo-pe3/node/node-odu-pe-3/owned-node-edge-point/nep-pe3-odu4-nni2", + "/restconf/config/context/topology/topo-pe3/node/node-odu-pe-3/owned-node-edge-point/nep-pe3-odu2-pool" + ], + + "owned-node-edge-point": + [ + { + "uuid": "nep-pe3-odu4-nni1", + "name": + [ + { + "value-name": "name", + "value": "PE_03_ODU4_NNI_01" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + + { + "uuid": "nep-pe3-odu4-nni2", + "name": + [ + { + "value-name": "name", + "value": "PE_03_ODU4_NNI_02" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + }, + + { + "uuid": "nep-pe3-odu2-pool", + "name": + [ + { + "value-name": "name", + "value": "PE_03_ODU2_TTP_POOL" + } + ], + + "layer-protocol-name": "ODU", + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "BIDIRECTIONAL", + "link-port-role": "SYMMETRIC" + } + ] + } + ], + + "link": + [ + { + "uuid": "link-pe3-eth-pool-pe3-odu2-pool", + "name": + [ + { + "value-name": "name", + "value": "PE_03_ETH_POOL-PE_03_ODU2_POOL" + } + ], + + "layer-protocol-name": + [ + "ETH", + "ODU" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": + { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + + "total-potential-capacity": + { + "total-size": + { + "value": "200", + "unit": "GBPS" + } + }, + + "available-capacity": + { + "total-size": + { + "value": "200", + "unit": "GBPS" + } + }, + + "cost-characteristic": + [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + + "latency-characteristic": + [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "2" + } + ], + + "node-edge-point": + [ + "/restconf/config/context/topology/topo-pe3/node/node-eth-pe-3/owned-node-edge-point/nep-pe3-eth-pool", + "/restconf/config/context/topology/topo-pe3/node/node-odu-pe-3/owned-node-edge-point/nep-pe3-odu2-pool" + ] + } + ] + } + ] + }, + + "connection": + [ + + ], + + "connectivity-service": + [ + + ] +} \ No newline at end of file diff --git a/hackfest/tapi/server/tapi_server/database/ols_context.json b/hackfest/tapi/server/tapi_server/database/ols_context.json new file mode 100644 index 0000000000000000000000000000000000000000..a85e6da73cb61564952cdd6855b62f0078c5a992 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/database/ols_context.json @@ -0,0 +1,720 @@ +{ + "uuid": "ctx-ols", + "name": [ + { + "value-name": "name", + "value": "OLS_DOMAIN" + } + ], + "service-interface-point": [ + { + "uuid": "sip-nni-1", + "name": [ + { + "value-name": "name", + "value": "RDM_1_ADD_DROP_INTERFACES" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "layer-protocol-name": [ + "PHOTONIC_MEDIA" + ], + "supported-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_NMCA" + ], + "total-potential-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + } + }, + { + "uuid": "sip-nni-2", + "name": [ + { + "value-name": "name", + "value": "ROADM_2_ADD_DROP_INTERFACES" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "layer-protocol-name": [ + "PHOTONIC_MEDIA" + ], + "supported-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_NMCA" + ], + "total-potential-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + } + }, + { + "uuid": "sip-nni-3", + "name": [ + { + "value-name": "name", + "value": "ROADM_3_ADD_DROP_INTERFACES" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "layer-protocol-name": [ + "PHOTONIC_MEDIA" + ], + "supported-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_NMCA" + ], + "total-potential-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + } + } + ], + "topology-context": { + "topology": [ + { + "uuid": "top-ols", + "name": [ + { + "value-name": "name", + "value": "OLS_TOPOLOGY" + } + ], + "node": [ + { + "uuid": "node-rdm-1", + "name": [ + { + "value-name": "name", + "value": "ROADM_1" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "layer-protocol-name": [ + "PHOTONIC_MEDIA" + ], + "owned-node-edge-point": [ + { + "uuid": "nep-rdm-1-adddrp-1", + "name": [ + { + "value-name": "name", + "value": "ROADM_1_ADD_DROP_PORT_1" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "UNIDENTIFIED_OR_UNKNOWN", + "link-port-role": "UNKNOWN", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_OMS" + ], + "total-potential-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + }, + "mapped-service-interface-point": [ + { + "service-interface-point-uuid": "sip-nni-1" + } + ] + }, + { + "uuid": "nep-rdm-1-deg-1", + "name": [ + { + "value-name": "name", + "value": "ROADM_1_DEGREE_PORT" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "UNIDENTIFIED_OR_UNKNOWN", + "link-port-role": "UNKNOWN", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_OTS" + ], + "total-potential-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "mapped-service-interface-point": [] + } + ], + "aggregated-node-edge-point": [ + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-1", + "node-edge-point-uuid": "nep-rdm-1-adddrp-1" + }, + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-1", + "node-edge-point-uuid": "nep-rdm-1-deg-1" + } + ] + }, + { + "uuid": "node-rdm-2", + "name": [ + { + "value-name": "name", + "value": "ROADM_2" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "layer-protocol-name": [ + "PHOTONIC_MEDIA" + ], + "owned-node-edge-point": [ + { + "uuid": "nep-rdm-2-adddrp-1", + "name": [ + { + "value-name": "name", + "value": "ROADM_2_ADD_DROP_PORT_1" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "UNIDENTIFIED_OR_UNKNOWN", + "link-port-role": "UNKNOWN", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_OMS" + ], + "total-potential-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + }, + "mapped-service-interface-point": [ + { + "service-interface-point-uuid": "sip-nni-2" + } + ] + }, + { + "uuid": "nep-rdm-2-deg-1", + "name": [ + { + "value-name": "name", + "value": "ROADM_2_DEGREE_PORT" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "UNIDENTIFIED_OR_UNKNOWN", + "link-port-role": "UNKNOWN", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_OTS" + ], + "total-potential-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "mapped-service-interface-point": [] + } + ], + "aggregated-node-edge-point": [ + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-2", + "node-edge-point-uuid": "nep-rdm-2-adddrp-1" + }, + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-2", + "node-edge-point-uuid": "nep-rdm-2-deg-1" + } + ] + }, + { + "uuid": "node-rdm-3", + "name": [ + { + "value-name": "name", + "value": "ROADM_3" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "layer-protocol-name": [ + "PHOTONIC_MEDIA" + ], + "owned-node-edge-point": [ + { + "uuid": "nep-rdm-3-adddrp-1", + "name": [ + { + "value-name": "name", + "value": "ROADM_3_ADD_DROP_PORT_1" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "UNIDENTIFIED_OR_UNKNOWN", + "link-port-role": "UNKNOWN", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_OMS" + ], + "total-potential-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "100", + "unit": "GHz" + } + }, + "mapped-service-interface-point": [ + { + "service-interface-point-uuid": "sip-nni-3" + } + ] + }, + { + "uuid": "nep-rdm-3-deg-1", + "name": [ + { + "value-name": "name", + "value": "ROADM_3_DEGREE_PORT" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "UNIDENTIFIED_OR_UNKNOWN", + "link-port-role": "UNKNOWN", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_OTS" + ], + "total-potential-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "mapped-service-interface-point": [] + } + ], + "aggregated-node-edge-point": [ + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-3", + "node-edge-point-uuid": "nep-rdm-3-adddrp-1" + }, + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-3", + "node-edge-point-uuid": "nep-rdm-3-deg-1" + } + ] + }, + { + "uuid": "node-rdm-4", + "name": [ + { + "value-name": "name", + "value": "ROADM_4" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "layer-protocol-name": [ + "PHOTONIC_MEDIA" + ], + "owned-node-edge-point": [ + { + "uuid": "nep-rdm-4-deg-1", + "name": [ + { + "value-name": "name", + "value": "ROADM_4_DEGREE_PORT_1" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "UNIDENTIFIED_OR_UNKNOWN", + "link-port-role": "UNKNOWN", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_OTS" + ], + "total-potential-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "mapped-service-interface-point": [] + }, + { + "uuid": "nep-rdm-4-deg-2", + "name": [ + { + "value-name": "name", + "value": "ROADM_4_DEGREE_PORT_2" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "UNIDENTIFIED_OR_UNKNOWN", + "link-port-role": "UNKNOWN", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_OTS" + ], + "total-potential-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "mapped-service-interface-point": [] + }, + { + "uuid": "nep-rdm-4-deg-3", + "name": [ + { + "value-name": "name", + "value": "ROADM_4_DEGREE_PORT_3" + } + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "termination-state": "LP_CAN_NEVER_TERMINATE", + "termination-direction": "BIDIRECTIONAL", + "link-port-direction": "UNIDENTIFIED_OR_UNKNOWN", + "link-port-role": "UNKNOWN", + "layer-protocol-name": "PHOTONIC_MEDIA", + "supported-cep-layer-protocol-qualifier": [ + "PHOTONIC_LAYER_QUALIFIER_OTS" + ], + "total-potential-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "mapped-service-interface-point": [] + } + ], + "aggregated-node-edge-point": [ + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-4", + "node-edge-point-uuid": "nep-rdm-4-deg-1" + }, + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-4", + "node-edge-point-uuid": "nep-rdm-4-deg-2" + }, + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-4", + "node-edge-point-uuid": "nep-rdm-4-deg-3" + } + ] + } + ], + "link": [ + { + "uuid": "link-rdm-1-deg-1-rdm-4-deg-1", + "name": [ + { + "value-name": "name", + "value": "RDM_1_DEG_1_RDM_4_DEG_1" + } + ], + "layer-protocol-name": [ + "PHOTONIC_MEDIA" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + "total-potential-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "cost-characteristic": [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + "latency-characteristic": [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "1" + } + ], + "node-edge-point": [ + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-1", + "node-edge-point-uuid": "nep-rdm-1-deg-1" + }, + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-4", + "node-edge-point-uuid": "nep-rdm-4-deg-1" + } + ] + }, + { + "uuid": "link-rdm-2-deg-1-rdm-4-deg-2", + "name": [ + { + "value-name": "name", + "value": "RDM_2_DEG_1_RDM_4_DEG_2" + } + ], + "layer-protocol-name": [ + "PHOTONIC_MEDIA" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + "total-potential-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "cost-characteristic": [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + "latency-characteristic": [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "1" + } + ], + "node-edge-point": [ + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-2", + "node-edge-point-uuid": "nep-rdm-2-deg-1" + }, + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-4", + "node-edge-point-uuid": "nep-rdm-4-deg-2" + } + ] + }, + { + "uuid": "link-rdm-3-deg-1-rdm-4-deg-3", + "name": [ + { + "value-name": "name", + "value": "RDM_3_DEG_1_RDM_4_DEG_3" + } + ], + "layer-protocol-name": [ + "PHOTONIC_MEDIA" + ], + "administrative-state": "UNLOCKED", + "operational-state": "ENABLED", + "lifecycle-state": "INSTALLED", + "direction": "BIDIRECTIONAL", + "resilience-type": { + "protection-type": "NO_PROTECTON", + "restoration-policy": "NA" + }, + "total-potential-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "available-capacity": { + "total-size": { + "value": "8000", + "unit": "GHz" + } + }, + "cost-characteristic": [ + { + "cost-name": "hop_count", + "cost-value": "1" + } + ], + "latency-characteristic": [ + { + "traffic-property-name": "FixedLatency", + "fixed-latency-characteristic": "1" + } + ], + "node-edge-point": [ + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-3", + "node-edge-point-uuid": "nep-rdm-3-deg-1" + }, + { + "topology-uuid": "top-ols", + "node-uuid": "node-rdm-4", + "node-edge-point-uuid": "nep-rdm-4-deg-3" + } + ] + } + ] + } + ] + }, + "connectivity-context": { + "connection": [], + "connectivity-service": [] + } +} \ No newline at end of file diff --git a/hackfest/tapi/server/tapi_server/encoder.py b/hackfest/tapi/server/tapi_server/encoder.py new file mode 100644 index 0000000000000000000000000000000000000000..482f44a6747204933187eaa533144f5927128611 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/encoder.py @@ -0,0 +1,20 @@ +from connexion.apps.flask_app import FlaskJSONEncoder +import six + +from tapi_server.models.base_model_ import Model + + +class JSONEncoder(FlaskJSONEncoder): + include_nulls = False + + def default(self, o): + if isinstance(o, Model): + dikt = {} + for attr, _ in six.iteritems(o.swagger_types): + value = getattr(o, attr) + if value is None and not self.include_nulls: + continue + attr = o.attribute_map[attr] + dikt[attr] = value + return dikt + return FlaskJSONEncoder.default(self, o) diff --git a/hackfest/tapi/server/tapi_server/models/__init__.py b/hackfest/tapi/server/tapi_server/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..6dddec801015b0180a55e0f7f96d222a2be8e961 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/__init__.py @@ -0,0 +1,276 @@ +# coding: utf-8 + +# flake8: noqa +from __future__ import absolute_import +# import models into model package +from tapi_server.models.operations_tapicommongetserviceinterfacepointdetails_body import OperationsTapicommongetserviceinterfacepointdetailsBody +from tapi_server.models.operations_tapicommonupdateserviceinterfacepoint_body import OperationsTapicommonupdateserviceinterfacepointBody +from tapi_server.models.operations_tapiconnectivitycreateconnectivityservice_body import OperationsTapiconnectivitycreateconnectivityserviceBody +from tapi_server.models.operations_tapiconnectivitydeleteconnectivityservice_body import OperationsTapiconnectivitydeleteconnectivityserviceBody +from tapi_server.models.operations_tapiconnectivitygetconnectiondetails_body import OperationsTapiconnectivitygetconnectiondetailsBody +from tapi_server.models.operations_tapiconnectivitygetconnectionendpointdetails_body import OperationsTapiconnectivitygetconnectionendpointdetailsBody +from tapi_server.models.operations_tapiconnectivitygetconnectivityservicedetails_body import OperationsTapiconnectivitygetconnectivityservicedetailsBody +from tapi_server.models.operations_tapiconnectivityupdateconnectivityservice_body import OperationsTapiconnectivityupdateconnectivityserviceBody +from tapi_server.models.operations_tapinotificationcreatenotificationsubscriptionservice_body import OperationsTapinotificationcreatenotificationsubscriptionserviceBody +from tapi_server.models.operations_tapinotificationdeletenotificationsubscriptionservice_body import OperationsTapinotificationdeletenotificationsubscriptionserviceBody +from tapi_server.models.operations_tapinotificationgetnotificationlist_body import OperationsTapinotificationgetnotificationlistBody +from tapi_server.models.operations_tapinotificationgetnotificationsubscriptionservicedetails_body import OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody +from tapi_server.models.operations_tapinotificationupdatenotificationsubscriptionservice_body import OperationsTapinotificationupdatenotificationsubscriptionserviceBody +from tapi_server.models.operations_tapipathcomputationcomputep2ppath_body import OperationsTapipathcomputationcomputep2ppathBody +from tapi_server.models.operations_tapipathcomputationdeletep2ppath_body import OperationsTapipathcomputationdeletep2ppathBody +from tapi_server.models.operations_tapipathcomputationoptimizep2ppath_body import OperationsTapipathcomputationoptimizep2ppathBody +from tapi_server.models.operations_tapitopologygetlinkdetails_body import OperationsTapitopologygetlinkdetailsBody +from tapi_server.models.operations_tapitopologygetnodedetails_body import OperationsTapitopologygetnodedetailsBody +from tapi_server.models.operations_tapitopologygetnodeedgepointdetails_body import OperationsTapitopologygetnodeedgepointdetailsBody +from tapi_server.models.operations_tapitopologygettopologydetails_body import OperationsTapitopologygettopologydetailsBody +from tapi_server.models.tapi_common_admin_state_pac import TapiCommonAdminStatePac +from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState +from tapi_server.models.tapi_common_bandwidth_profile import TapiCommonBandwidthProfile +from tapi_server.models.tapi_common_bandwidth_profile_type import TapiCommonBandwidthProfileType +from tapi_server.models.tapi_common_bandwidth_profile_wrapper import TapiCommonBandwidthProfileWrapper +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity +from tapi_server.models.tapi_common_capacity_pac import TapiCommonCapacityPac +from tapi_server.models.tapi_common_capacity_unit import TapiCommonCapacityUnit +from tapi_server.models.tapi_common_capacity_value import TapiCommonCapacityValue +from tapi_server.models.tapi_common_capacity_value_wrapper import TapiCommonCapacityValueWrapper +from tapi_server.models.tapi_common_capacity_wrapper import TapiCommonCapacityWrapper +from tapi_server.models.tapi_common_context import TapiCommonContext +from tapi_server.models.tapi_common_context_wrapper import TapiCommonContextWrapper +from tapi_server.models.tapi_common_directive_value import TapiCommonDirectiveValue +from tapi_server.models.tapi_common_forwarding_direction import TapiCommonForwardingDirection +from tapi_server.models.tapi_common_get_service_interface_point_details import TapiCommonGetServiceInterfacePointDetails +from tapi_server.models.tapi_common_get_service_interface_point_list import TapiCommonGetServiceInterfacePointList +from tapi_server.models.tapi_common_getserviceinterfacepointdetails_input import TapiCommonGetserviceinterfacepointdetailsInput +from tapi_server.models.tapi_common_getserviceinterfacepointdetails_output import TapiCommonGetserviceinterfacepointdetailsOutput +from tapi_server.models.tapi_common_getserviceinterfacepointlist_output import TapiCommonGetserviceinterfacepointlistOutput +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState +from tapi_server.models.tapi_common_operational_state_pac import TapiCommonOperationalStatePac +from tapi_server.models.tapi_common_port_direction import TapiCommonPortDirection +from tapi_server.models.tapi_common_port_role import TapiCommonPortRole +from tapi_server.models.tapi_common_service_interface_point import TapiCommonServiceInterfacePoint +from tapi_server.models.tapi_common_service_interface_point_ref import TapiCommonServiceInterfacePointRef +from tapi_server.models.tapi_common_service_interface_point_ref_wrapper import TapiCommonServiceInterfacePointRefWrapper +from tapi_server.models.tapi_common_service_interface_point_wrapper import TapiCommonServiceInterfacePointWrapper +from tapi_server.models.tapi_common_tapi_context import TapiCommonTapiContext +from tapi_server.models.tapi_common_termination_direction import TapiCommonTerminationDirection +from tapi_server.models.tapi_common_termination_pac import TapiCommonTerminationPac +from tapi_server.models.tapi_common_termination_state import TapiCommonTerminationState +from tapi_server.models.tapi_common_time_range import TapiCommonTimeRange +from tapi_server.models.tapi_common_time_range_wrapper import TapiCommonTimeRangeWrapper +from tapi_server.models.tapi_common_updateserviceinterfacepoint_input import TapiCommonUpdateserviceinterfacepointInput +from tapi_server.models.tapi_connectivity_cep_list import TapiConnectivityCepList +from tapi_server.models.tapi_connectivity_cep_list_wrapper import TapiConnectivityCepListWrapper +from tapi_server.models.tapi_connectivity_cep_role import TapiConnectivityCepRole +from tapi_server.models.tapi_connectivity_cep_role_wrapper import TapiConnectivityCepRoleWrapper +from tapi_server.models.tapi_connectivity_connection import TapiConnectivityConnection +from tapi_server.models.tapi_connectivity_connection_end_point import TapiConnectivityConnectionEndPoint +from tapi_server.models.tapi_connectivity_connection_end_point_ref import TapiConnectivityConnectionEndPointRef +from tapi_server.models.tapi_connectivity_connection_end_point_ref_wrapper import TapiConnectivityConnectionEndPointRefWrapper +from tapi_server.models.tapi_connectivity_connection_end_point_wrapper import TapiConnectivityConnectionEndPointWrapper +from tapi_server.models.tapi_connectivity_connection_ref import TapiConnectivityConnectionRef +from tapi_server.models.tapi_connectivity_connection_ref_wrapper import TapiConnectivityConnectionRefWrapper +from tapi_server.models.tapi_connectivity_connection_spec_reference import TapiConnectivityConnectionSpecReference +from tapi_server.models.tapi_connectivity_connection_spec_reference_wrapper import TapiConnectivityConnectionSpecReferenceWrapper +from tapi_server.models.tapi_connectivity_connection_wrapper import TapiConnectivityConnectionWrapper +from tapi_server.models.tapi_connectivity_connectivity_constraint import TapiConnectivityConnectivityConstraint +from tapi_server.models.tapi_connectivity_connectivity_context import TapiConnectivityConnectivityContext +from tapi_server.models.tapi_connectivity_connectivity_context_wrapper import TapiConnectivityConnectivityContextWrapper +from tapi_server.models.tapi_connectivity_connectivity_service import TapiConnectivityConnectivityService +from tapi_server.models.tapi_connectivity_connectivity_service_end_point import TapiConnectivityConnectivityServiceEndPoint +from tapi_server.models.tapi_connectivity_connectivity_service_end_point_ref import TapiConnectivityConnectivityServiceEndPointRef +from tapi_server.models.tapi_connectivity_connectivity_service_end_point_ref_wrapper import TapiConnectivityConnectivityServiceEndPointRefWrapper +from tapi_server.models.tapi_connectivity_connectivity_service_end_point_wrapper import TapiConnectivityConnectivityServiceEndPointWrapper +from tapi_server.models.tapi_connectivity_connectivity_service_ref import TapiConnectivityConnectivityServiceRef +from tapi_server.models.tapi_connectivity_connectivity_service_ref_wrapper import TapiConnectivityConnectivityServiceRefWrapper +from tapi_server.models.tapi_connectivity_connectivity_service_wrapper import TapiConnectivityConnectivityServiceWrapper +from tapi_server.models.tapi_connectivity_context_augmentation3 import TapiConnectivityContextAugmentation3 +from tapi_server.models.tapi_connectivity_coordinate_type import TapiConnectivityCoordinateType +from tapi_server.models.tapi_connectivity_create_connectivity_service import TapiConnectivityCreateConnectivityService +from tapi_server.models.tapi_connectivity_createconnectivityservice_input import TapiConnectivityCreateconnectivityserviceInput +from tapi_server.models.tapi_connectivity_createconnectivityservice_output import TapiConnectivityCreateconnectivityserviceOutput +from tapi_server.models.tapi_connectivity_deleteconnectivityservice_input import TapiConnectivityDeleteconnectivityserviceInput +from tapi_server.models.tapi_connectivity_get_connection_details import TapiConnectivityGetConnectionDetails +from tapi_server.models.tapi_connectivity_get_connection_end_point_details import TapiConnectivityGetConnectionEndPointDetails +from tapi_server.models.tapi_connectivity_get_connectivity_service_details import TapiConnectivityGetConnectivityServiceDetails +from tapi_server.models.tapi_connectivity_get_connectivity_service_list import TapiConnectivityGetConnectivityServiceList +from tapi_server.models.tapi_connectivity_getconnectiondetails_input import TapiConnectivityGetconnectiondetailsInput +from tapi_server.models.tapi_connectivity_getconnectiondetails_output import TapiConnectivityGetconnectiondetailsOutput +from tapi_server.models.tapi_connectivity_getconnectionendpointdetails_input import TapiConnectivityGetconnectionendpointdetailsInput +from tapi_server.models.tapi_connectivity_getconnectionendpointdetails_output import TapiConnectivityGetconnectionendpointdetailsOutput +from tapi_server.models.tapi_connectivity_getconnectivityservicedetails_input import TapiConnectivityGetconnectivityservicedetailsInput +from tapi_server.models.tapi_connectivity_getconnectivityservicedetails_output import TapiConnectivityGetconnectivityservicedetailsOutput +from tapi_server.models.tapi_connectivity_getconnectivityservicelist_output import TapiConnectivityGetconnectivityservicelistOutput +from tapi_server.models.tapi_connectivity_owned_node_edge_point_augmentation1 import TapiConnectivityOwnedNodeEdgePointAugmentation1 +from tapi_server.models.tapi_connectivity_protection_role import TapiConnectivityProtectionRole +from tapi_server.models.tapi_connectivity_resilience_constraint import TapiConnectivityResilienceConstraint +from tapi_server.models.tapi_connectivity_resilience_route import TapiConnectivityResilienceRoute +from tapi_server.models.tapi_connectivity_resilience_route_wrapper import TapiConnectivityResilienceRouteWrapper +from tapi_server.models.tapi_connectivity_reversion_mode import TapiConnectivityReversionMode +from tapi_server.models.tapi_connectivity_route import TapiConnectivityRoute +from tapi_server.models.tapi_connectivity_route_ref import TapiConnectivityRouteRef +from tapi_server.models.tapi_connectivity_route_ref_wrapper import TapiConnectivityRouteRefWrapper +from tapi_server.models.tapi_connectivity_route_wrapper import TapiConnectivityRouteWrapper +from tapi_server.models.tapi_connectivity_selection_control import TapiConnectivitySelectionControl +from tapi_server.models.tapi_connectivity_selection_reason import TapiConnectivitySelectionReason +from tapi_server.models.tapi_connectivity_service_type import TapiConnectivityServiceType +from tapi_server.models.tapi_connectivity_switch import TapiConnectivitySwitch +from tapi_server.models.tapi_connectivity_switch_control import TapiConnectivitySwitchControl +from tapi_server.models.tapi_connectivity_switch_control_ref import TapiConnectivitySwitchControlRef +from tapi_server.models.tapi_connectivity_switch_control_ref_wrapper import TapiConnectivitySwitchControlRefWrapper +from tapi_server.models.tapi_connectivity_switch_control_wrapper import TapiConnectivitySwitchControlWrapper +from tapi_server.models.tapi_connectivity_switch_wrapper import TapiConnectivitySwitchWrapper +from tapi_server.models.tapi_connectivity_update_connectivity_service import TapiConnectivityUpdateConnectivityService +from tapi_server.models.tapi_connectivity_updateconnectivityservice_input import TapiConnectivityUpdateconnectivityserviceInput +from tapi_server.models.tapi_connectivity_updateconnectivityservice_output import TapiConnectivityUpdateconnectivityserviceOutput +from tapi_server.models.tapi_notification_alarm_info import TapiNotificationAlarmInfo +from tapi_server.models.tapi_notification_alarm_info_wrapper import TapiNotificationAlarmInfoWrapper +from tapi_server.models.tapi_notification_context_augmentation1 import TapiNotificationContextAugmentation1 +from tapi_server.models.tapi_notification_create_notification_subscription_service import TapiNotificationCreateNotificationSubscriptionService +from tapi_server.models.tapi_notification_createnotificationsubscriptionservice_input import TapiNotificationCreatenotificationsubscriptionserviceInput +from tapi_server.models.tapi_notification_createnotificationsubscriptionservice_output import TapiNotificationCreatenotificationsubscriptionserviceOutput +from tapi_server.models.tapi_notification_delete_notification_subscription_service import TapiNotificationDeleteNotificationSubscriptionService +from tapi_server.models.tapi_notification_deletenotificationsubscriptionservice_input import TapiNotificationDeletenotificationsubscriptionserviceInput +from tapi_server.models.tapi_notification_deletenotificationsubscriptionservice_output import TapiNotificationDeletenotificationsubscriptionserviceOutput +from tapi_server.models.tapi_notification_get_notification_list import TapiNotificationGetNotificationList +from tapi_server.models.tapi_notification_get_notification_subscription_service_details import TapiNotificationGetNotificationSubscriptionServiceDetails +from tapi_server.models.tapi_notification_get_notification_subscription_service_list import TapiNotificationGetNotificationSubscriptionServiceList +from tapi_server.models.tapi_notification_get_supported_notification_types import TapiNotificationGetSupportedNotificationTypes +from tapi_server.models.tapi_notification_getnotificationlist_input import TapiNotificationGetnotificationlistInput +from tapi_server.models.tapi_notification_getnotificationlist_output import TapiNotificationGetnotificationlistOutput +from tapi_server.models.tapi_notification_getnotificationsubscriptionservicedetails_input import TapiNotificationGetnotificationsubscriptionservicedetailsInput +from tapi_server.models.tapi_notification_getnotificationsubscriptionservicedetails_output import TapiNotificationGetnotificationsubscriptionservicedetailsOutput +from tapi_server.models.tapi_notification_getnotificationsubscriptionservicelist_output import TapiNotificationGetnotificationsubscriptionservicelistOutput +from tapi_server.models.tapi_notification_getsupportednotificationtypes_output import TapiNotificationGetsupportednotificationtypesOutput +from tapi_server.models.tapi_notification_name_and_value_change import TapiNotificationNameAndValueChange +from tapi_server.models.tapi_notification_name_and_value_change_wrapper import TapiNotificationNameAndValueChangeWrapper +from tapi_server.models.tapi_notification_notification import TapiNotificationNotification +from tapi_server.models.tapi_notification_notification_channel import TapiNotificationNotificationChannel +from tapi_server.models.tapi_notification_notification_channel_wrapper import TapiNotificationNotificationChannelWrapper +from tapi_server.models.tapi_notification_notification_context import TapiNotificationNotificationContext +from tapi_server.models.tapi_notification_notification_context_wrapper import TapiNotificationNotificationContextWrapper +from tapi_server.models.tapi_notification_notification_subscription_service import TapiNotificationNotificationSubscriptionService +from tapi_server.models.tapi_notification_notification_subscription_service_wrapper import TapiNotificationNotificationSubscriptionServiceWrapper +from tapi_server.models.tapi_notification_notification_type import TapiNotificationNotificationType +from tapi_server.models.tapi_notification_notification_wrapper import TapiNotificationNotificationWrapper +from tapi_server.models.tapi_notification_object_type import TapiNotificationObjectType +from tapi_server.models.tapi_notification_perceived_severity_type import TapiNotificationPerceivedSeverityType +from tapi_server.models.tapi_notification_perceived_tca_severity import TapiNotificationPerceivedTcaSeverity +from tapi_server.models.tapi_notification_service_affecting import TapiNotificationServiceAffecting +from tapi_server.models.tapi_notification_source_indicator import TapiNotificationSourceIndicator +from tapi_server.models.tapi_notification_subscription_filter import TapiNotificationSubscriptionFilter +from tapi_server.models.tapi_notification_subscription_filter_wrapper import TapiNotificationSubscriptionFilterWrapper +from tapi_server.models.tapi_notification_subscription_state import TapiNotificationSubscriptionState +from tapi_server.models.tapi_notification_tca_info import TapiNotificationTcaInfo +from tapi_server.models.tapi_notification_tca_info_wrapper import TapiNotificationTcaInfoWrapper +from tapi_server.models.tapi_notification_threshold_crossing_type import TapiNotificationThresholdCrossingType +from tapi_server.models.tapi_notification_update_notification_subscription_service import TapiNotificationUpdateNotificationSubscriptionService +from tapi_server.models.tapi_notification_updatenotificationsubscriptionservice_input import TapiNotificationUpdatenotificationsubscriptionserviceInput +from tapi_server.models.tapi_notification_updatenotificationsubscriptionservice_output import TapiNotificationUpdatenotificationsubscriptionserviceOutput +from tapi_server.models.tapi_path_computation_compute_p2_p_path import TapiPathComputationComputeP2PPath +from tapi_server.models.tapi_path_computation_computep2ppath_input import TapiPathComputationComputep2ppathInput +from tapi_server.models.tapi_path_computation_computep2ppath_output import TapiPathComputationComputep2ppathOutput +from tapi_server.models.tapi_path_computation_context_augmentation2 import TapiPathComputationContextAugmentation2 +from tapi_server.models.tapi_path_computation_delete_p2_p_path import TapiPathComputationDeleteP2PPath +from tapi_server.models.tapi_path_computation_deletep2ppath_input import TapiPathComputationDeletep2ppathInput +from tapi_server.models.tapi_path_computation_deletep2ppath_output import TapiPathComputationDeletep2ppathOutput +from tapi_server.models.tapi_path_computation_diversity_policy import TapiPathComputationDiversityPolicy +from tapi_server.models.tapi_path_computation_optimize_p2_ppath import TapiPathComputationOptimizeP2Ppath +from tapi_server.models.tapi_path_computation_optimizep2ppath_input import TapiPathComputationOptimizep2ppathInput +from tapi_server.models.tapi_path_computation_optimizep2ppath_output import TapiPathComputationOptimizep2ppathOutput +from tapi_server.models.tapi_path_computation_path import TapiPathComputationPath +from tapi_server.models.tapi_path_computation_path_computation_context import TapiPathComputationPathComputationContext +from tapi_server.models.tapi_path_computation_path_computation_context_wrapper import TapiPathComputationPathComputationContextWrapper +from tapi_server.models.tapi_path_computation_path_computation_service import TapiPathComputationPathComputationService +from tapi_server.models.tapi_path_computation_path_computation_service_wrapper import TapiPathComputationPathComputationServiceWrapper +from tapi_server.models.tapi_path_computation_path_objective_function import TapiPathComputationPathObjectiveFunction +from tapi_server.models.tapi_path_computation_path_objective_function_wrapper import TapiPathComputationPathObjectiveFunctionWrapper +from tapi_server.models.tapi_path_computation_path_optimization_constraint import TapiPathComputationPathOptimizationConstraint +from tapi_server.models.tapi_path_computation_path_optimization_constraint_wrapper import TapiPathComputationPathOptimizationConstraintWrapper +from tapi_server.models.tapi_path_computation_path_ref import TapiPathComputationPathRef +from tapi_server.models.tapi_path_computation_path_ref_wrapper import TapiPathComputationPathRefWrapper +from tapi_server.models.tapi_path_computation_path_service_end_point import TapiPathComputationPathServiceEndPoint +from tapi_server.models.tapi_path_computation_path_service_end_point_wrapper import TapiPathComputationPathServiceEndPointWrapper +from tapi_server.models.tapi_path_computation_path_wrapper import TapiPathComputationPathWrapper +from tapi_server.models.tapi_path_computation_route_objective_function import TapiPathComputationRouteObjectiveFunction +from tapi_server.models.tapi_path_computation_routing_constraint import TapiPathComputationRoutingConstraint +from tapi_server.models.tapi_path_computation_routing_constraint_wrapper import TapiPathComputationRoutingConstraintWrapper +from tapi_server.models.tapi_path_computation_topology_constraint import TapiPathComputationTopologyConstraint +from tapi_server.models.tapi_path_computation_topology_constraint_wrapper import TapiPathComputationTopologyConstraintWrapper +from tapi_server.models.tapi_path_computation_value_or_priority import TapiPathComputationValueOrPriority +from tapi_server.models.tapi_path_computation_value_or_priority_wrapper import TapiPathComputationValueOrPriorityWrapper +from tapi_server.models.tapi_topology_connection_spec_reference import TapiTopologyConnectionSpecReference +from tapi_server.models.tapi_topology_connection_spec_reference_wrapper import TapiTopologyConnectionSpecReferenceWrapper +from tapi_server.models.tapi_topology_context_augmentation4 import TapiTopologyContextAugmentation4 +from tapi_server.models.tapi_topology_cost_characteristic import TapiTopologyCostCharacteristic +from tapi_server.models.tapi_topology_cost_characteristic_wrapper import TapiTopologyCostCharacteristicWrapper +from tapi_server.models.tapi_topology_forwarding_rule import TapiTopologyForwardingRule +from tapi_server.models.tapi_topology_get_link_details import TapiTopologyGetLinkDetails +from tapi_server.models.tapi_topology_get_node_details import TapiTopologyGetNodeDetails +from tapi_server.models.tapi_topology_get_node_edge_point_details import TapiTopologyGetNodeEdgePointDetails +from tapi_server.models.tapi_topology_get_topology_details import TapiTopologyGetTopologyDetails +from tapi_server.models.tapi_topology_get_topology_list import TapiTopologyGetTopologyList +from tapi_server.models.tapi_topology_getlinkdetails_input import TapiTopologyGetlinkdetailsInput +from tapi_server.models.tapi_topology_getlinkdetails_output import TapiTopologyGetlinkdetailsOutput +from tapi_server.models.tapi_topology_getnodedetails_input import TapiTopologyGetnodedetailsInput +from tapi_server.models.tapi_topology_getnodedetails_output import TapiTopologyGetnodedetailsOutput +from tapi_server.models.tapi_topology_getnodeedgepointdetails_input import TapiTopologyGetnodeedgepointdetailsInput +from tapi_server.models.tapi_topology_getnodeedgepointdetails_output import TapiTopologyGetnodeedgepointdetailsOutput +from tapi_server.models.tapi_topology_gettopologydetails_input import TapiTopologyGettopologydetailsInput +from tapi_server.models.tapi_topology_gettopologydetails_output import TapiTopologyGettopologydetailsOutput +from tapi_server.models.tapi_topology_gettopologylist_output import TapiTopologyGettopologylistOutput +from tapi_server.models.tapi_topology_inter_rule_group import TapiTopologyInterRuleGroup +from tapi_server.models.tapi_topology_inter_rule_group_wrapper import TapiTopologyInterRuleGroupWrapper +from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic +from tapi_server.models.tapi_topology_latency_characteristic_wrapper import TapiTopologyLatencyCharacteristicWrapper +from tapi_server.models.tapi_topology_layer_protocol_transition_pac import TapiTopologyLayerProtocolTransitionPac +from tapi_server.models.tapi_topology_link import TapiTopologyLink +from tapi_server.models.tapi_topology_link_ref import TapiTopologyLinkRef +from tapi_server.models.tapi_topology_link_ref_wrapper import TapiTopologyLinkRefWrapper +from tapi_server.models.tapi_topology_link_wrapper import TapiTopologyLinkWrapper +from tapi_server.models.tapi_topology_network_topology_service import TapiTopologyNetworkTopologyService +from tapi_server.models.tapi_topology_network_topology_service_wrapper import TapiTopologyNetworkTopologyServiceWrapper +from tapi_server.models.tapi_topology_node import TapiTopologyNode +from tapi_server.models.tapi_topology_node_edge_point import TapiTopologyNodeEdgePoint +from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef +from tapi_server.models.tapi_topology_node_edge_point_ref_wrapper import TapiTopologyNodeEdgePointRefWrapper +from tapi_server.models.tapi_topology_node_owned_node_edge_point import TapiTopologyNodeOwnedNodeEdgePoint +from tapi_server.models.tapi_topology_node_owned_node_edge_point_wrapper import TapiTopologyNodeOwnedNodeEdgePointWrapper +from tapi_server.models.tapi_topology_node_ref import TapiTopologyNodeRef +from tapi_server.models.tapi_topology_node_rule_group import TapiTopologyNodeRuleGroup +from tapi_server.models.tapi_topology_node_rule_group_ref import TapiTopologyNodeRuleGroupRef +from tapi_server.models.tapi_topology_node_rule_group_ref_wrapper import TapiTopologyNodeRuleGroupRefWrapper +from tapi_server.models.tapi_topology_node_rule_group_wrapper import TapiTopologyNodeRuleGroupWrapper +from tapi_server.models.tapi_topology_port_role_rule import TapiTopologyPortRoleRule +from tapi_server.models.tapi_topology_port_role_rule_wrapper import TapiTopologyPortRoleRuleWrapper +from tapi_server.models.tapi_topology_protection_type import TapiTopologyProtectionType +from tapi_server.models.tapi_topology_resilience_type import TapiTopologyResilienceType +from tapi_server.models.tapi_topology_resilience_type_wrapper import TapiTopologyResilienceTypeWrapper +from tapi_server.models.tapi_topology_restoration_policy import TapiTopologyRestorationPolicy +from tapi_server.models.tapi_topology_risk_characteristic import TapiTopologyRiskCharacteristic +from tapi_server.models.tapi_topology_risk_characteristic_wrapper import TapiTopologyRiskCharacteristicWrapper +from tapi_server.models.tapi_topology_risk_parameter_pac import TapiTopologyRiskParameterPac +from tapi_server.models.tapi_topology_rule import TapiTopologyRule +from tapi_server.models.tapi_topology_rule_type import TapiTopologyRuleType +from tapi_server.models.tapi_topology_rule_wrapper import TapiTopologyRuleWrapper +from tapi_server.models.tapi_topology_signal_property_rule import TapiTopologySignalPropertyRule +from tapi_server.models.tapi_topology_signal_property_rule_wrapper import TapiTopologySignalPropertyRuleWrapper +from tapi_server.models.tapi_topology_topology import TapiTopologyTopology +from tapi_server.models.tapi_topology_topology_context import TapiTopologyTopologyContext +from tapi_server.models.tapi_topology_topology_context_wrapper import TapiTopologyTopologyContextWrapper +from tapi_server.models.tapi_topology_topology_node import TapiTopologyTopologyNode +from tapi_server.models.tapi_topology_topology_node_wrapper import TapiTopologyTopologyNodeWrapper +from tapi_server.models.tapi_topology_topology_ref import TapiTopologyTopologyRef +from tapi_server.models.tapi_topology_topology_ref_wrapper import TapiTopologyTopologyRefWrapper +from tapi_server.models.tapi_topology_topology_wrapper import TapiTopologyTopologyWrapper +from tapi_server.models.tapi_topology_transfer_cost_pac import TapiTopologyTransferCostPac +from tapi_server.models.tapi_topology_transfer_integrity_pac import TapiTopologyTransferIntegrityPac +from tapi_server.models.tapi_topology_transfer_timing_pac import TapiTopologyTransferTimingPac +from tapi_server.models.tapi_topology_validation_mechanism import TapiTopologyValidationMechanism +from tapi_server.models.tapi_topology_validation_mechanism_wrapper import TapiTopologyValidationMechanismWrapper +from tapi_server.models.tapi_topology_validation_pac import TapiTopologyValidationPac diff --git a/hackfest/tapi/server/tapi_server/models/base_model_.py b/hackfest/tapi/server/tapi_server/models/base_model_.py new file mode 100644 index 0000000000000000000000000000000000000000..8274e46d4ed03120aad7c3a501cc1aa63caf784a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/base_model_.py @@ -0,0 +1,69 @@ +import pprint + +import six +import typing + +from tapi_server import util + +T = typing.TypeVar('T') + + +class Model(object): + # swaggerTypes: The key is attribute name and the + # value is attribute type. + swagger_types = {} + + # attributeMap: The key is attribute name and the + # value is json key in definition. + attribute_map = {} + + @classmethod + def from_dict(cls: typing.Type[T], dikt) -> T: + """Returns the dict as a model""" + return util.deserialize_model(dikt, cls) + + def to_dict(self): + """Returns the model properties as a dict + + :rtype: dict + """ + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + + return result + + def to_str(self): + """Returns the string representation of the model + + :rtype: str + """ + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapicommongetserviceinterfacepointdetails_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapicommongetserviceinterfacepointdetails_body.py new file mode 100644 index 0000000000000000000000000000000000000000..7aedb617cd747956699e865fcd36b36760df40f4 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapicommongetserviceinterfacepointdetails_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_getserviceinterfacepointdetails_input import TapiCommonGetserviceinterfacepointdetailsInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapicommongetserviceinterfacepointdetailsBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiCommonGetserviceinterfacepointdetailsInput=None): # noqa: E501 + """OperationsTapicommongetserviceinterfacepointdetailsBody - a model defined in Swagger + + :param input: The input of this OperationsTapicommongetserviceinterfacepointdetailsBody. # noqa: E501 + :type input: TapiCommonGetserviceinterfacepointdetailsInput + """ + self.swagger_types = { + 'input': TapiCommonGetserviceinterfacepointdetailsInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapicommongetserviceinterfacepointdetailsBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapicommongetserviceinterfacepointdetails_body of this OperationsTapicommongetserviceinterfacepointdetailsBody. # noqa: E501 + :rtype: OperationsTapicommongetserviceinterfacepointdetailsBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiCommonGetserviceinterfacepointdetailsInput: + """Gets the input of this OperationsTapicommongetserviceinterfacepointdetailsBody. + + + :return: The input of this OperationsTapicommongetserviceinterfacepointdetailsBody. + :rtype: TapiCommonGetserviceinterfacepointdetailsInput + """ + return self._input + + @input.setter + def input(self, input: TapiCommonGetserviceinterfacepointdetailsInput): + """Sets the input of this OperationsTapicommongetserviceinterfacepointdetailsBody. + + + :param input: The input of this OperationsTapicommongetserviceinterfacepointdetailsBody. + :type input: TapiCommonGetserviceinterfacepointdetailsInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapicommonupdateserviceinterfacepoint_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapicommonupdateserviceinterfacepoint_body.py new file mode 100644 index 0000000000000000000000000000000000000000..2e5574299100758bd6ffb18bec9e4ddcbf5abf35 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapicommonupdateserviceinterfacepoint_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_updateserviceinterfacepoint_input import TapiCommonUpdateserviceinterfacepointInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapicommonupdateserviceinterfacepointBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiCommonUpdateserviceinterfacepointInput=None): # noqa: E501 + """OperationsTapicommonupdateserviceinterfacepointBody - a model defined in Swagger + + :param input: The input of this OperationsTapicommonupdateserviceinterfacepointBody. # noqa: E501 + :type input: TapiCommonUpdateserviceinterfacepointInput + """ + self.swagger_types = { + 'input': TapiCommonUpdateserviceinterfacepointInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapicommonupdateserviceinterfacepointBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapicommonupdateserviceinterfacepoint_body of this OperationsTapicommonupdateserviceinterfacepointBody. # noqa: E501 + :rtype: OperationsTapicommonupdateserviceinterfacepointBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiCommonUpdateserviceinterfacepointInput: + """Gets the input of this OperationsTapicommonupdateserviceinterfacepointBody. + + + :return: The input of this OperationsTapicommonupdateserviceinterfacepointBody. + :rtype: TapiCommonUpdateserviceinterfacepointInput + """ + return self._input + + @input.setter + def input(self, input: TapiCommonUpdateserviceinterfacepointInput): + """Sets the input of this OperationsTapicommonupdateserviceinterfacepointBody. + + + :param input: The input of this OperationsTapicommonupdateserviceinterfacepointBody. + :type input: TapiCommonUpdateserviceinterfacepointInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitycreateconnectivityservice_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitycreateconnectivityservice_body.py new file mode 100644 index 0000000000000000000000000000000000000000..f48baa1e698c0d26ff6a61f54ab47756eea29ba9 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitycreateconnectivityservice_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_createconnectivityservice_input import TapiConnectivityCreateconnectivityserviceInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapiconnectivitycreateconnectivityserviceBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiConnectivityCreateconnectivityserviceInput=None): # noqa: E501 + """OperationsTapiconnectivitycreateconnectivityserviceBody - a model defined in Swagger + + :param input: The input of this OperationsTapiconnectivitycreateconnectivityserviceBody. # noqa: E501 + :type input: TapiConnectivityCreateconnectivityserviceInput + """ + self.swagger_types = { + 'input': TapiConnectivityCreateconnectivityserviceInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapiconnectivitycreateconnectivityserviceBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapiconnectivitycreateconnectivityservice_body of this OperationsTapiconnectivitycreateconnectivityserviceBody. # noqa: E501 + :rtype: OperationsTapiconnectivitycreateconnectivityserviceBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiConnectivityCreateconnectivityserviceInput: + """Gets the input of this OperationsTapiconnectivitycreateconnectivityserviceBody. + + + :return: The input of this OperationsTapiconnectivitycreateconnectivityserviceBody. + :rtype: TapiConnectivityCreateconnectivityserviceInput + """ + return self._input + + @input.setter + def input(self, input: TapiConnectivityCreateconnectivityserviceInput): + """Sets the input of this OperationsTapiconnectivitycreateconnectivityserviceBody. + + + :param input: The input of this OperationsTapiconnectivitycreateconnectivityserviceBody. + :type input: TapiConnectivityCreateconnectivityserviceInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitydeleteconnectivityservice_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitydeleteconnectivityservice_body.py new file mode 100644 index 0000000000000000000000000000000000000000..43ada2c16556ccbfe6582783ad2c79d25e794af0 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitydeleteconnectivityservice_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_deleteconnectivityservice_input import TapiConnectivityDeleteconnectivityserviceInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapiconnectivitydeleteconnectivityserviceBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiConnectivityDeleteconnectivityserviceInput=None): # noqa: E501 + """OperationsTapiconnectivitydeleteconnectivityserviceBody - a model defined in Swagger + + :param input: The input of this OperationsTapiconnectivitydeleteconnectivityserviceBody. # noqa: E501 + :type input: TapiConnectivityDeleteconnectivityserviceInput + """ + self.swagger_types = { + 'input': TapiConnectivityDeleteconnectivityserviceInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapiconnectivitydeleteconnectivityserviceBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapiconnectivitydeleteconnectivityservice_body of this OperationsTapiconnectivitydeleteconnectivityserviceBody. # noqa: E501 + :rtype: OperationsTapiconnectivitydeleteconnectivityserviceBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiConnectivityDeleteconnectivityserviceInput: + """Gets the input of this OperationsTapiconnectivitydeleteconnectivityserviceBody. + + + :return: The input of this OperationsTapiconnectivitydeleteconnectivityserviceBody. + :rtype: TapiConnectivityDeleteconnectivityserviceInput + """ + return self._input + + @input.setter + def input(self, input: TapiConnectivityDeleteconnectivityserviceInput): + """Sets the input of this OperationsTapiconnectivitydeleteconnectivityserviceBody. + + + :param input: The input of this OperationsTapiconnectivitydeleteconnectivityserviceBody. + :type input: TapiConnectivityDeleteconnectivityserviceInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitygetconnectiondetails_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitygetconnectiondetails_body.py new file mode 100644 index 0000000000000000000000000000000000000000..07d1b21df5bfcc276c8390d94abbe9134cdd3a3b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitygetconnectiondetails_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_getconnectiondetails_input import TapiConnectivityGetconnectiondetailsInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapiconnectivitygetconnectiondetailsBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiConnectivityGetconnectiondetailsInput=None): # noqa: E501 + """OperationsTapiconnectivitygetconnectiondetailsBody - a model defined in Swagger + + :param input: The input of this OperationsTapiconnectivitygetconnectiondetailsBody. # noqa: E501 + :type input: TapiConnectivityGetconnectiondetailsInput + """ + self.swagger_types = { + 'input': TapiConnectivityGetconnectiondetailsInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapiconnectivitygetconnectiondetailsBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapiconnectivitygetconnectiondetails_body of this OperationsTapiconnectivitygetconnectiondetailsBody. # noqa: E501 + :rtype: OperationsTapiconnectivitygetconnectiondetailsBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiConnectivityGetconnectiondetailsInput: + """Gets the input of this OperationsTapiconnectivitygetconnectiondetailsBody. + + + :return: The input of this OperationsTapiconnectivitygetconnectiondetailsBody. + :rtype: TapiConnectivityGetconnectiondetailsInput + """ + return self._input + + @input.setter + def input(self, input: TapiConnectivityGetconnectiondetailsInput): + """Sets the input of this OperationsTapiconnectivitygetconnectiondetailsBody. + + + :param input: The input of this OperationsTapiconnectivitygetconnectiondetailsBody. + :type input: TapiConnectivityGetconnectiondetailsInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitygetconnectionendpointdetails_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitygetconnectionendpointdetails_body.py new file mode 100644 index 0000000000000000000000000000000000000000..6543435bb6ce69f876c1c43c8d3bf574112bbfdc --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitygetconnectionendpointdetails_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_getconnectionendpointdetails_input import TapiConnectivityGetconnectionendpointdetailsInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapiconnectivitygetconnectionendpointdetailsBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiConnectivityGetconnectionendpointdetailsInput=None): # noqa: E501 + """OperationsTapiconnectivitygetconnectionendpointdetailsBody - a model defined in Swagger + + :param input: The input of this OperationsTapiconnectivitygetconnectionendpointdetailsBody. # noqa: E501 + :type input: TapiConnectivityGetconnectionendpointdetailsInput + """ + self.swagger_types = { + 'input': TapiConnectivityGetconnectionendpointdetailsInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapiconnectivitygetconnectionendpointdetailsBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapiconnectivitygetconnectionendpointdetails_body of this OperationsTapiconnectivitygetconnectionendpointdetailsBody. # noqa: E501 + :rtype: OperationsTapiconnectivitygetconnectionendpointdetailsBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiConnectivityGetconnectionendpointdetailsInput: + """Gets the input of this OperationsTapiconnectivitygetconnectionendpointdetailsBody. + + + :return: The input of this OperationsTapiconnectivitygetconnectionendpointdetailsBody. + :rtype: TapiConnectivityGetconnectionendpointdetailsInput + """ + return self._input + + @input.setter + def input(self, input: TapiConnectivityGetconnectionendpointdetailsInput): + """Sets the input of this OperationsTapiconnectivitygetconnectionendpointdetailsBody. + + + :param input: The input of this OperationsTapiconnectivitygetconnectionendpointdetailsBody. + :type input: TapiConnectivityGetconnectionendpointdetailsInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitygetconnectivityservicedetails_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitygetconnectivityservicedetails_body.py new file mode 100644 index 0000000000000000000000000000000000000000..ee223091c715cf1905b62a9d3dba8ed778138088 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivitygetconnectivityservicedetails_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_getconnectivityservicedetails_input import TapiConnectivityGetconnectivityservicedetailsInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapiconnectivitygetconnectivityservicedetailsBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiConnectivityGetconnectivityservicedetailsInput=None): # noqa: E501 + """OperationsTapiconnectivitygetconnectivityservicedetailsBody - a model defined in Swagger + + :param input: The input of this OperationsTapiconnectivitygetconnectivityservicedetailsBody. # noqa: E501 + :type input: TapiConnectivityGetconnectivityservicedetailsInput + """ + self.swagger_types = { + 'input': TapiConnectivityGetconnectivityservicedetailsInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapiconnectivitygetconnectivityservicedetailsBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapiconnectivitygetconnectivityservicedetails_body of this OperationsTapiconnectivitygetconnectivityservicedetailsBody. # noqa: E501 + :rtype: OperationsTapiconnectivitygetconnectivityservicedetailsBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiConnectivityGetconnectivityservicedetailsInput: + """Gets the input of this OperationsTapiconnectivitygetconnectivityservicedetailsBody. + + + :return: The input of this OperationsTapiconnectivitygetconnectivityservicedetailsBody. + :rtype: TapiConnectivityGetconnectivityservicedetailsInput + """ + return self._input + + @input.setter + def input(self, input: TapiConnectivityGetconnectivityservicedetailsInput): + """Sets the input of this OperationsTapiconnectivitygetconnectivityservicedetailsBody. + + + :param input: The input of this OperationsTapiconnectivitygetconnectivityservicedetailsBody. + :type input: TapiConnectivityGetconnectivityservicedetailsInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivityupdateconnectivityservice_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivityupdateconnectivityservice_body.py new file mode 100644 index 0000000000000000000000000000000000000000..fb22c93f630536f7f22d9f586cf09adb23432e8e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapiconnectivityupdateconnectivityservice_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_updateconnectivityservice_input import TapiConnectivityUpdateconnectivityserviceInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapiconnectivityupdateconnectivityserviceBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiConnectivityUpdateconnectivityserviceInput=None): # noqa: E501 + """OperationsTapiconnectivityupdateconnectivityserviceBody - a model defined in Swagger + + :param input: The input of this OperationsTapiconnectivityupdateconnectivityserviceBody. # noqa: E501 + :type input: TapiConnectivityUpdateconnectivityserviceInput + """ + self.swagger_types = { + 'input': TapiConnectivityUpdateconnectivityserviceInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapiconnectivityupdateconnectivityserviceBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapiconnectivityupdateconnectivityservice_body of this OperationsTapiconnectivityupdateconnectivityserviceBody. # noqa: E501 + :rtype: OperationsTapiconnectivityupdateconnectivityserviceBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiConnectivityUpdateconnectivityserviceInput: + """Gets the input of this OperationsTapiconnectivityupdateconnectivityserviceBody. + + + :return: The input of this OperationsTapiconnectivityupdateconnectivityserviceBody. + :rtype: TapiConnectivityUpdateconnectivityserviceInput + """ + return self._input + + @input.setter + def input(self, input: TapiConnectivityUpdateconnectivityserviceInput): + """Sets the input of this OperationsTapiconnectivityupdateconnectivityserviceBody. + + + :param input: The input of this OperationsTapiconnectivityupdateconnectivityserviceBody. + :type input: TapiConnectivityUpdateconnectivityserviceInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapinotificationcreatenotificationsubscriptionservice_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapinotificationcreatenotificationsubscriptionservice_body.py new file mode 100644 index 0000000000000000000000000000000000000000..43a6f7b5a6d58a9f33c6b47b24c5cbcbc20bebda --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapinotificationcreatenotificationsubscriptionservice_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_createnotificationsubscriptionservice_input import TapiNotificationCreatenotificationsubscriptionserviceInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapinotificationcreatenotificationsubscriptionserviceBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiNotificationCreatenotificationsubscriptionserviceInput=None): # noqa: E501 + """OperationsTapinotificationcreatenotificationsubscriptionserviceBody - a model defined in Swagger + + :param input: The input of this OperationsTapinotificationcreatenotificationsubscriptionserviceBody. # noqa: E501 + :type input: TapiNotificationCreatenotificationsubscriptionserviceInput + """ + self.swagger_types = { + 'input': TapiNotificationCreatenotificationsubscriptionserviceInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapinotificationcreatenotificationsubscriptionserviceBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapinotificationcreatenotificationsubscriptionservice_body of this OperationsTapinotificationcreatenotificationsubscriptionserviceBody. # noqa: E501 + :rtype: OperationsTapinotificationcreatenotificationsubscriptionserviceBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiNotificationCreatenotificationsubscriptionserviceInput: + """Gets the input of this OperationsTapinotificationcreatenotificationsubscriptionserviceBody. + + + :return: The input of this OperationsTapinotificationcreatenotificationsubscriptionserviceBody. + :rtype: TapiNotificationCreatenotificationsubscriptionserviceInput + """ + return self._input + + @input.setter + def input(self, input: TapiNotificationCreatenotificationsubscriptionserviceInput): + """Sets the input of this OperationsTapinotificationcreatenotificationsubscriptionserviceBody. + + + :param input: The input of this OperationsTapinotificationcreatenotificationsubscriptionserviceBody. + :type input: TapiNotificationCreatenotificationsubscriptionserviceInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapinotificationdeletenotificationsubscriptionservice_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapinotificationdeletenotificationsubscriptionservice_body.py new file mode 100644 index 0000000000000000000000000000000000000000..ec9af03045ce0dbd64334a3bfba074fa7c7a2faa --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapinotificationdeletenotificationsubscriptionservice_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_deletenotificationsubscriptionservice_input import TapiNotificationDeletenotificationsubscriptionserviceInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapinotificationdeletenotificationsubscriptionserviceBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiNotificationDeletenotificationsubscriptionserviceInput=None): # noqa: E501 + """OperationsTapinotificationdeletenotificationsubscriptionserviceBody - a model defined in Swagger + + :param input: The input of this OperationsTapinotificationdeletenotificationsubscriptionserviceBody. # noqa: E501 + :type input: TapiNotificationDeletenotificationsubscriptionserviceInput + """ + self.swagger_types = { + 'input': TapiNotificationDeletenotificationsubscriptionserviceInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapinotificationdeletenotificationsubscriptionserviceBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapinotificationdeletenotificationsubscriptionservice_body of this OperationsTapinotificationdeletenotificationsubscriptionserviceBody. # noqa: E501 + :rtype: OperationsTapinotificationdeletenotificationsubscriptionserviceBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiNotificationDeletenotificationsubscriptionserviceInput: + """Gets the input of this OperationsTapinotificationdeletenotificationsubscriptionserviceBody. + + + :return: The input of this OperationsTapinotificationdeletenotificationsubscriptionserviceBody. + :rtype: TapiNotificationDeletenotificationsubscriptionserviceInput + """ + return self._input + + @input.setter + def input(self, input: TapiNotificationDeletenotificationsubscriptionserviceInput): + """Sets the input of this OperationsTapinotificationdeletenotificationsubscriptionserviceBody. + + + :param input: The input of this OperationsTapinotificationdeletenotificationsubscriptionserviceBody. + :type input: TapiNotificationDeletenotificationsubscriptionserviceInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapinotificationgetnotificationlist_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapinotificationgetnotificationlist_body.py new file mode 100644 index 0000000000000000000000000000000000000000..257a824eebcdbb57d74af2b04244986f7997282a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapinotificationgetnotificationlist_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_getnotificationlist_input import TapiNotificationGetnotificationlistInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapinotificationgetnotificationlistBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiNotificationGetnotificationlistInput=None): # noqa: E501 + """OperationsTapinotificationgetnotificationlistBody - a model defined in Swagger + + :param input: The input of this OperationsTapinotificationgetnotificationlistBody. # noqa: E501 + :type input: TapiNotificationGetnotificationlistInput + """ + self.swagger_types = { + 'input': TapiNotificationGetnotificationlistInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapinotificationgetnotificationlistBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapinotificationgetnotificationlist_body of this OperationsTapinotificationgetnotificationlistBody. # noqa: E501 + :rtype: OperationsTapinotificationgetnotificationlistBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiNotificationGetnotificationlistInput: + """Gets the input of this OperationsTapinotificationgetnotificationlistBody. + + + :return: The input of this OperationsTapinotificationgetnotificationlistBody. + :rtype: TapiNotificationGetnotificationlistInput + """ + return self._input + + @input.setter + def input(self, input: TapiNotificationGetnotificationlistInput): + """Sets the input of this OperationsTapinotificationgetnotificationlistBody. + + + :param input: The input of this OperationsTapinotificationgetnotificationlistBody. + :type input: TapiNotificationGetnotificationlistInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapinotificationgetnotificationsubscriptionservicedetails_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapinotificationgetnotificationsubscriptionservicedetails_body.py new file mode 100644 index 0000000000000000000000000000000000000000..6fefb3a1038b67ae936cee91360afd425c99969b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapinotificationgetnotificationsubscriptionservicedetails_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_getnotificationsubscriptionservicedetails_input import TapiNotificationGetnotificationsubscriptionservicedetailsInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiNotificationGetnotificationsubscriptionservicedetailsInput=None): # noqa: E501 + """OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody - a model defined in Swagger + + :param input: The input of this OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody. # noqa: E501 + :type input: TapiNotificationGetnotificationsubscriptionservicedetailsInput + """ + self.swagger_types = { + 'input': TapiNotificationGetnotificationsubscriptionservicedetailsInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapinotificationgetnotificationsubscriptionservicedetails_body of this OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody. # noqa: E501 + :rtype: OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiNotificationGetnotificationsubscriptionservicedetailsInput: + """Gets the input of this OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody. + + + :return: The input of this OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody. + :rtype: TapiNotificationGetnotificationsubscriptionservicedetailsInput + """ + return self._input + + @input.setter + def input(self, input: TapiNotificationGetnotificationsubscriptionservicedetailsInput): + """Sets the input of this OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody. + + + :param input: The input of this OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody. + :type input: TapiNotificationGetnotificationsubscriptionservicedetailsInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapinotificationupdatenotificationsubscriptionservice_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapinotificationupdatenotificationsubscriptionservice_body.py new file mode 100644 index 0000000000000000000000000000000000000000..68baf4d2b0f86444cd8dd651c38e5460d9dd095e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapinotificationupdatenotificationsubscriptionservice_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_updatenotificationsubscriptionservice_input import TapiNotificationUpdatenotificationsubscriptionserviceInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapinotificationupdatenotificationsubscriptionserviceBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiNotificationUpdatenotificationsubscriptionserviceInput=None): # noqa: E501 + """OperationsTapinotificationupdatenotificationsubscriptionserviceBody - a model defined in Swagger + + :param input: The input of this OperationsTapinotificationupdatenotificationsubscriptionserviceBody. # noqa: E501 + :type input: TapiNotificationUpdatenotificationsubscriptionserviceInput + """ + self.swagger_types = { + 'input': TapiNotificationUpdatenotificationsubscriptionserviceInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapinotificationupdatenotificationsubscriptionserviceBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapinotificationupdatenotificationsubscriptionservice_body of this OperationsTapinotificationupdatenotificationsubscriptionserviceBody. # noqa: E501 + :rtype: OperationsTapinotificationupdatenotificationsubscriptionserviceBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiNotificationUpdatenotificationsubscriptionserviceInput: + """Gets the input of this OperationsTapinotificationupdatenotificationsubscriptionserviceBody. + + + :return: The input of this OperationsTapinotificationupdatenotificationsubscriptionserviceBody. + :rtype: TapiNotificationUpdatenotificationsubscriptionserviceInput + """ + return self._input + + @input.setter + def input(self, input: TapiNotificationUpdatenotificationsubscriptionserviceInput): + """Sets the input of this OperationsTapinotificationupdatenotificationsubscriptionserviceBody. + + + :param input: The input of this OperationsTapinotificationupdatenotificationsubscriptionserviceBody. + :type input: TapiNotificationUpdatenotificationsubscriptionserviceInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapipathcomputationcomputep2ppath_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapipathcomputationcomputep2ppath_body.py new file mode 100644 index 0000000000000000000000000000000000000000..c18dcc4a67b22ca066d39099a5fab21f7881ea47 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapipathcomputationcomputep2ppath_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_computep2ppath_input import TapiPathComputationComputep2ppathInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapipathcomputationcomputep2ppathBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiPathComputationComputep2ppathInput=None): # noqa: E501 + """OperationsTapipathcomputationcomputep2ppathBody - a model defined in Swagger + + :param input: The input of this OperationsTapipathcomputationcomputep2ppathBody. # noqa: E501 + :type input: TapiPathComputationComputep2ppathInput + """ + self.swagger_types = { + 'input': TapiPathComputationComputep2ppathInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapipathcomputationcomputep2ppathBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapipathcomputationcomputep2ppath_body of this OperationsTapipathcomputationcomputep2ppathBody. # noqa: E501 + :rtype: OperationsTapipathcomputationcomputep2ppathBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiPathComputationComputep2ppathInput: + """Gets the input of this OperationsTapipathcomputationcomputep2ppathBody. + + + :return: The input of this OperationsTapipathcomputationcomputep2ppathBody. + :rtype: TapiPathComputationComputep2ppathInput + """ + return self._input + + @input.setter + def input(self, input: TapiPathComputationComputep2ppathInput): + """Sets the input of this OperationsTapipathcomputationcomputep2ppathBody. + + + :param input: The input of this OperationsTapipathcomputationcomputep2ppathBody. + :type input: TapiPathComputationComputep2ppathInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapipathcomputationdeletep2ppath_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapipathcomputationdeletep2ppath_body.py new file mode 100644 index 0000000000000000000000000000000000000000..a7ac8ce61783786629120bec45ceacfb26b03eb0 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapipathcomputationdeletep2ppath_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_deletep2ppath_input import TapiPathComputationDeletep2ppathInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapipathcomputationdeletep2ppathBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiPathComputationDeletep2ppathInput=None): # noqa: E501 + """OperationsTapipathcomputationdeletep2ppathBody - a model defined in Swagger + + :param input: The input of this OperationsTapipathcomputationdeletep2ppathBody. # noqa: E501 + :type input: TapiPathComputationDeletep2ppathInput + """ + self.swagger_types = { + 'input': TapiPathComputationDeletep2ppathInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapipathcomputationdeletep2ppathBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapipathcomputationdeletep2ppath_body of this OperationsTapipathcomputationdeletep2ppathBody. # noqa: E501 + :rtype: OperationsTapipathcomputationdeletep2ppathBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiPathComputationDeletep2ppathInput: + """Gets the input of this OperationsTapipathcomputationdeletep2ppathBody. + + + :return: The input of this OperationsTapipathcomputationdeletep2ppathBody. + :rtype: TapiPathComputationDeletep2ppathInput + """ + return self._input + + @input.setter + def input(self, input: TapiPathComputationDeletep2ppathInput): + """Sets the input of this OperationsTapipathcomputationdeletep2ppathBody. + + + :param input: The input of this OperationsTapipathcomputationdeletep2ppathBody. + :type input: TapiPathComputationDeletep2ppathInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapipathcomputationoptimizep2ppath_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapipathcomputationoptimizep2ppath_body.py new file mode 100644 index 0000000000000000000000000000000000000000..33e7f86648abc07991b13f04567b6d7c4e717ced --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapipathcomputationoptimizep2ppath_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_optimizep2ppath_input import TapiPathComputationOptimizep2ppathInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapipathcomputationoptimizep2ppathBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiPathComputationOptimizep2ppathInput=None): # noqa: E501 + """OperationsTapipathcomputationoptimizep2ppathBody - a model defined in Swagger + + :param input: The input of this OperationsTapipathcomputationoptimizep2ppathBody. # noqa: E501 + :type input: TapiPathComputationOptimizep2ppathInput + """ + self.swagger_types = { + 'input': TapiPathComputationOptimizep2ppathInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapipathcomputationoptimizep2ppathBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapipathcomputationoptimizep2ppath_body of this OperationsTapipathcomputationoptimizep2ppathBody. # noqa: E501 + :rtype: OperationsTapipathcomputationoptimizep2ppathBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiPathComputationOptimizep2ppathInput: + """Gets the input of this OperationsTapipathcomputationoptimizep2ppathBody. + + + :return: The input of this OperationsTapipathcomputationoptimizep2ppathBody. + :rtype: TapiPathComputationOptimizep2ppathInput + """ + return self._input + + @input.setter + def input(self, input: TapiPathComputationOptimizep2ppathInput): + """Sets the input of this OperationsTapipathcomputationoptimizep2ppathBody. + + + :param input: The input of this OperationsTapipathcomputationoptimizep2ppathBody. + :type input: TapiPathComputationOptimizep2ppathInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapitopologygetlinkdetails_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapitopologygetlinkdetails_body.py new file mode 100644 index 0000000000000000000000000000000000000000..389a4d7f51dce713d94ee4273026cf7da5b8a900 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapitopologygetlinkdetails_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_getlinkdetails_input import TapiTopologyGetlinkdetailsInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapitopologygetlinkdetailsBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiTopologyGetlinkdetailsInput=None): # noqa: E501 + """OperationsTapitopologygetlinkdetailsBody - a model defined in Swagger + + :param input: The input of this OperationsTapitopologygetlinkdetailsBody. # noqa: E501 + :type input: TapiTopologyGetlinkdetailsInput + """ + self.swagger_types = { + 'input': TapiTopologyGetlinkdetailsInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapitopologygetlinkdetailsBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapitopologygetlinkdetails_body of this OperationsTapitopologygetlinkdetailsBody. # noqa: E501 + :rtype: OperationsTapitopologygetlinkdetailsBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiTopologyGetlinkdetailsInput: + """Gets the input of this OperationsTapitopologygetlinkdetailsBody. + + + :return: The input of this OperationsTapitopologygetlinkdetailsBody. + :rtype: TapiTopologyGetlinkdetailsInput + """ + return self._input + + @input.setter + def input(self, input: TapiTopologyGetlinkdetailsInput): + """Sets the input of this OperationsTapitopologygetlinkdetailsBody. + + + :param input: The input of this OperationsTapitopologygetlinkdetailsBody. + :type input: TapiTopologyGetlinkdetailsInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapitopologygetnodedetails_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapitopologygetnodedetails_body.py new file mode 100644 index 0000000000000000000000000000000000000000..cd83d5b34aed1bb7564bfcaffb98c7351fbcaeab --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapitopologygetnodedetails_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_getnodedetails_input import TapiTopologyGetnodedetailsInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapitopologygetnodedetailsBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiTopologyGetnodedetailsInput=None): # noqa: E501 + """OperationsTapitopologygetnodedetailsBody - a model defined in Swagger + + :param input: The input of this OperationsTapitopologygetnodedetailsBody. # noqa: E501 + :type input: TapiTopologyGetnodedetailsInput + """ + self.swagger_types = { + 'input': TapiTopologyGetnodedetailsInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapitopologygetnodedetailsBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapitopologygetnodedetails_body of this OperationsTapitopologygetnodedetailsBody. # noqa: E501 + :rtype: OperationsTapitopologygetnodedetailsBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiTopologyGetnodedetailsInput: + """Gets the input of this OperationsTapitopologygetnodedetailsBody. + + + :return: The input of this OperationsTapitopologygetnodedetailsBody. + :rtype: TapiTopologyGetnodedetailsInput + """ + return self._input + + @input.setter + def input(self, input: TapiTopologyGetnodedetailsInput): + """Sets the input of this OperationsTapitopologygetnodedetailsBody. + + + :param input: The input of this OperationsTapitopologygetnodedetailsBody. + :type input: TapiTopologyGetnodedetailsInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapitopologygetnodeedgepointdetails_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapitopologygetnodeedgepointdetails_body.py new file mode 100644 index 0000000000000000000000000000000000000000..dd43956fae60bed31beed4b0a49ccba555a0a732 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapitopologygetnodeedgepointdetails_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_getnodeedgepointdetails_input import TapiTopologyGetnodeedgepointdetailsInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapitopologygetnodeedgepointdetailsBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiTopologyGetnodeedgepointdetailsInput=None): # noqa: E501 + """OperationsTapitopologygetnodeedgepointdetailsBody - a model defined in Swagger + + :param input: The input of this OperationsTapitopologygetnodeedgepointdetailsBody. # noqa: E501 + :type input: TapiTopologyGetnodeedgepointdetailsInput + """ + self.swagger_types = { + 'input': TapiTopologyGetnodeedgepointdetailsInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapitopologygetnodeedgepointdetailsBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapitopologygetnodeedgepointdetails_body of this OperationsTapitopologygetnodeedgepointdetailsBody. # noqa: E501 + :rtype: OperationsTapitopologygetnodeedgepointdetailsBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiTopologyGetnodeedgepointdetailsInput: + """Gets the input of this OperationsTapitopologygetnodeedgepointdetailsBody. + + + :return: The input of this OperationsTapitopologygetnodeedgepointdetailsBody. + :rtype: TapiTopologyGetnodeedgepointdetailsInput + """ + return self._input + + @input.setter + def input(self, input: TapiTopologyGetnodeedgepointdetailsInput): + """Sets the input of this OperationsTapitopologygetnodeedgepointdetailsBody. + + + :param input: The input of this OperationsTapitopologygetnodeedgepointdetailsBody. + :type input: TapiTopologyGetnodeedgepointdetailsInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/operations_tapitopologygettopologydetails_body.py b/hackfest/tapi/server/tapi_server/models/operations_tapitopologygettopologydetails_body.py new file mode 100644 index 0000000000000000000000000000000000000000..f5a0f2d932ddb6b3f082b5a61269bfd3d2fc8508 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/operations_tapitopologygettopologydetails_body.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_gettopologydetails_input import TapiTopologyGettopologydetailsInput # noqa: F401,E501 +from tapi_server import util + + +class OperationsTapitopologygettopologydetailsBody(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, input: TapiTopologyGettopologydetailsInput=None): # noqa: E501 + """OperationsTapitopologygettopologydetailsBody - a model defined in Swagger + + :param input: The input of this OperationsTapitopologygettopologydetailsBody. # noqa: E501 + :type input: TapiTopologyGettopologydetailsInput + """ + self.swagger_types = { + 'input': TapiTopologyGettopologydetailsInput + } + + self.attribute_map = { + 'input': 'input' + } + self._input = input + + @classmethod + def from_dict(cls, dikt) -> 'OperationsTapitopologygettopologydetailsBody': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The operations_tapitopologygettopologydetails_body of this OperationsTapitopologygettopologydetailsBody. # noqa: E501 + :rtype: OperationsTapitopologygettopologydetailsBody + """ + return util.deserialize_model(dikt, cls) + + @property + def input(self) -> TapiTopologyGettopologydetailsInput: + """Gets the input of this OperationsTapitopologygettopologydetailsBody. + + + :return: The input of this OperationsTapitopologygettopologydetailsBody. + :rtype: TapiTopologyGettopologydetailsInput + """ + return self._input + + @input.setter + def input(self, input: TapiTopologyGettopologydetailsInput): + """Sets the input of this OperationsTapitopologygettopologydetailsBody. + + + :param input: The input of this OperationsTapitopologygettopologydetailsBody. + :type input: TapiTopologyGettopologydetailsInput + """ + + self._input = input diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_admin_state_pac.py b/hackfest/tapi/server/tapi_server/models/tapi_common_admin_state_pac.py new file mode 100644 index 0000000000000000000000000000000000000000..1db830d31415b70a9a19bb0a3ba740153e886594 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_admin_state_pac.py @@ -0,0 +1,117 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState # noqa: F401,E501 +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonAdminStatePac(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, administrative_state: TapiCommonAdministrativeState=None): # noqa: E501 + """TapiCommonAdminStatePac - a model defined in Swagger + + :param operational_state: The operational_state of this TapiCommonAdminStatePac. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiCommonAdminStatePac. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + :param administrative_state: The administrative_state of this TapiCommonAdminStatePac. # noqa: E501 + :type administrative_state: TapiCommonAdministrativeState + """ + self.swagger_types = { + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState, + 'administrative_state': TapiCommonAdministrativeState + } + + self.attribute_map = { + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state', + 'administrative_state': 'administrative-state' + } + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + self._administrative_state = administrative_state + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonAdminStatePac': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.AdminStatePac of this TapiCommonAdminStatePac. # noqa: E501 + :rtype: TapiCommonAdminStatePac + """ + return util.deserialize_model(dikt, cls) + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiCommonAdminStatePac. + + + :return: The operational_state of this TapiCommonAdminStatePac. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiCommonAdminStatePac. + + + :param operational_state: The operational_state of this TapiCommonAdminStatePac. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiCommonAdminStatePac. + + + :return: The lifecycle_state of this TapiCommonAdminStatePac. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiCommonAdminStatePac. + + + :param lifecycle_state: The lifecycle_state of this TapiCommonAdminStatePac. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state + + @property + def administrative_state(self) -> TapiCommonAdministrativeState: + """Gets the administrative_state of this TapiCommonAdminStatePac. + + + :return: The administrative_state of this TapiCommonAdminStatePac. + :rtype: TapiCommonAdministrativeState + """ + return self._administrative_state + + @administrative_state.setter + def administrative_state(self, administrative_state: TapiCommonAdministrativeState): + """Sets the administrative_state of this TapiCommonAdminStatePac. + + + :param administrative_state: The administrative_state of this TapiCommonAdminStatePac. + :type administrative_state: TapiCommonAdministrativeState + """ + + self._administrative_state = administrative_state diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_administrative_state.py b/hackfest/tapi/server/tapi_server/models/tapi_common_administrative_state.py new file mode 100644 index 0000000000000000000000000000000000000000..f49d7d8e1d886866b0d336f58f2ea96d534d68ed --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_administrative_state.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonAdministrativeState(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + LOCKED = "LOCKED" + UNLOCKED = "UNLOCKED" + def __init__(self): # noqa: E501 + """TapiCommonAdministrativeState - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonAdministrativeState': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.AdministrativeState of this TapiCommonAdministrativeState. # noqa: E501 + :rtype: TapiCommonAdministrativeState + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_bandwidth_profile.py b/hackfest/tapi/server/tapi_server/models/tapi_common_bandwidth_profile.py new file mode 100644 index 0000000000000000000000000000000000000000..7be05a67dc09ec117179de6a66cc3cbec315c20b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_bandwidth_profile.py @@ -0,0 +1,224 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_bandwidth_profile_type import TapiCommonBandwidthProfileType # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity_value import TapiCommonCapacityValue # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonBandwidthProfile(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, committed_information_rate: TapiCommonCapacityValue=None, coupling_flag: bool=False, bw_profile_type: TapiCommonBandwidthProfileType=None, peak_information_rate: TapiCommonCapacityValue=None, committed_burst_size: TapiCommonCapacityValue=None, peak_burst_size: TapiCommonCapacityValue=None, color_aware: bool=False): # noqa: E501 + """TapiCommonBandwidthProfile - a model defined in Swagger + + :param committed_information_rate: The committed_information_rate of this TapiCommonBandwidthProfile. # noqa: E501 + :type committed_information_rate: TapiCommonCapacityValue + :param coupling_flag: The coupling_flag of this TapiCommonBandwidthProfile. # noqa: E501 + :type coupling_flag: bool + :param bw_profile_type: The bw_profile_type of this TapiCommonBandwidthProfile. # noqa: E501 + :type bw_profile_type: TapiCommonBandwidthProfileType + :param peak_information_rate: The peak_information_rate of this TapiCommonBandwidthProfile. # noqa: E501 + :type peak_information_rate: TapiCommonCapacityValue + :param committed_burst_size: The committed_burst_size of this TapiCommonBandwidthProfile. # noqa: E501 + :type committed_burst_size: TapiCommonCapacityValue + :param peak_burst_size: The peak_burst_size of this TapiCommonBandwidthProfile. # noqa: E501 + :type peak_burst_size: TapiCommonCapacityValue + :param color_aware: The color_aware of this TapiCommonBandwidthProfile. # noqa: E501 + :type color_aware: bool + """ + self.swagger_types = { + 'committed_information_rate': TapiCommonCapacityValue, + 'coupling_flag': bool, + 'bw_profile_type': TapiCommonBandwidthProfileType, + 'peak_information_rate': TapiCommonCapacityValue, + 'committed_burst_size': TapiCommonCapacityValue, + 'peak_burst_size': TapiCommonCapacityValue, + 'color_aware': bool + } + + self.attribute_map = { + 'committed_information_rate': 'committed-information-rate', + 'coupling_flag': 'coupling-flag', + 'bw_profile_type': 'bw-profile-type', + 'peak_information_rate': 'peak-information-rate', + 'committed_burst_size': 'committed-burst-size', + 'peak_burst_size': 'peak-burst-size', + 'color_aware': 'color-aware' + } + self._committed_information_rate = committed_information_rate + self._coupling_flag = coupling_flag + self._bw_profile_type = bw_profile_type + self._peak_information_rate = peak_information_rate + self._committed_burst_size = committed_burst_size + self._peak_burst_size = peak_burst_size + self._color_aware = color_aware + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonBandwidthProfile': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.BandwidthProfile of this TapiCommonBandwidthProfile. # noqa: E501 + :rtype: TapiCommonBandwidthProfile + """ + return util.deserialize_model(dikt, cls) + + @property + def committed_information_rate(self) -> TapiCommonCapacityValue: + """Gets the committed_information_rate of this TapiCommonBandwidthProfile. + + + :return: The committed_information_rate of this TapiCommonBandwidthProfile. + :rtype: TapiCommonCapacityValue + """ + return self._committed_information_rate + + @committed_information_rate.setter + def committed_information_rate(self, committed_information_rate: TapiCommonCapacityValue): + """Sets the committed_information_rate of this TapiCommonBandwidthProfile. + + + :param committed_information_rate: The committed_information_rate of this TapiCommonBandwidthProfile. + :type committed_information_rate: TapiCommonCapacityValue + """ + + self._committed_information_rate = committed_information_rate + + @property + def coupling_flag(self) -> bool: + """Gets the coupling_flag of this TapiCommonBandwidthProfile. + + none # noqa: E501 + + :return: The coupling_flag of this TapiCommonBandwidthProfile. + :rtype: bool + """ + return self._coupling_flag + + @coupling_flag.setter + def coupling_flag(self, coupling_flag: bool): + """Sets the coupling_flag of this TapiCommonBandwidthProfile. + + none # noqa: E501 + + :param coupling_flag: The coupling_flag of this TapiCommonBandwidthProfile. + :type coupling_flag: bool + """ + + self._coupling_flag = coupling_flag + + @property + def bw_profile_type(self) -> TapiCommonBandwidthProfileType: + """Gets the bw_profile_type of this TapiCommonBandwidthProfile. + + + :return: The bw_profile_type of this TapiCommonBandwidthProfile. + :rtype: TapiCommonBandwidthProfileType + """ + return self._bw_profile_type + + @bw_profile_type.setter + def bw_profile_type(self, bw_profile_type: TapiCommonBandwidthProfileType): + """Sets the bw_profile_type of this TapiCommonBandwidthProfile. + + + :param bw_profile_type: The bw_profile_type of this TapiCommonBandwidthProfile. + :type bw_profile_type: TapiCommonBandwidthProfileType + """ + + self._bw_profile_type = bw_profile_type + + @property + def peak_information_rate(self) -> TapiCommonCapacityValue: + """Gets the peak_information_rate of this TapiCommonBandwidthProfile. + + + :return: The peak_information_rate of this TapiCommonBandwidthProfile. + :rtype: TapiCommonCapacityValue + """ + return self._peak_information_rate + + @peak_information_rate.setter + def peak_information_rate(self, peak_information_rate: TapiCommonCapacityValue): + """Sets the peak_information_rate of this TapiCommonBandwidthProfile. + + + :param peak_information_rate: The peak_information_rate of this TapiCommonBandwidthProfile. + :type peak_information_rate: TapiCommonCapacityValue + """ + + self._peak_information_rate = peak_information_rate + + @property + def committed_burst_size(self) -> TapiCommonCapacityValue: + """Gets the committed_burst_size of this TapiCommonBandwidthProfile. + + + :return: The committed_burst_size of this TapiCommonBandwidthProfile. + :rtype: TapiCommonCapacityValue + """ + return self._committed_burst_size + + @committed_burst_size.setter + def committed_burst_size(self, committed_burst_size: TapiCommonCapacityValue): + """Sets the committed_burst_size of this TapiCommonBandwidthProfile. + + + :param committed_burst_size: The committed_burst_size of this TapiCommonBandwidthProfile. + :type committed_burst_size: TapiCommonCapacityValue + """ + + self._committed_burst_size = committed_burst_size + + @property + def peak_burst_size(self) -> TapiCommonCapacityValue: + """Gets the peak_burst_size of this TapiCommonBandwidthProfile. + + + :return: The peak_burst_size of this TapiCommonBandwidthProfile. + :rtype: TapiCommonCapacityValue + """ + return self._peak_burst_size + + @peak_burst_size.setter + def peak_burst_size(self, peak_burst_size: TapiCommonCapacityValue): + """Sets the peak_burst_size of this TapiCommonBandwidthProfile. + + + :param peak_burst_size: The peak_burst_size of this TapiCommonBandwidthProfile. + :type peak_burst_size: TapiCommonCapacityValue + """ + + self._peak_burst_size = peak_burst_size + + @property + def color_aware(self) -> bool: + """Gets the color_aware of this TapiCommonBandwidthProfile. + + none # noqa: E501 + + :return: The color_aware of this TapiCommonBandwidthProfile. + :rtype: bool + """ + return self._color_aware + + @color_aware.setter + def color_aware(self, color_aware: bool): + """Sets the color_aware of this TapiCommonBandwidthProfile. + + none # noqa: E501 + + :param color_aware: The color_aware of this TapiCommonBandwidthProfile. + :type color_aware: bool + """ + + self._color_aware = color_aware diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_bandwidth_profile_type.py b/hackfest/tapi/server/tapi_server/models/tapi_common_bandwidth_profile_type.py new file mode 100644 index 0000000000000000000000000000000000000000..fb1de346e30a4217e99f442b8c56c35b752e406d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_bandwidth_profile_type.py @@ -0,0 +1,44 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonBandwidthProfileType(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + MEF_10_X = "MEF_10.x" + RFC_2697 = "RFC_2697" + RFC_2698 = "RFC_2698" + RFC_4115 = "RFC_4115" + def __init__(self): # noqa: E501 + """TapiCommonBandwidthProfileType - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonBandwidthProfileType': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.BandwidthProfileType of this TapiCommonBandwidthProfileType. # noqa: E501 + :rtype: TapiCommonBandwidthProfileType + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_bandwidth_profile_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_common_bandwidth_profile_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..7404280b0aaaa97f8276a41d4015c54e54f3dde8 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_bandwidth_profile_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_bandwidth_profile import TapiCommonBandwidthProfile # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonBandwidthProfileWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, bandwidth_profile: TapiCommonBandwidthProfile=None): # noqa: E501 + """TapiCommonBandwidthProfileWrapper - a model defined in Swagger + + :param bandwidth_profile: The bandwidth_profile of this TapiCommonBandwidthProfileWrapper. # noqa: E501 + :type bandwidth_profile: TapiCommonBandwidthProfile + """ + self.swagger_types = { + 'bandwidth_profile': TapiCommonBandwidthProfile + } + + self.attribute_map = { + 'bandwidth_profile': 'bandwidth-profile' + } + self._bandwidth_profile = bandwidth_profile + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonBandwidthProfileWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.BandwidthProfileWrapper of this TapiCommonBandwidthProfileWrapper. # noqa: E501 + :rtype: TapiCommonBandwidthProfileWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def bandwidth_profile(self) -> TapiCommonBandwidthProfile: + """Gets the bandwidth_profile of this TapiCommonBandwidthProfileWrapper. + + + :return: The bandwidth_profile of this TapiCommonBandwidthProfileWrapper. + :rtype: TapiCommonBandwidthProfile + """ + return self._bandwidth_profile + + @bandwidth_profile.setter + def bandwidth_profile(self, bandwidth_profile: TapiCommonBandwidthProfile): + """Sets the bandwidth_profile of this TapiCommonBandwidthProfileWrapper. + + + :param bandwidth_profile: The bandwidth_profile of this TapiCommonBandwidthProfileWrapper. + :type bandwidth_profile: TapiCommonBandwidthProfile + """ + + self._bandwidth_profile = bandwidth_profile diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_capacity.py b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity.py new file mode 100644 index 0000000000000000000000000000000000000000..9738d256fda1a0c4b69fbae71dd6e541f9d27df7 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_bandwidth_profile import TapiCommonBandwidthProfile # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity_value import TapiCommonCapacityValue # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonCapacity(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, bandwidth_profile: TapiCommonBandwidthProfile=None, total_size: TapiCommonCapacityValue=None): # noqa: E501 + """TapiCommonCapacity - a model defined in Swagger + + :param bandwidth_profile: The bandwidth_profile of this TapiCommonCapacity. # noqa: E501 + :type bandwidth_profile: TapiCommonBandwidthProfile + :param total_size: The total_size of this TapiCommonCapacity. # noqa: E501 + :type total_size: TapiCommonCapacityValue + """ + self.swagger_types = { + 'bandwidth_profile': TapiCommonBandwidthProfile, + 'total_size': TapiCommonCapacityValue + } + + self.attribute_map = { + 'bandwidth_profile': 'bandwidth-profile', + 'total_size': 'total-size' + } + self._bandwidth_profile = bandwidth_profile + self._total_size = total_size + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonCapacity': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.Capacity of this TapiCommonCapacity. # noqa: E501 + :rtype: TapiCommonCapacity + """ + return util.deserialize_model(dikt, cls) + + @property + def bandwidth_profile(self) -> TapiCommonBandwidthProfile: + """Gets the bandwidth_profile of this TapiCommonCapacity. + + + :return: The bandwidth_profile of this TapiCommonCapacity. + :rtype: TapiCommonBandwidthProfile + """ + return self._bandwidth_profile + + @bandwidth_profile.setter + def bandwidth_profile(self, bandwidth_profile: TapiCommonBandwidthProfile): + """Sets the bandwidth_profile of this TapiCommonCapacity. + + + :param bandwidth_profile: The bandwidth_profile of this TapiCommonCapacity. + :type bandwidth_profile: TapiCommonBandwidthProfile + """ + + self._bandwidth_profile = bandwidth_profile + + @property + def total_size(self) -> TapiCommonCapacityValue: + """Gets the total_size of this TapiCommonCapacity. + + + :return: The total_size of this TapiCommonCapacity. + :rtype: TapiCommonCapacityValue + """ + return self._total_size + + @total_size.setter + def total_size(self, total_size: TapiCommonCapacityValue): + """Sets the total_size of this TapiCommonCapacity. + + + :param total_size: The total_size of this TapiCommonCapacity. + :type total_size: TapiCommonCapacityValue + """ + + self._total_size = total_size diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_pac.py b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_pac.py new file mode 100644 index 0000000000000000000000000000000000000000..148735e381b2904cb7b2c462e879359db9b98695 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_pac.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonCapacityPac(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, available_capacity: TapiCommonCapacity=None, total_potential_capacity: TapiCommonCapacity=None): # noqa: E501 + """TapiCommonCapacityPac - a model defined in Swagger + + :param available_capacity: The available_capacity of this TapiCommonCapacityPac. # noqa: E501 + :type available_capacity: TapiCommonCapacity + :param total_potential_capacity: The total_potential_capacity of this TapiCommonCapacityPac. # noqa: E501 + :type total_potential_capacity: TapiCommonCapacity + """ + self.swagger_types = { + 'available_capacity': TapiCommonCapacity, + 'total_potential_capacity': TapiCommonCapacity + } + + self.attribute_map = { + 'available_capacity': 'available-capacity', + 'total_potential_capacity': 'total-potential-capacity' + } + self._available_capacity = available_capacity + self._total_potential_capacity = total_potential_capacity + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonCapacityPac': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.CapacityPac of this TapiCommonCapacityPac. # noqa: E501 + :rtype: TapiCommonCapacityPac + """ + return util.deserialize_model(dikt, cls) + + @property + def available_capacity(self) -> TapiCommonCapacity: + """Gets the available_capacity of this TapiCommonCapacityPac. + + + :return: The available_capacity of this TapiCommonCapacityPac. + :rtype: TapiCommonCapacity + """ + return self._available_capacity + + @available_capacity.setter + def available_capacity(self, available_capacity: TapiCommonCapacity): + """Sets the available_capacity of this TapiCommonCapacityPac. + + + :param available_capacity: The available_capacity of this TapiCommonCapacityPac. + :type available_capacity: TapiCommonCapacity + """ + + self._available_capacity = available_capacity + + @property + def total_potential_capacity(self) -> TapiCommonCapacity: + """Gets the total_potential_capacity of this TapiCommonCapacityPac. + + + :return: The total_potential_capacity of this TapiCommonCapacityPac. + :rtype: TapiCommonCapacity + """ + return self._total_potential_capacity + + @total_potential_capacity.setter + def total_potential_capacity(self, total_potential_capacity: TapiCommonCapacity): + """Sets the total_potential_capacity of this TapiCommonCapacityPac. + + + :param total_potential_capacity: The total_potential_capacity of this TapiCommonCapacityPac. + :type total_potential_capacity: TapiCommonCapacity + """ + + self._total_potential_capacity = total_potential_capacity diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_unit.py b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_unit.py new file mode 100644 index 0000000000000000000000000000000000000000..9a2a33f1b961839473928153c108b384465eaf0a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_unit.py @@ -0,0 +1,50 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonCapacityUnit(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + TB = "TB" + TBPS = "TBPS" + GB = "GB" + GBPS = "GBPS" + MB = "MB" + MBPS = "MBPS" + KB = "KB" + KBPS = "KBPS" + GHZ = "GHz" + MHZ = "MHz" + def __init__(self): # noqa: E501 + """TapiCommonCapacityUnit - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonCapacityUnit': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.CapacityUnit of this TapiCommonCapacityUnit. # noqa: E501 + :rtype: TapiCommonCapacityUnit + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_value.py b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_value.py new file mode 100644 index 0000000000000000000000000000000000000000..adc65eff8d91b4af6947842612de6c418ee07098 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_value.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_capacity_unit import TapiCommonCapacityUnit # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonCapacityValue(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, value: int=None, unit: TapiCommonCapacityUnit=None): # noqa: E501 + """TapiCommonCapacityValue - a model defined in Swagger + + :param value: The value of this TapiCommonCapacityValue. # noqa: E501 + :type value: int + :param unit: The unit of this TapiCommonCapacityValue. # noqa: E501 + :type unit: TapiCommonCapacityUnit + """ + self.swagger_types = { + 'value': int, + 'unit': TapiCommonCapacityUnit + } + + self.attribute_map = { + 'value': 'value', + 'unit': 'unit' + } + self._value = value + self._unit = unit + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonCapacityValue': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.CapacityValue of this TapiCommonCapacityValue. # noqa: E501 + :rtype: TapiCommonCapacityValue + """ + return util.deserialize_model(dikt, cls) + + @property + def value(self) -> int: + """Gets the value of this TapiCommonCapacityValue. + + none # noqa: E501 + + :return: The value of this TapiCommonCapacityValue. + :rtype: int + """ + return self._value + + @value.setter + def value(self, value: int): + """Sets the value of this TapiCommonCapacityValue. + + none # noqa: E501 + + :param value: The value of this TapiCommonCapacityValue. + :type value: int + """ + + self._value = value + + @property + def unit(self) -> TapiCommonCapacityUnit: + """Gets the unit of this TapiCommonCapacityValue. + + + :return: The unit of this TapiCommonCapacityValue. + :rtype: TapiCommonCapacityUnit + """ + return self._unit + + @unit.setter + def unit(self, unit: TapiCommonCapacityUnit): + """Sets the unit of this TapiCommonCapacityValue. + + + :param unit: The unit of this TapiCommonCapacityValue. + :type unit: TapiCommonCapacityUnit + """ + + self._unit = unit diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_value_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_value_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..fc7007f031a6c4714a406f5ce058e91ea529bdd1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_value_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_capacity_value import TapiCommonCapacityValue # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonCapacityValueWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, committed_burst_size: TapiCommonCapacityValue=None): # noqa: E501 + """TapiCommonCapacityValueWrapper - a model defined in Swagger + + :param committed_burst_size: The committed_burst_size of this TapiCommonCapacityValueWrapper. # noqa: E501 + :type committed_burst_size: TapiCommonCapacityValue + """ + self.swagger_types = { + 'committed_burst_size': TapiCommonCapacityValue + } + + self.attribute_map = { + 'committed_burst_size': 'committed-burst-size' + } + self._committed_burst_size = committed_burst_size + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonCapacityValueWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.CapacityValueWrapper of this TapiCommonCapacityValueWrapper. # noqa: E501 + :rtype: TapiCommonCapacityValueWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def committed_burst_size(self) -> TapiCommonCapacityValue: + """Gets the committed_burst_size of this TapiCommonCapacityValueWrapper. + + + :return: The committed_burst_size of this TapiCommonCapacityValueWrapper. + :rtype: TapiCommonCapacityValue + """ + return self._committed_burst_size + + @committed_burst_size.setter + def committed_burst_size(self, committed_burst_size: TapiCommonCapacityValue): + """Sets the committed_burst_size of this TapiCommonCapacityValueWrapper. + + + :param committed_burst_size: The committed_burst_size of this TapiCommonCapacityValueWrapper. + :type committed_burst_size: TapiCommonCapacityValue + """ + + self._committed_burst_size = committed_burst_size diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..dcb62680e3845e494d7e8ca5b0bdd84cdd478554 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_capacity_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonCapacityWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, available_capacity: TapiCommonCapacity=None): # noqa: E501 + """TapiCommonCapacityWrapper - a model defined in Swagger + + :param available_capacity: The available_capacity of this TapiCommonCapacityWrapper. # noqa: E501 + :type available_capacity: TapiCommonCapacity + """ + self.swagger_types = { + 'available_capacity': TapiCommonCapacity + } + + self.attribute_map = { + 'available_capacity': 'available-capacity' + } + self._available_capacity = available_capacity + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonCapacityWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.CapacityWrapper of this TapiCommonCapacityWrapper. # noqa: E501 + :rtype: TapiCommonCapacityWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def available_capacity(self) -> TapiCommonCapacity: + """Gets the available_capacity of this TapiCommonCapacityWrapper. + + + :return: The available_capacity of this TapiCommonCapacityWrapper. + :rtype: TapiCommonCapacity + """ + return self._available_capacity + + @available_capacity.setter + def available_capacity(self, available_capacity: TapiCommonCapacity): + """Sets the available_capacity of this TapiCommonCapacityWrapper. + + + :param available_capacity: The available_capacity of this TapiCommonCapacityWrapper. + :type available_capacity: TapiCommonCapacity + """ + + self._available_capacity = available_capacity diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_context.py b/hackfest/tapi/server/tapi_server/models/tapi_common_context.py new file mode 100644 index 0000000000000000000000000000000000000000..8d3c849c56762693d7d0691b2a877e549cea695c --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_context.py @@ -0,0 +1,178 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_service_interface_point import TapiCommonServiceInterfacePoint # noqa: F401,E501 +from tapi_server.models.tapi_common_tapi_context import TapiCommonTapiContext # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connectivity_context import TapiConnectivityConnectivityContext # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_context_augmentation3 import TapiConnectivityContextAugmentation3 # noqa: F401,E501 +from tapi_server.models.tapi_notification_context_augmentation1 import TapiNotificationContextAugmentation1 # noqa: F401,E501 +from tapi_server.models.tapi_notification_notification_context import TapiNotificationNotificationContext # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_context_augmentation2 import TapiPathComputationContextAugmentation2 # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_path_computation_context import TapiPathComputationPathComputationContext # noqa: F401,E501 +from tapi_server.models.tapi_topology_context_augmentation4 import TapiTopologyContextAugmentation4 # noqa: F401,E501 +from tapi_server.models.tapi_topology_topology_context import TapiTopologyTopologyContext # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonContext(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connectivity_context: TapiConnectivityConnectivityContext=None, notification_context: TapiNotificationNotificationContext=None, path_computation_context: TapiPathComputationPathComputationContext=None, topology_context: TapiTopologyTopologyContext=None, service_interface_point: List[TapiCommonServiceInterfacePoint]=None): # noqa: E501 + """TapiCommonContext - a model defined in Swagger + + :param connectivity_context: The connectivity_context of this TapiCommonContext. # noqa: E501 + :type connectivity_context: TapiConnectivityConnectivityContext + :param notification_context: The notification_context of this TapiCommonContext. # noqa: E501 + :type notification_context: TapiNotificationNotificationContext + :param path_computation_context: The path_computation_context of this TapiCommonContext. # noqa: E501 + :type path_computation_context: TapiPathComputationPathComputationContext + :param topology_context: The topology_context of this TapiCommonContext. # noqa: E501 + :type topology_context: TapiTopologyTopologyContext + :param service_interface_point: The service_interface_point of this TapiCommonContext. # noqa: E501 + :type service_interface_point: List[TapiCommonServiceInterfacePoint] + """ + self.swagger_types = { + 'connectivity_context': TapiConnectivityConnectivityContext, + 'notification_context': TapiNotificationNotificationContext, + 'path_computation_context': TapiPathComputationPathComputationContext, + 'topology_context': TapiTopologyTopologyContext, + 'service_interface_point': List[TapiCommonServiceInterfacePoint] + } + + self.attribute_map = { + 'connectivity_context': 'connectivity-context', + 'notification_context': 'notification-context', + 'path_computation_context': 'path-computation-context', + 'topology_context': 'topology-context', + 'service_interface_point': 'service-interface-point' + } + self._connectivity_context = connectivity_context + self._notification_context = notification_context + self._path_computation_context = path_computation_context + self._topology_context = topology_context + self._service_interface_point = service_interface_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonContext': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.Context of this TapiCommonContext. # noqa: E501 + :rtype: TapiCommonContext + """ + return util.deserialize_model(dikt, cls) + + @property + def connectivity_context(self) -> TapiConnectivityConnectivityContext: + """Gets the connectivity_context of this TapiCommonContext. + + + :return: The connectivity_context of this TapiCommonContext. + :rtype: TapiConnectivityConnectivityContext + """ + return self._connectivity_context + + @connectivity_context.setter + def connectivity_context(self, connectivity_context: TapiConnectivityConnectivityContext): + """Sets the connectivity_context of this TapiCommonContext. + + + :param connectivity_context: The connectivity_context of this TapiCommonContext. + :type connectivity_context: TapiConnectivityConnectivityContext + """ + + self._connectivity_context = connectivity_context + + @property + def notification_context(self) -> TapiNotificationNotificationContext: + """Gets the notification_context of this TapiCommonContext. + + + :return: The notification_context of this TapiCommonContext. + :rtype: TapiNotificationNotificationContext + """ + return self._notification_context + + @notification_context.setter + def notification_context(self, notification_context: TapiNotificationNotificationContext): + """Sets the notification_context of this TapiCommonContext. + + + :param notification_context: The notification_context of this TapiCommonContext. + :type notification_context: TapiNotificationNotificationContext + """ + + self._notification_context = notification_context + + @property + def path_computation_context(self) -> TapiPathComputationPathComputationContext: + """Gets the path_computation_context of this TapiCommonContext. + + + :return: The path_computation_context of this TapiCommonContext. + :rtype: TapiPathComputationPathComputationContext + """ + return self._path_computation_context + + @path_computation_context.setter + def path_computation_context(self, path_computation_context: TapiPathComputationPathComputationContext): + """Sets the path_computation_context of this TapiCommonContext. + + + :param path_computation_context: The path_computation_context of this TapiCommonContext. + :type path_computation_context: TapiPathComputationPathComputationContext + """ + + self._path_computation_context = path_computation_context + + @property + def topology_context(self) -> TapiTopologyTopologyContext: + """Gets the topology_context of this TapiCommonContext. + + + :return: The topology_context of this TapiCommonContext. + :rtype: TapiTopologyTopologyContext + """ + return self._topology_context + + @topology_context.setter + def topology_context(self, topology_context: TapiTopologyTopologyContext): + """Sets the topology_context of this TapiCommonContext. + + + :param topology_context: The topology_context of this TapiCommonContext. + :type topology_context: TapiTopologyTopologyContext + """ + + self._topology_context = topology_context + + @property + def service_interface_point(self) -> List[TapiCommonServiceInterfacePoint]: + """Gets the service_interface_point of this TapiCommonContext. + + none # noqa: E501 + + :return: The service_interface_point of this TapiCommonContext. + :rtype: List[TapiCommonServiceInterfacePoint] + """ + return self._service_interface_point + + @service_interface_point.setter + def service_interface_point(self, service_interface_point: List[TapiCommonServiceInterfacePoint]): + """Sets the service_interface_point of this TapiCommonContext. + + none # noqa: E501 + + :param service_interface_point: The service_interface_point of this TapiCommonContext. + :type service_interface_point: List[TapiCommonServiceInterfacePoint] + """ + + self._service_interface_point = service_interface_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_context_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_common_context_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..d8b98d3e92693c5febe3055cd721441ab2fc6502 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_context_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_context import TapiCommonContext # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonContextWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, tapi_commoncontext: TapiCommonContext=None): # noqa: E501 + """TapiCommonContextWrapper - a model defined in Swagger + + :param tapi_commoncontext: The tapi_commoncontext of this TapiCommonContextWrapper. # noqa: E501 + :type tapi_commoncontext: TapiCommonContext + """ + self.swagger_types = { + 'tapi_commoncontext': TapiCommonContext + } + + self.attribute_map = { + 'tapi_commoncontext': 'tapi-common:context' + } + self._tapi_commoncontext = tapi_commoncontext + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonContextWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.ContextWrapper of this TapiCommonContextWrapper. # noqa: E501 + :rtype: TapiCommonContextWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def tapi_commoncontext(self) -> TapiCommonContext: + """Gets the tapi_commoncontext of this TapiCommonContextWrapper. + + + :return: The tapi_commoncontext of this TapiCommonContextWrapper. + :rtype: TapiCommonContext + """ + return self._tapi_commoncontext + + @tapi_commoncontext.setter + def tapi_commoncontext(self, tapi_commoncontext: TapiCommonContext): + """Sets the tapi_commoncontext of this TapiCommonContextWrapper. + + + :param tapi_commoncontext: The tapi_commoncontext of this TapiCommonContextWrapper. + :type tapi_commoncontext: TapiCommonContext + """ + + self._tapi_commoncontext = tapi_commoncontext diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_directive_value.py b/hackfest/tapi/server/tapi_server/models/tapi_common_directive_value.py new file mode 100644 index 0000000000000000000000000000000000000000..66d4360cb64df3b8c3deb28b6ddb9a15a47df20c --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_directive_value.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonDirectiveValue(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + MINIMIZE = "MINIMIZE" + MAXIMIZE = "MAXIMIZE" + ALLOW = "ALLOW" + DISALLOW = "DISALLOW" + DONT_CARE = "DONT_CARE" + def __init__(self): # noqa: E501 + """TapiCommonDirectiveValue - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonDirectiveValue': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.DirectiveValue of this TapiCommonDirectiveValue. # noqa: E501 + :rtype: TapiCommonDirectiveValue + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_forwarding_direction.py b/hackfest/tapi/server/tapi_server/models/tapi_common_forwarding_direction.py new file mode 100644 index 0000000000000000000000000000000000000000..732f5c8cb1f33aa259f0f27807fd67655067a9fa --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_forwarding_direction.py @@ -0,0 +1,43 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonForwardingDirection(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + BIDIRECTIONAL = "BIDIRECTIONAL" + UNIDIRECTIONAL = "UNIDIRECTIONAL" + UNDEFINED_OR_UNKNOWN = "UNDEFINED_OR_UNKNOWN" + def __init__(self): # noqa: E501 + """TapiCommonForwardingDirection - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonForwardingDirection': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.ForwardingDirection of this TapiCommonForwardingDirection. # noqa: E501 + :rtype: TapiCommonForwardingDirection + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_get_service_interface_point_details.py b/hackfest/tapi/server/tapi_server/models/tapi_common_get_service_interface_point_details.py new file mode 100644 index 0000000000000000000000000000000000000000..7ea77a174df105083f8f49a9651616177b140802 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_get_service_interface_point_details.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_getserviceinterfacepointdetails_output import TapiCommonGetserviceinterfacepointdetailsOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonGetServiceInterfacePointDetails(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiCommonGetserviceinterfacepointdetailsOutput=None): # noqa: E501 + """TapiCommonGetServiceInterfacePointDetails - a model defined in Swagger + + :param output: The output of this TapiCommonGetServiceInterfacePointDetails. # noqa: E501 + :type output: TapiCommonGetserviceinterfacepointdetailsOutput + """ + self.swagger_types = { + 'output': TapiCommonGetserviceinterfacepointdetailsOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonGetServiceInterfacePointDetails': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.GetServiceInterfacePointDetails of this TapiCommonGetServiceInterfacePointDetails. # noqa: E501 + :rtype: TapiCommonGetServiceInterfacePointDetails + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiCommonGetserviceinterfacepointdetailsOutput: + """Gets the output of this TapiCommonGetServiceInterfacePointDetails. + + + :return: The output of this TapiCommonGetServiceInterfacePointDetails. + :rtype: TapiCommonGetserviceinterfacepointdetailsOutput + """ + return self._output + + @output.setter + def output(self, output: TapiCommonGetserviceinterfacepointdetailsOutput): + """Sets the output of this TapiCommonGetServiceInterfacePointDetails. + + + :param output: The output of this TapiCommonGetServiceInterfacePointDetails. + :type output: TapiCommonGetserviceinterfacepointdetailsOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_get_service_interface_point_list.py b/hackfest/tapi/server/tapi_server/models/tapi_common_get_service_interface_point_list.py new file mode 100644 index 0000000000000000000000000000000000000000..932a146708384e6bc217dbafdb98e935c23f2985 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_get_service_interface_point_list.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_getserviceinterfacepointlist_output import TapiCommonGetserviceinterfacepointlistOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonGetServiceInterfacePointList(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiCommonGetserviceinterfacepointlistOutput=None): # noqa: E501 + """TapiCommonGetServiceInterfacePointList - a model defined in Swagger + + :param output: The output of this TapiCommonGetServiceInterfacePointList. # noqa: E501 + :type output: TapiCommonGetserviceinterfacepointlistOutput + """ + self.swagger_types = { + 'output': TapiCommonGetserviceinterfacepointlistOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonGetServiceInterfacePointList': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.GetServiceInterfacePointList of this TapiCommonGetServiceInterfacePointList. # noqa: E501 + :rtype: TapiCommonGetServiceInterfacePointList + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiCommonGetserviceinterfacepointlistOutput: + """Gets the output of this TapiCommonGetServiceInterfacePointList. + + + :return: The output of this TapiCommonGetServiceInterfacePointList. + :rtype: TapiCommonGetserviceinterfacepointlistOutput + """ + return self._output + + @output.setter + def output(self, output: TapiCommonGetserviceinterfacepointlistOutput): + """Sets the output of this TapiCommonGetServiceInterfacePointList. + + + :param output: The output of this TapiCommonGetServiceInterfacePointList. + :type output: TapiCommonGetserviceinterfacepointlistOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_getserviceinterfacepointdetails_input.py b/hackfest/tapi/server/tapi_server/models/tapi_common_getserviceinterfacepointdetails_input.py new file mode 100644 index 0000000000000000000000000000000000000000..771db02acfbe711ef8bc7a325009c076e9e16e6f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_getserviceinterfacepointdetails_input.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonGetserviceinterfacepointdetailsInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, sip_id_or_name: str=None): # noqa: E501 + """TapiCommonGetserviceinterfacepointdetailsInput - a model defined in Swagger + + :param sip_id_or_name: The sip_id_or_name of this TapiCommonGetserviceinterfacepointdetailsInput. # noqa: E501 + :type sip_id_or_name: str + """ + self.swagger_types = { + 'sip_id_or_name': str + } + + self.attribute_map = { + 'sip_id_or_name': 'sip-id-or-name' + } + self._sip_id_or_name = sip_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonGetserviceinterfacepointdetailsInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.getserviceinterfacepointdetails.Input of this TapiCommonGetserviceinterfacepointdetailsInput. # noqa: E501 + :rtype: TapiCommonGetserviceinterfacepointdetailsInput + """ + return util.deserialize_model(dikt, cls) + + @property + def sip_id_or_name(self) -> str: + """Gets the sip_id_or_name of this TapiCommonGetserviceinterfacepointdetailsInput. + + none # noqa: E501 + + :return: The sip_id_or_name of this TapiCommonGetserviceinterfacepointdetailsInput. + :rtype: str + """ + return self._sip_id_or_name + + @sip_id_or_name.setter + def sip_id_or_name(self, sip_id_or_name: str): + """Sets the sip_id_or_name of this TapiCommonGetserviceinterfacepointdetailsInput. + + none # noqa: E501 + + :param sip_id_or_name: The sip_id_or_name of this TapiCommonGetserviceinterfacepointdetailsInput. + :type sip_id_or_name: str + """ + + self._sip_id_or_name = sip_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_getserviceinterfacepointdetails_output.py b/hackfest/tapi/server/tapi_server/models/tapi_common_getserviceinterfacepointdetails_output.py new file mode 100644 index 0000000000000000000000000000000000000000..6e3ac4e946aec8b75685d27a7710228cbdd57801 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_getserviceinterfacepointdetails_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_service_interface_point import TapiCommonServiceInterfacePoint # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonGetserviceinterfacepointdetailsOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, sip: TapiCommonServiceInterfacePoint=None): # noqa: E501 + """TapiCommonGetserviceinterfacepointdetailsOutput - a model defined in Swagger + + :param sip: The sip of this TapiCommonGetserviceinterfacepointdetailsOutput. # noqa: E501 + :type sip: TapiCommonServiceInterfacePoint + """ + self.swagger_types = { + 'sip': TapiCommonServiceInterfacePoint + } + + self.attribute_map = { + 'sip': 'sip' + } + self._sip = sip + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonGetserviceinterfacepointdetailsOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.getserviceinterfacepointdetails.Output of this TapiCommonGetserviceinterfacepointdetailsOutput. # noqa: E501 + :rtype: TapiCommonGetserviceinterfacepointdetailsOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def sip(self) -> TapiCommonServiceInterfacePoint: + """Gets the sip of this TapiCommonGetserviceinterfacepointdetailsOutput. + + + :return: The sip of this TapiCommonGetserviceinterfacepointdetailsOutput. + :rtype: TapiCommonServiceInterfacePoint + """ + return self._sip + + @sip.setter + def sip(self, sip: TapiCommonServiceInterfacePoint): + """Sets the sip of this TapiCommonGetserviceinterfacepointdetailsOutput. + + + :param sip: The sip of this TapiCommonGetserviceinterfacepointdetailsOutput. + :type sip: TapiCommonServiceInterfacePoint + """ + + self._sip = sip diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_getserviceinterfacepointlist_output.py b/hackfest/tapi/server/tapi_server/models/tapi_common_getserviceinterfacepointlist_output.py new file mode 100644 index 0000000000000000000000000000000000000000..4ecf4ee651eb7c04108a98eb36240bbcfab591f0 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_getserviceinterfacepointlist_output.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_service_interface_point import TapiCommonServiceInterfacePoint # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonGetserviceinterfacepointlistOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, sip: List[TapiCommonServiceInterfacePoint]=None): # noqa: E501 + """TapiCommonGetserviceinterfacepointlistOutput - a model defined in Swagger + + :param sip: The sip of this TapiCommonGetserviceinterfacepointlistOutput. # noqa: E501 + :type sip: List[TapiCommonServiceInterfacePoint] + """ + self.swagger_types = { + 'sip': List[TapiCommonServiceInterfacePoint] + } + + self.attribute_map = { + 'sip': 'sip' + } + self._sip = sip + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonGetserviceinterfacepointlistOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.getserviceinterfacepointlist.Output of this TapiCommonGetserviceinterfacepointlistOutput. # noqa: E501 + :rtype: TapiCommonGetserviceinterfacepointlistOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def sip(self) -> List[TapiCommonServiceInterfacePoint]: + """Gets the sip of this TapiCommonGetserviceinterfacepointlistOutput. + + none # noqa: E501 + + :return: The sip of this TapiCommonGetserviceinterfacepointlistOutput. + :rtype: List[TapiCommonServiceInterfacePoint] + """ + return self._sip + + @sip.setter + def sip(self, sip: List[TapiCommonServiceInterfacePoint]): + """Sets the sip of this TapiCommonGetserviceinterfacepointlistOutput. + + none # noqa: E501 + + :param sip: The sip of this TapiCommonGetserviceinterfacepointlistOutput. + :type sip: List[TapiCommonServiceInterfacePoint] + """ + + self._sip = sip diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_global_class.py b/hackfest/tapi/server/tapi_server/models/tapi_common_global_class.py new file mode 100644 index 0000000000000000000000000000000000000000..001206c56f55eadcf3793f895f1c3ff47b32a0a0 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_global_class.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonGlobalClass(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None): # noqa: E501 + """TapiCommonGlobalClass - a model defined in Swagger + + :param name: The name of this TapiCommonGlobalClass. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiCommonGlobalClass. # noqa: E501 + :type uuid: str + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid' + } + self._name = name + self._uuid = uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonGlobalClass': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.GlobalClass of this TapiCommonGlobalClass. # noqa: E501 + :rtype: TapiCommonGlobalClass + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiCommonGlobalClass. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiCommonGlobalClass. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiCommonGlobalClass. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiCommonGlobalClass. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiCommonGlobalClass. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiCommonGlobalClass. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiCommonGlobalClass. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiCommonGlobalClass. + :type uuid: str + """ + + self._uuid = uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_layer_protocol_name.py b/hackfest/tapi/server/tapi_server/models/tapi_common_layer_protocol_name.py new file mode 100644 index 0000000000000000000000000000000000000000..81b6030c92f5d0552d8627e56a46c1c8eb0351c2 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_layer_protocol_name.py @@ -0,0 +1,44 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonLayerProtocolName(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + ODU = "ODU" + ETH = "ETH" + DSR = "DSR" + PHOTONIC_MEDIA = "PHOTONIC_MEDIA" + def __init__(self): # noqa: E501 + """TapiCommonLayerProtocolName - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonLayerProtocolName': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.LayerProtocolName of this TapiCommonLayerProtocolName. # noqa: E501 + :rtype: TapiCommonLayerProtocolName + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_lifecycle_state.py b/hackfest/tapi/server/tapi_server/models/tapi_common_lifecycle_state.py new file mode 100644 index 0000000000000000000000000000000000000000..10943fcb1ce0f07b472d7c7098259099e5651c4e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_lifecycle_state.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonLifecycleState(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + PLANNED = "PLANNED" + POTENTIAL_AVAILABLE = "POTENTIAL_AVAILABLE" + POTENTIAL_BUSY = "POTENTIAL_BUSY" + INSTALLED = "INSTALLED" + PENDING_REMOVAL = "PENDING_REMOVAL" + def __init__(self): # noqa: E501 + """TapiCommonLifecycleState - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonLifecycleState': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.LifecycleState of this TapiCommonLifecycleState. # noqa: E501 + :rtype: TapiCommonLifecycleState + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_local_class.py b/hackfest/tapi/server/tapi_server/models/tapi_common_local_class.py new file mode 100644 index 0000000000000000000000000000000000000000..19b3124eb6de3220d1c6c4e586891fe760537bd3 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_local_class.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonLocalClass(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None): # noqa: E501 + """TapiCommonLocalClass - a model defined in Swagger + + :param name: The name of this TapiCommonLocalClass. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiCommonLocalClass. # noqa: E501 + :type local_id: str + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id' + } + self._name = name + self._local_id = local_id + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonLocalClass': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.LocalClass of this TapiCommonLocalClass. # noqa: E501 + :rtype: TapiCommonLocalClass + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiCommonLocalClass. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiCommonLocalClass. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiCommonLocalClass. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiCommonLocalClass. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiCommonLocalClass. + + none # noqa: E501 + + :return: The local_id of this TapiCommonLocalClass. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiCommonLocalClass. + + none # noqa: E501 + + :param local_id: The local_id of this TapiCommonLocalClass. + :type local_id: str + """ + + self._local_id = local_id diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_name_and_value.py b/hackfest/tapi/server/tapi_server/models/tapi_common_name_and_value.py new file mode 100644 index 0000000000000000000000000000000000000000..2afdd42e15f201f9345b2bfe74c3a9dd851abeb9 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_name_and_value.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonNameAndValue(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, value_name: str=None, value: str=None): # noqa: E501 + """TapiCommonNameAndValue - a model defined in Swagger + + :param value_name: The value_name of this TapiCommonNameAndValue. # noqa: E501 + :type value_name: str + :param value: The value of this TapiCommonNameAndValue. # noqa: E501 + :type value: str + """ + self.swagger_types = { + 'value_name': str, + 'value': str + } + + self.attribute_map = { + 'value_name': 'value-name', + 'value': 'value' + } + self._value_name = value_name + self._value = value + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonNameAndValue': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.NameAndValue of this TapiCommonNameAndValue. # noqa: E501 + :rtype: TapiCommonNameAndValue + """ + return util.deserialize_model(dikt, cls) + + @property + def value_name(self) -> str: + """Gets the value_name of this TapiCommonNameAndValue. + + The name of the value. The value need not have a name. # noqa: E501 + + :return: The value_name of this TapiCommonNameAndValue. + :rtype: str + """ + return self._value_name + + @value_name.setter + def value_name(self, value_name: str): + """Sets the value_name of this TapiCommonNameAndValue. + + The name of the value. The value need not have a name. # noqa: E501 + + :param value_name: The value_name of this TapiCommonNameAndValue. + :type value_name: str + """ + + self._value_name = value_name + + @property + def value(self) -> str: + """Gets the value of this TapiCommonNameAndValue. + + The value # noqa: E501 + + :return: The value of this TapiCommonNameAndValue. + :rtype: str + """ + return self._value + + @value.setter + def value(self, value: str): + """Sets the value of this TapiCommonNameAndValue. + + The value # noqa: E501 + + :param value: The value of this TapiCommonNameAndValue. + :type value: str + """ + + self._value = value diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_name_and_value_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_common_name_and_value_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..7499e4beb479776717395f648961e4601a8df38f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_name_and_value_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonNameAndValueWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: TapiCommonNameAndValue=None): # noqa: E501 + """TapiCommonNameAndValueWrapper - a model defined in Swagger + + :param name: The name of this TapiCommonNameAndValueWrapper. # noqa: E501 + :type name: TapiCommonNameAndValue + """ + self.swagger_types = { + 'name': TapiCommonNameAndValue + } + + self.attribute_map = { + 'name': 'name' + } + self._name = name + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonNameAndValueWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.NameAndValueWrapper of this TapiCommonNameAndValueWrapper. # noqa: E501 + :rtype: TapiCommonNameAndValueWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> TapiCommonNameAndValue: + """Gets the name of this TapiCommonNameAndValueWrapper. + + + :return: The name of this TapiCommonNameAndValueWrapper. + :rtype: TapiCommonNameAndValue + """ + return self._name + + @name.setter + def name(self, name: TapiCommonNameAndValue): + """Sets the name of this TapiCommonNameAndValueWrapper. + + + :param name: The name of this TapiCommonNameAndValueWrapper. + :type name: TapiCommonNameAndValue + """ + + self._name = name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_operational_state.py b/hackfest/tapi/server/tapi_server/models/tapi_common_operational_state.py new file mode 100644 index 0000000000000000000000000000000000000000..5553d96409131e764ccde232fcca50c686609eef --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_operational_state.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonOperationalState(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + DISABLED = "DISABLED" + ENABLED = "ENABLED" + def __init__(self): # noqa: E501 + """TapiCommonOperationalState - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonOperationalState': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.OperationalState of this TapiCommonOperationalState. # noqa: E501 + :rtype: TapiCommonOperationalState + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_operational_state_pac.py b/hackfest/tapi/server/tapi_server/models/tapi_common_operational_state_pac.py new file mode 100644 index 0000000000000000000000000000000000000000..1eb91f23c7d9f59b10f79c7781ccf3a57419c44e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_operational_state_pac.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonOperationalStatePac(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None): # noqa: E501 + """TapiCommonOperationalStatePac - a model defined in Swagger + + :param operational_state: The operational_state of this TapiCommonOperationalStatePac. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiCommonOperationalStatePac. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + """ + self.swagger_types = { + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState + } + + self.attribute_map = { + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state' + } + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonOperationalStatePac': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.OperationalStatePac of this TapiCommonOperationalStatePac. # noqa: E501 + :rtype: TapiCommonOperationalStatePac + """ + return util.deserialize_model(dikt, cls) + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiCommonOperationalStatePac. + + + :return: The operational_state of this TapiCommonOperationalStatePac. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiCommonOperationalStatePac. + + + :param operational_state: The operational_state of this TapiCommonOperationalStatePac. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiCommonOperationalStatePac. + + + :return: The lifecycle_state of this TapiCommonOperationalStatePac. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiCommonOperationalStatePac. + + + :param lifecycle_state: The lifecycle_state of this TapiCommonOperationalStatePac. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_port_direction.py b/hackfest/tapi/server/tapi_server/models/tapi_common_port_direction.py new file mode 100644 index 0000000000000000000000000000000000000000..7cd3a818343084e62c7dd16a098fe6dd5f499130 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_port_direction.py @@ -0,0 +1,44 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonPortDirection(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + BIDIRECTIONAL = "BIDIRECTIONAL" + INPUT = "INPUT" + OUTPUT = "OUTPUT" + UNIDENTIFIED_OR_UNKNOWN = "UNIDENTIFIED_OR_UNKNOWN" + def __init__(self): # noqa: E501 + """TapiCommonPortDirection - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonPortDirection': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.PortDirection of this TapiCommonPortDirection. # noqa: E501 + :rtype: TapiCommonPortDirection + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_port_role.py b/hackfest/tapi/server/tapi_server/models/tapi_common_port_role.py new file mode 100644 index 0000000000000000000000000000000000000000..87de03b783e314711c665bc03612a3b17e61f4cf --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_port_role.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonPortRole(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + SYMMETRIC = "SYMMETRIC" + ROOT = "ROOT" + LEAF = "LEAF" + TRUNK = "TRUNK" + UNKNOWN = "UNKNOWN" + def __init__(self): # noqa: E501 + """TapiCommonPortRole - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonPortRole': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.PortRole of this TapiCommonPortRole. # noqa: E501 + :rtype: TapiCommonPortRole + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point.py b/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point.py new file mode 100644 index 0000000000000000000000000000000000000000..cbc788a2cc03cb5a16048cfbb8f8f42c11a786bd --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point.py @@ -0,0 +1,312 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_admin_state_pac import TapiCommonAdminStatePac # noqa: F401,E501 +from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity_pac import TapiCommonCapacityPac # noqa: F401,E501 +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server.models.tapi_common_port_direction import TapiCommonPortDirection # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonServiceInterfacePoint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, available_capacity: TapiCommonCapacity=None, total_potential_capacity: TapiCommonCapacity=None, name: List[TapiCommonNameAndValue]=None, uuid: str=None, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, administrative_state: TapiCommonAdministrativeState=None, supported_layer_protocol_qualifier: List[str]=None, layer_protocol_name: TapiCommonLayerProtocolName=None, direction: TapiCommonPortDirection=None): # noqa: E501 + """TapiCommonServiceInterfacePoint - a model defined in Swagger + + :param available_capacity: The available_capacity of this TapiCommonServiceInterfacePoint. # noqa: E501 + :type available_capacity: TapiCommonCapacity + :param total_potential_capacity: The total_potential_capacity of this TapiCommonServiceInterfacePoint. # noqa: E501 + :type total_potential_capacity: TapiCommonCapacity + :param name: The name of this TapiCommonServiceInterfacePoint. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiCommonServiceInterfacePoint. # noqa: E501 + :type uuid: str + :param operational_state: The operational_state of this TapiCommonServiceInterfacePoint. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiCommonServiceInterfacePoint. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + :param administrative_state: The administrative_state of this TapiCommonServiceInterfacePoint. # noqa: E501 + :type administrative_state: TapiCommonAdministrativeState + :param supported_layer_protocol_qualifier: The supported_layer_protocol_qualifier of this TapiCommonServiceInterfacePoint. # noqa: E501 + :type supported_layer_protocol_qualifier: List[str] + :param layer_protocol_name: The layer_protocol_name of this TapiCommonServiceInterfacePoint. # noqa: E501 + :type layer_protocol_name: TapiCommonLayerProtocolName + :param direction: The direction of this TapiCommonServiceInterfacePoint. # noqa: E501 + :type direction: TapiCommonPortDirection + """ + self.swagger_types = { + 'available_capacity': TapiCommonCapacity, + 'total_potential_capacity': TapiCommonCapacity, + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState, + 'administrative_state': TapiCommonAdministrativeState, + 'supported_layer_protocol_qualifier': List[str], + 'layer_protocol_name': TapiCommonLayerProtocolName, + 'direction': TapiCommonPortDirection + } + + self.attribute_map = { + 'available_capacity': 'available-capacity', + 'total_potential_capacity': 'total-potential-capacity', + 'name': 'name', + 'uuid': 'uuid', + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state', + 'administrative_state': 'administrative-state', + 'supported_layer_protocol_qualifier': 'supported-layer-protocol-qualifier', + 'layer_protocol_name': 'layer-protocol-name', + 'direction': 'direction' + } + self._available_capacity = available_capacity + self._total_potential_capacity = total_potential_capacity + self._name = name + self._uuid = uuid + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + self._administrative_state = administrative_state + self._supported_layer_protocol_qualifier = supported_layer_protocol_qualifier + self._layer_protocol_name = layer_protocol_name + self._direction = direction + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonServiceInterfacePoint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.ServiceInterfacePoint of this TapiCommonServiceInterfacePoint. # noqa: E501 + :rtype: TapiCommonServiceInterfacePoint + """ + return util.deserialize_model(dikt, cls) + + @property + def available_capacity(self) -> TapiCommonCapacity: + """Gets the available_capacity of this TapiCommonServiceInterfacePoint. + + + :return: The available_capacity of this TapiCommonServiceInterfacePoint. + :rtype: TapiCommonCapacity + """ + return self._available_capacity + + @available_capacity.setter + def available_capacity(self, available_capacity: TapiCommonCapacity): + """Sets the available_capacity of this TapiCommonServiceInterfacePoint. + + + :param available_capacity: The available_capacity of this TapiCommonServiceInterfacePoint. + :type available_capacity: TapiCommonCapacity + """ + + self._available_capacity = available_capacity + + @property + def total_potential_capacity(self) -> TapiCommonCapacity: + """Gets the total_potential_capacity of this TapiCommonServiceInterfacePoint. + + + :return: The total_potential_capacity of this TapiCommonServiceInterfacePoint. + :rtype: TapiCommonCapacity + """ + return self._total_potential_capacity + + @total_potential_capacity.setter + def total_potential_capacity(self, total_potential_capacity: TapiCommonCapacity): + """Sets the total_potential_capacity of this TapiCommonServiceInterfacePoint. + + + :param total_potential_capacity: The total_potential_capacity of this TapiCommonServiceInterfacePoint. + :type total_potential_capacity: TapiCommonCapacity + """ + + self._total_potential_capacity = total_potential_capacity + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiCommonServiceInterfacePoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiCommonServiceInterfacePoint. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiCommonServiceInterfacePoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiCommonServiceInterfacePoint. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiCommonServiceInterfacePoint. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiCommonServiceInterfacePoint. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiCommonServiceInterfacePoint. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiCommonServiceInterfacePoint. + :type uuid: str + """ + + self._uuid = uuid + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiCommonServiceInterfacePoint. + + + :return: The operational_state of this TapiCommonServiceInterfacePoint. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiCommonServiceInterfacePoint. + + + :param operational_state: The operational_state of this TapiCommonServiceInterfacePoint. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiCommonServiceInterfacePoint. + + + :return: The lifecycle_state of this TapiCommonServiceInterfacePoint. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiCommonServiceInterfacePoint. + + + :param lifecycle_state: The lifecycle_state of this TapiCommonServiceInterfacePoint. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state + + @property + def administrative_state(self) -> TapiCommonAdministrativeState: + """Gets the administrative_state of this TapiCommonServiceInterfacePoint. + + + :return: The administrative_state of this TapiCommonServiceInterfacePoint. + :rtype: TapiCommonAdministrativeState + """ + return self._administrative_state + + @administrative_state.setter + def administrative_state(self, administrative_state: TapiCommonAdministrativeState): + """Sets the administrative_state of this TapiCommonServiceInterfacePoint. + + + :param administrative_state: The administrative_state of this TapiCommonServiceInterfacePoint. + :type administrative_state: TapiCommonAdministrativeState + """ + + self._administrative_state = administrative_state + + @property + def supported_layer_protocol_qualifier(self) -> List[str]: + """Gets the supported_layer_protocol_qualifier of this TapiCommonServiceInterfacePoint. + + none # noqa: E501 + + :return: The supported_layer_protocol_qualifier of this TapiCommonServiceInterfacePoint. + :rtype: List[str] + """ + return self._supported_layer_protocol_qualifier + + @supported_layer_protocol_qualifier.setter + def supported_layer_protocol_qualifier(self, supported_layer_protocol_qualifier: List[str]): + """Sets the supported_layer_protocol_qualifier of this TapiCommonServiceInterfacePoint. + + none # noqa: E501 + + :param supported_layer_protocol_qualifier: The supported_layer_protocol_qualifier of this TapiCommonServiceInterfacePoint. + :type supported_layer_protocol_qualifier: List[str] + """ + + self._supported_layer_protocol_qualifier = supported_layer_protocol_qualifier + + @property + def layer_protocol_name(self) -> TapiCommonLayerProtocolName: + """Gets the layer_protocol_name of this TapiCommonServiceInterfacePoint. + + + :return: The layer_protocol_name of this TapiCommonServiceInterfacePoint. + :rtype: TapiCommonLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TapiCommonLayerProtocolName): + """Sets the layer_protocol_name of this TapiCommonServiceInterfacePoint. + + + :param layer_protocol_name: The layer_protocol_name of this TapiCommonServiceInterfacePoint. + :type layer_protocol_name: TapiCommonLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def direction(self) -> TapiCommonPortDirection: + """Gets the direction of this TapiCommonServiceInterfacePoint. + + + :return: The direction of this TapiCommonServiceInterfacePoint. + :rtype: TapiCommonPortDirection + """ + return self._direction + + @direction.setter + def direction(self, direction: TapiCommonPortDirection): + """Sets the direction of this TapiCommonServiceInterfacePoint. + + + :param direction: The direction of this TapiCommonServiceInterfacePoint. + :type direction: TapiCommonPortDirection + """ + + self._direction = direction diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..8d94e5e01080e69a4a555fc607c19870e2ff0d52 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point_ref.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonServiceInterfacePointRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service_interface_point_uuid: str=None): # noqa: E501 + """TapiCommonServiceInterfacePointRef - a model defined in Swagger + + :param service_interface_point_uuid: The service_interface_point_uuid of this TapiCommonServiceInterfacePointRef. # noqa: E501 + :type service_interface_point_uuid: str + """ + self.swagger_types = { + 'service_interface_point_uuid': str + } + + self.attribute_map = { + 'service_interface_point_uuid': 'service-interface-point-uuid' + } + self._service_interface_point_uuid = service_interface_point_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonServiceInterfacePointRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.ServiceInterfacePointRef of this TapiCommonServiceInterfacePointRef. # noqa: E501 + :rtype: TapiCommonServiceInterfacePointRef + """ + return util.deserialize_model(dikt, cls) + + @property + def service_interface_point_uuid(self) -> str: + """Gets the service_interface_point_uuid of this TapiCommonServiceInterfacePointRef. + + none # noqa: E501 + + :return: The service_interface_point_uuid of this TapiCommonServiceInterfacePointRef. + :rtype: str + """ + return self._service_interface_point_uuid + + @service_interface_point_uuid.setter + def service_interface_point_uuid(self, service_interface_point_uuid: str): + """Sets the service_interface_point_uuid of this TapiCommonServiceInterfacePointRef. + + none # noqa: E501 + + :param service_interface_point_uuid: The service_interface_point_uuid of this TapiCommonServiceInterfacePointRef. + :type service_interface_point_uuid: str + """ + + self._service_interface_point_uuid = service_interface_point_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..3375982f20136bb6e6407abe59e031dd5e9414e8 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_service_interface_point_ref import TapiCommonServiceInterfacePointRef # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonServiceInterfacePointRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service_interface_point: TapiCommonServiceInterfacePointRef=None): # noqa: E501 + """TapiCommonServiceInterfacePointRefWrapper - a model defined in Swagger + + :param service_interface_point: The service_interface_point of this TapiCommonServiceInterfacePointRefWrapper. # noqa: E501 + :type service_interface_point: TapiCommonServiceInterfacePointRef + """ + self.swagger_types = { + 'service_interface_point': TapiCommonServiceInterfacePointRef + } + + self.attribute_map = { + 'service_interface_point': 'service-interface-point' + } + self._service_interface_point = service_interface_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonServiceInterfacePointRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.ServiceInterfacePointRefWrapper of this TapiCommonServiceInterfacePointRefWrapper. # noqa: E501 + :rtype: TapiCommonServiceInterfacePointRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def service_interface_point(self) -> TapiCommonServiceInterfacePointRef: + """Gets the service_interface_point of this TapiCommonServiceInterfacePointRefWrapper. + + + :return: The service_interface_point of this TapiCommonServiceInterfacePointRefWrapper. + :rtype: TapiCommonServiceInterfacePointRef + """ + return self._service_interface_point + + @service_interface_point.setter + def service_interface_point(self, service_interface_point: TapiCommonServiceInterfacePointRef): + """Sets the service_interface_point of this TapiCommonServiceInterfacePointRefWrapper. + + + :param service_interface_point: The service_interface_point of this TapiCommonServiceInterfacePointRefWrapper. + :type service_interface_point: TapiCommonServiceInterfacePointRef + """ + + self._service_interface_point = service_interface_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..b4596f121cf6263fb35c7e1fb578cb6b755b28b1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_service_interface_point_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_service_interface_point import TapiCommonServiceInterfacePoint # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonServiceInterfacePointWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service_interface_point: TapiCommonServiceInterfacePoint=None): # noqa: E501 + """TapiCommonServiceInterfacePointWrapper - a model defined in Swagger + + :param service_interface_point: The service_interface_point of this TapiCommonServiceInterfacePointWrapper. # noqa: E501 + :type service_interface_point: TapiCommonServiceInterfacePoint + """ + self.swagger_types = { + 'service_interface_point': TapiCommonServiceInterfacePoint + } + + self.attribute_map = { + 'service_interface_point': 'service-interface-point' + } + self._service_interface_point = service_interface_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonServiceInterfacePointWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.ServiceInterfacePointWrapper of this TapiCommonServiceInterfacePointWrapper. # noqa: E501 + :rtype: TapiCommonServiceInterfacePointWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def service_interface_point(self) -> TapiCommonServiceInterfacePoint: + """Gets the service_interface_point of this TapiCommonServiceInterfacePointWrapper. + + + :return: The service_interface_point of this TapiCommonServiceInterfacePointWrapper. + :rtype: TapiCommonServiceInterfacePoint + """ + return self._service_interface_point + + @service_interface_point.setter + def service_interface_point(self, service_interface_point: TapiCommonServiceInterfacePoint): + """Sets the service_interface_point of this TapiCommonServiceInterfacePointWrapper. + + + :param service_interface_point: The service_interface_point of this TapiCommonServiceInterfacePointWrapper. + :type service_interface_point: TapiCommonServiceInterfacePoint + """ + + self._service_interface_point = service_interface_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_tapi_context.py b/hackfest/tapi/server/tapi_server/models/tapi_common_tapi_context.py new file mode 100644 index 0000000000000000000000000000000000000000..72fda0fe64f24648c3442ede0a0c87394299a549 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_tapi_context.py @@ -0,0 +1,123 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_service_interface_point import TapiCommonServiceInterfacePoint # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonTapiContext(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None, service_interface_point: List[TapiCommonServiceInterfacePoint]=None): # noqa: E501 + """TapiCommonTapiContext - a model defined in Swagger + + :param name: The name of this TapiCommonTapiContext. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiCommonTapiContext. # noqa: E501 + :type uuid: str + :param service_interface_point: The service_interface_point of this TapiCommonTapiContext. # noqa: E501 + :type service_interface_point: List[TapiCommonServiceInterfacePoint] + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'service_interface_point': List[TapiCommonServiceInterfacePoint] + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid', + 'service_interface_point': 'service-interface-point' + } + self._name = name + self._uuid = uuid + self._service_interface_point = service_interface_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonTapiContext': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.TapiContext of this TapiCommonTapiContext. # noqa: E501 + :rtype: TapiCommonTapiContext + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiCommonTapiContext. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiCommonTapiContext. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiCommonTapiContext. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiCommonTapiContext. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiCommonTapiContext. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiCommonTapiContext. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiCommonTapiContext. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiCommonTapiContext. + :type uuid: str + """ + + self._uuid = uuid + + @property + def service_interface_point(self) -> List[TapiCommonServiceInterfacePoint]: + """Gets the service_interface_point of this TapiCommonTapiContext. + + none # noqa: E501 + + :return: The service_interface_point of this TapiCommonTapiContext. + :rtype: List[TapiCommonServiceInterfacePoint] + """ + return self._service_interface_point + + @service_interface_point.setter + def service_interface_point(self, service_interface_point: List[TapiCommonServiceInterfacePoint]): + """Sets the service_interface_point of this TapiCommonTapiContext. + + none # noqa: E501 + + :param service_interface_point: The service_interface_point of this TapiCommonTapiContext. + :type service_interface_point: List[TapiCommonServiceInterfacePoint] + """ + + self._service_interface_point = service_interface_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_termination_direction.py b/hackfest/tapi/server/tapi_server/models/tapi_common_termination_direction.py new file mode 100644 index 0000000000000000000000000000000000000000..8b14272c0922c987e114fc6a26efdf8e16b70a3e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_termination_direction.py @@ -0,0 +1,44 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonTerminationDirection(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + BIDIRECTIONAL = "BIDIRECTIONAL" + SINK = "SINK" + SOURCE = "SOURCE" + UNDEFINED_OR_UNKNOWN = "UNDEFINED_OR_UNKNOWN" + def __init__(self): # noqa: E501 + """TapiCommonTerminationDirection - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonTerminationDirection': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.TerminationDirection of this TapiCommonTerminationDirection. # noqa: E501 + :rtype: TapiCommonTerminationDirection + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_termination_pac.py b/hackfest/tapi/server/tapi_server/models/tapi_common_termination_pac.py new file mode 100644 index 0000000000000000000000000000000000000000..75d0812216efe9e9e81a575b0b9af217cd8b7710 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_termination_pac.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_termination_direction import TapiCommonTerminationDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_termination_state import TapiCommonTerminationState # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonTerminationPac(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, termination_direction: TapiCommonTerminationDirection=None, termination_state: TapiCommonTerminationState=None): # noqa: E501 + """TapiCommonTerminationPac - a model defined in Swagger + + :param termination_direction: The termination_direction of this TapiCommonTerminationPac. # noqa: E501 + :type termination_direction: TapiCommonTerminationDirection + :param termination_state: The termination_state of this TapiCommonTerminationPac. # noqa: E501 + :type termination_state: TapiCommonTerminationState + """ + self.swagger_types = { + 'termination_direction': TapiCommonTerminationDirection, + 'termination_state': TapiCommonTerminationState + } + + self.attribute_map = { + 'termination_direction': 'termination-direction', + 'termination_state': 'termination-state' + } + self._termination_direction = termination_direction + self._termination_state = termination_state + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonTerminationPac': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.TerminationPac of this TapiCommonTerminationPac. # noqa: E501 + :rtype: TapiCommonTerminationPac + """ + return util.deserialize_model(dikt, cls) + + @property + def termination_direction(self) -> TapiCommonTerminationDirection: + """Gets the termination_direction of this TapiCommonTerminationPac. + + + :return: The termination_direction of this TapiCommonTerminationPac. + :rtype: TapiCommonTerminationDirection + """ + return self._termination_direction + + @termination_direction.setter + def termination_direction(self, termination_direction: TapiCommonTerminationDirection): + """Sets the termination_direction of this TapiCommonTerminationPac. + + + :param termination_direction: The termination_direction of this TapiCommonTerminationPac. + :type termination_direction: TapiCommonTerminationDirection + """ + + self._termination_direction = termination_direction + + @property + def termination_state(self) -> TapiCommonTerminationState: + """Gets the termination_state of this TapiCommonTerminationPac. + + + :return: The termination_state of this TapiCommonTerminationPac. + :rtype: TapiCommonTerminationState + """ + return self._termination_state + + @termination_state.setter + def termination_state(self, termination_state: TapiCommonTerminationState): + """Sets the termination_state of this TapiCommonTerminationPac. + + + :param termination_state: The termination_state of this TapiCommonTerminationPac. + :type termination_state: TapiCommonTerminationState + """ + + self._termination_state = termination_state diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_termination_state.py b/hackfest/tapi/server/tapi_server/models/tapi_common_termination_state.py new file mode 100644 index 0000000000000000000000000000000000000000..8b90b76ac8713d9d3f1bc14d52be6a8c9566b938 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_termination_state.py @@ -0,0 +1,47 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonTerminationState(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + LP_CAN_NEVER_TERMINATE = "LP_CAN_NEVER_TERMINATE" + LT_NOT_TERMINATED = "LT_NOT_TERMINATED" + TERMINATED_SERVER_TO_CLIENT_FLOW = "TERMINATED_SERVER_TO_CLIENT_FLOW" + TERMINATED_CLIENT_TO_SERVER_FLOW = "TERMINATED_CLIENT_TO_SERVER_FLOW" + TERMINATED_BIDIRECTIONAL = "TERMINATED_BIDIRECTIONAL" + LT_PERMENANTLY_TERMINATED = "LT_PERMENANTLY_TERMINATED" + TERMINATION_STATE_UNKNOWN = "TERMINATION_STATE_UNKNOWN" + def __init__(self): # noqa: E501 + """TapiCommonTerminationState - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonTerminationState': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.TerminationState of this TapiCommonTerminationState. # noqa: E501 + :rtype: TapiCommonTerminationState + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_time_range.py b/hackfest/tapi/server/tapi_server/models/tapi_common_time_range.py new file mode 100644 index 0000000000000000000000000000000000000000..d4b33cea32c7caeb998485e60ac612e2c6d52267 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_time_range.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiCommonTimeRange(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, end_time: str=None, start_time: str=None): # noqa: E501 + """TapiCommonTimeRange - a model defined in Swagger + + :param end_time: The end_time of this TapiCommonTimeRange. # noqa: E501 + :type end_time: str + :param start_time: The start_time of this TapiCommonTimeRange. # noqa: E501 + :type start_time: str + """ + self.swagger_types = { + 'end_time': str, + 'start_time': str + } + + self.attribute_map = { + 'end_time': 'end-time', + 'start_time': 'start-time' + } + self._end_time = end_time + self._start_time = start_time + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonTimeRange': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.TimeRange of this TapiCommonTimeRange. # noqa: E501 + :rtype: TapiCommonTimeRange + """ + return util.deserialize_model(dikt, cls) + + @property + def end_time(self) -> str: + """Gets the end_time of this TapiCommonTimeRange. + + none # noqa: E501 + + :return: The end_time of this TapiCommonTimeRange. + :rtype: str + """ + return self._end_time + + @end_time.setter + def end_time(self, end_time: str): + """Sets the end_time of this TapiCommonTimeRange. + + none # noqa: E501 + + :param end_time: The end_time of this TapiCommonTimeRange. + :type end_time: str + """ + + self._end_time = end_time + + @property + def start_time(self) -> str: + """Gets the start_time of this TapiCommonTimeRange. + + none # noqa: E501 + + :return: The start_time of this TapiCommonTimeRange. + :rtype: str + """ + return self._start_time + + @start_time.setter + def start_time(self, start_time: str): + """Sets the start_time of this TapiCommonTimeRange. + + none # noqa: E501 + + :param start_time: The start_time of this TapiCommonTimeRange. + :type start_time: str + """ + + self._start_time = start_time diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_time_range_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_common_time_range_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..839c40f06015d24bfd6b0a5a74f025cc09633b6d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_time_range_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_time_range import TapiCommonTimeRange # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonTimeRangeWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, schedule: TapiCommonTimeRange=None): # noqa: E501 + """TapiCommonTimeRangeWrapper - a model defined in Swagger + + :param schedule: The schedule of this TapiCommonTimeRangeWrapper. # noqa: E501 + :type schedule: TapiCommonTimeRange + """ + self.swagger_types = { + 'schedule': TapiCommonTimeRange + } + + self.attribute_map = { + 'schedule': 'schedule' + } + self._schedule = schedule + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonTimeRangeWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.TimeRangeWrapper of this TapiCommonTimeRangeWrapper. # noqa: E501 + :rtype: TapiCommonTimeRangeWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def schedule(self) -> TapiCommonTimeRange: + """Gets the schedule of this TapiCommonTimeRangeWrapper. + + + :return: The schedule of this TapiCommonTimeRangeWrapper. + :rtype: TapiCommonTimeRange + """ + return self._schedule + + @schedule.setter + def schedule(self, schedule: TapiCommonTimeRange): + """Sets the schedule of this TapiCommonTimeRangeWrapper. + + + :param schedule: The schedule of this TapiCommonTimeRangeWrapper. + :type schedule: TapiCommonTimeRange + """ + + self._schedule = schedule diff --git a/hackfest/tapi/server/tapi_server/models/tapi_common_updateserviceinterfacepoint_input.py b/hackfest/tapi/server/tapi_server/models/tapi_common_updateserviceinterfacepoint_input.py new file mode 100644 index 0000000000000000000000000000000000000000..d2013ae157886c02b4c5d3614a7ddf35c941558a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_common_updateserviceinterfacepoint_input.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState # noqa: F401,E501 +from tapi_server import util + + +class TapiCommonUpdateserviceinterfacepointInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, sip_id_or_name: str=None, state: TapiCommonAdministrativeState=None): # noqa: E501 + """TapiCommonUpdateserviceinterfacepointInput - a model defined in Swagger + + :param sip_id_or_name: The sip_id_or_name of this TapiCommonUpdateserviceinterfacepointInput. # noqa: E501 + :type sip_id_or_name: str + :param state: The state of this TapiCommonUpdateserviceinterfacepointInput. # noqa: E501 + :type state: TapiCommonAdministrativeState + """ + self.swagger_types = { + 'sip_id_or_name': str, + 'state': TapiCommonAdministrativeState + } + + self.attribute_map = { + 'sip_id_or_name': 'sip-id-or-name', + 'state': 'state' + } + self._sip_id_or_name = sip_id_or_name + self._state = state + + @classmethod + def from_dict(cls, dikt) -> 'TapiCommonUpdateserviceinterfacepointInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.common.updateserviceinterfacepoint.Input of this TapiCommonUpdateserviceinterfacepointInput. # noqa: E501 + :rtype: TapiCommonUpdateserviceinterfacepointInput + """ + return util.deserialize_model(dikt, cls) + + @property + def sip_id_or_name(self) -> str: + """Gets the sip_id_or_name of this TapiCommonUpdateserviceinterfacepointInput. + + none # noqa: E501 + + :return: The sip_id_or_name of this TapiCommonUpdateserviceinterfacepointInput. + :rtype: str + """ + return self._sip_id_or_name + + @sip_id_or_name.setter + def sip_id_or_name(self, sip_id_or_name: str): + """Sets the sip_id_or_name of this TapiCommonUpdateserviceinterfacepointInput. + + none # noqa: E501 + + :param sip_id_or_name: The sip_id_or_name of this TapiCommonUpdateserviceinterfacepointInput. + :type sip_id_or_name: str + """ + + self._sip_id_or_name = sip_id_or_name + + @property + def state(self) -> TapiCommonAdministrativeState: + """Gets the state of this TapiCommonUpdateserviceinterfacepointInput. + + + :return: The state of this TapiCommonUpdateserviceinterfacepointInput. + :rtype: TapiCommonAdministrativeState + """ + return self._state + + @state.setter + def state(self, state: TapiCommonAdministrativeState): + """Sets the state of this TapiCommonUpdateserviceinterfacepointInput. + + + :param state: The state of this TapiCommonUpdateserviceinterfacepointInput. + :type state: TapiCommonAdministrativeState + """ + + self._state = state diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_list.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_list.py new file mode 100644 index 0000000000000000000000000000000000000000..62c3fd0448704abca16a24f5b5ad7d6fa5056604 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_list.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection_end_point import TapiConnectivityConnectionEndPoint # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityCepList(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_end_point: List[TapiConnectivityConnectionEndPoint]=None): # noqa: E501 + """TapiConnectivityCepList - a model defined in Swagger + + :param connection_end_point: The connection_end_point of this TapiConnectivityCepList. # noqa: E501 + :type connection_end_point: List[TapiConnectivityConnectionEndPoint] + """ + self.swagger_types = { + 'connection_end_point': List[TapiConnectivityConnectionEndPoint] + } + + self.attribute_map = { + 'connection_end_point': 'connection-end-point' + } + self._connection_end_point = connection_end_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityCepList': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.CepList of this TapiConnectivityCepList. # noqa: E501 + :rtype: TapiConnectivityCepList + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_end_point(self) -> List[TapiConnectivityConnectionEndPoint]: + """Gets the connection_end_point of this TapiConnectivityCepList. + + none # noqa: E501 + + :return: The connection_end_point of this TapiConnectivityCepList. + :rtype: List[TapiConnectivityConnectionEndPoint] + """ + return self._connection_end_point + + @connection_end_point.setter + def connection_end_point(self, connection_end_point: List[TapiConnectivityConnectionEndPoint]): + """Sets the connection_end_point of this TapiConnectivityCepList. + + none # noqa: E501 + + :param connection_end_point: The connection_end_point of this TapiConnectivityCepList. + :type connection_end_point: List[TapiConnectivityConnectionEndPoint] + """ + + self._connection_end_point = connection_end_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_list_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_list_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..1a8af9dcc89795d30e1f0547062dc327e1092715 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_list_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_cep_list import TapiConnectivityCepList # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityCepListWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, tapi_connectivitycep_list: TapiConnectivityCepList=None): # noqa: E501 + """TapiConnectivityCepListWrapper - a model defined in Swagger + + :param tapi_connectivitycep_list: The tapi_connectivitycep_list of this TapiConnectivityCepListWrapper. # noqa: E501 + :type tapi_connectivitycep_list: TapiConnectivityCepList + """ + self.swagger_types = { + 'tapi_connectivitycep_list': TapiConnectivityCepList + } + + self.attribute_map = { + 'tapi_connectivitycep_list': 'tapi-connectivity:cep-list' + } + self._tapi_connectivitycep_list = tapi_connectivitycep_list + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityCepListWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.CepListWrapper of this TapiConnectivityCepListWrapper. # noqa: E501 + :rtype: TapiConnectivityCepListWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def tapi_connectivitycep_list(self) -> TapiConnectivityCepList: + """Gets the tapi_connectivitycep_list of this TapiConnectivityCepListWrapper. + + + :return: The tapi_connectivitycep_list of this TapiConnectivityCepListWrapper. + :rtype: TapiConnectivityCepList + """ + return self._tapi_connectivitycep_list + + @tapi_connectivitycep_list.setter + def tapi_connectivitycep_list(self, tapi_connectivitycep_list: TapiConnectivityCepList): + """Sets the tapi_connectivitycep_list of this TapiConnectivityCepListWrapper. + + + :param tapi_connectivitycep_list: The tapi_connectivitycep_list of this TapiConnectivityCepListWrapper. + :type tapi_connectivitycep_list: TapiConnectivityCepList + """ + + self._tapi_connectivitycep_list = tapi_connectivitycep_list diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_role.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_role.py new file mode 100644 index 0000000000000000000000000000000000000000..a6fb10194c7bef2338bf5e250d75df55595de399 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_role.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection_spec_reference import TapiConnectivityConnectionSpecReference # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityCepRole(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, role_name: str=None, connection_spec_reference: TapiConnectivityConnectionSpecReference=None): # noqa: E501 + """TapiConnectivityCepRole - a model defined in Swagger + + :param role_name: The role_name of this TapiConnectivityCepRole. # noqa: E501 + :type role_name: str + :param connection_spec_reference: The connection_spec_reference of this TapiConnectivityCepRole. # noqa: E501 + :type connection_spec_reference: TapiConnectivityConnectionSpecReference + """ + self.swagger_types = { + 'role_name': str, + 'connection_spec_reference': TapiConnectivityConnectionSpecReference + } + + self.attribute_map = { + 'role_name': 'role-name', + 'connection_spec_reference': 'connection-spec-reference' + } + self._role_name = role_name + self._connection_spec_reference = connection_spec_reference + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityCepRole': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.CepRole of this TapiConnectivityCepRole. # noqa: E501 + :rtype: TapiConnectivityCepRole + """ + return util.deserialize_model(dikt, cls) + + @property + def role_name(self) -> str: + """Gets the role_name of this TapiConnectivityCepRole. + + The name of the cep role in the context of the referenced spec. # noqa: E501 + + :return: The role_name of this TapiConnectivityCepRole. + :rtype: str + """ + return self._role_name + + @role_name.setter + def role_name(self, role_name: str): + """Sets the role_name of this TapiConnectivityCepRole. + + The name of the cep role in the context of the referenced spec. # noqa: E501 + + :param role_name: The role_name of this TapiConnectivityCepRole. + :type role_name: str + """ + + self._role_name = role_name + + @property + def connection_spec_reference(self) -> TapiConnectivityConnectionSpecReference: + """Gets the connection_spec_reference of this TapiConnectivityCepRole. + + + :return: The connection_spec_reference of this TapiConnectivityCepRole. + :rtype: TapiConnectivityConnectionSpecReference + """ + return self._connection_spec_reference + + @connection_spec_reference.setter + def connection_spec_reference(self, connection_spec_reference: TapiConnectivityConnectionSpecReference): + """Sets the connection_spec_reference of this TapiConnectivityCepRole. + + + :param connection_spec_reference: The connection_spec_reference of this TapiConnectivityCepRole. + :type connection_spec_reference: TapiConnectivityConnectionSpecReference + """ + + self._connection_spec_reference = connection_spec_reference diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_role_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_role_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..f50a3ae02764e8a0343e72e7842043f4772e129d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_cep_role_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_cep_role import TapiConnectivityCepRole # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityCepRoleWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, cep_role: TapiConnectivityCepRole=None): # noqa: E501 + """TapiConnectivityCepRoleWrapper - a model defined in Swagger + + :param cep_role: The cep_role of this TapiConnectivityCepRoleWrapper. # noqa: E501 + :type cep_role: TapiConnectivityCepRole + """ + self.swagger_types = { + 'cep_role': TapiConnectivityCepRole + } + + self.attribute_map = { + 'cep_role': 'cep-role' + } + self._cep_role = cep_role + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityCepRoleWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.CepRoleWrapper of this TapiConnectivityCepRoleWrapper. # noqa: E501 + :rtype: TapiConnectivityCepRoleWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def cep_role(self) -> TapiConnectivityCepRole: + """Gets the cep_role of this TapiConnectivityCepRoleWrapper. + + + :return: The cep_role of this TapiConnectivityCepRoleWrapper. + :rtype: TapiConnectivityCepRole + """ + return self._cep_role + + @cep_role.setter + def cep_role(self, cep_role: TapiConnectivityCepRole): + """Sets the cep_role of this TapiConnectivityCepRoleWrapper. + + + :param cep_role: The cep_role of this TapiConnectivityCepRoleWrapper. + :type cep_role: TapiConnectivityCepRole + """ + + self._cep_role = cep_role diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection.py new file mode 100644 index 0000000000000000000000000000000000000000..f7445787c94b8605a80e1ea24a8b8d5661357dcd --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection.py @@ -0,0 +1,375 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_forwarding_direction import TapiCommonForwardingDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state_pac import TapiCommonOperationalStatePac # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connection_end_point_ref import TapiConnectivityConnectionEndPointRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connection_ref import TapiConnectivityConnectionRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connection_spec_reference import TapiConnectivityConnectionSpecReference # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_route import TapiConnectivityRoute # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_switch_control import TapiConnectivitySwitchControl # noqa: F401,E501 +from tapi_server.models.tapi_topology_link_ref import TapiTopologyLinkRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnection(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, name: List[TapiCommonNameAndValue]=None, uuid: str=None, supported_client_link: List[TapiTopologyLinkRef]=None, lower_connection: List[TapiConnectivityConnectionRef]=None, switch_control: List[TapiConnectivitySwitchControl]=None, route: List[TapiConnectivityRoute]=None, connection_spec_reference: TapiConnectivityConnectionSpecReference=None, layer_protocol_name: TapiCommonLayerProtocolName=None, connection_end_point: List[TapiConnectivityConnectionEndPointRef]=None, direction: TapiCommonForwardingDirection=None): # noqa: E501 + """TapiConnectivityConnection - a model defined in Swagger + + :param operational_state: The operational_state of this TapiConnectivityConnection. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiConnectivityConnection. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + :param name: The name of this TapiConnectivityConnection. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiConnectivityConnection. # noqa: E501 + :type uuid: str + :param supported_client_link: The supported_client_link of this TapiConnectivityConnection. # noqa: E501 + :type supported_client_link: List[TapiTopologyLinkRef] + :param lower_connection: The lower_connection of this TapiConnectivityConnection. # noqa: E501 + :type lower_connection: List[TapiConnectivityConnectionRef] + :param switch_control: The switch_control of this TapiConnectivityConnection. # noqa: E501 + :type switch_control: List[TapiConnectivitySwitchControl] + :param route: The route of this TapiConnectivityConnection. # noqa: E501 + :type route: List[TapiConnectivityRoute] + :param connection_spec_reference: The connection_spec_reference of this TapiConnectivityConnection. # noqa: E501 + :type connection_spec_reference: TapiConnectivityConnectionSpecReference + :param layer_protocol_name: The layer_protocol_name of this TapiConnectivityConnection. # noqa: E501 + :type layer_protocol_name: TapiCommonLayerProtocolName + :param connection_end_point: The connection_end_point of this TapiConnectivityConnection. # noqa: E501 + :type connection_end_point: List[TapiConnectivityConnectionEndPointRef] + :param direction: The direction of this TapiConnectivityConnection. # noqa: E501 + :type direction: TapiCommonForwardingDirection + """ + self.swagger_types = { + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState, + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'supported_client_link': List[TapiTopologyLinkRef], + 'lower_connection': List[TapiConnectivityConnectionRef], + 'switch_control': List[TapiConnectivitySwitchControl], + 'route': List[TapiConnectivityRoute], + 'connection_spec_reference': TapiConnectivityConnectionSpecReference, + 'layer_protocol_name': TapiCommonLayerProtocolName, + 'connection_end_point': List[TapiConnectivityConnectionEndPointRef], + 'direction': TapiCommonForwardingDirection + } + + self.attribute_map = { + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state', + 'name': 'name', + 'uuid': 'uuid', + 'supported_client_link': 'supported-client-link', + 'lower_connection': 'lower-connection', + 'switch_control': 'switch-control', + 'route': 'route', + 'connection_spec_reference': 'connection-spec-reference', + 'layer_protocol_name': 'layer-protocol-name', + 'connection_end_point': 'connection-end-point', + 'direction': 'direction' + } + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + self._name = name + self._uuid = uuid + self._supported_client_link = supported_client_link + self._lower_connection = lower_connection + self._switch_control = switch_control + self._route = route + self._connection_spec_reference = connection_spec_reference + self._layer_protocol_name = layer_protocol_name + self._connection_end_point = connection_end_point + self._direction = direction + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnection': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.Connection of this TapiConnectivityConnection. # noqa: E501 + :rtype: TapiConnectivityConnection + """ + return util.deserialize_model(dikt, cls) + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiConnectivityConnection. + + + :return: The operational_state of this TapiConnectivityConnection. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiConnectivityConnection. + + + :param operational_state: The operational_state of this TapiConnectivityConnection. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiConnectivityConnection. + + + :return: The lifecycle_state of this TapiConnectivityConnection. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiConnectivityConnection. + + + :param lifecycle_state: The lifecycle_state of this TapiConnectivityConnection. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiConnectivityConnection. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiConnectivityConnection. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiConnectivityConnection. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiConnectivityConnection. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiConnectivityConnection. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiConnectivityConnection. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiConnectivityConnection. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiConnectivityConnection. + :type uuid: str + """ + + self._uuid = uuid + + @property + def supported_client_link(self) -> List[TapiTopologyLinkRef]: + """Gets the supported_client_link of this TapiConnectivityConnection. + + none # noqa: E501 + + :return: The supported_client_link of this TapiConnectivityConnection. + :rtype: List[TapiTopologyLinkRef] + """ + return self._supported_client_link + + @supported_client_link.setter + def supported_client_link(self, supported_client_link: List[TapiTopologyLinkRef]): + """Sets the supported_client_link of this TapiConnectivityConnection. + + none # noqa: E501 + + :param supported_client_link: The supported_client_link of this TapiConnectivityConnection. + :type supported_client_link: List[TapiTopologyLinkRef] + """ + + self._supported_client_link = supported_client_link + + @property + def lower_connection(self) -> List[TapiConnectivityConnectionRef]: + """Gets the lower_connection of this TapiConnectivityConnection. + + An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning). Aggregation is used as for the Node/Topology to allow changes in hierarchy. Connection aggregation reflects Node/Topology aggregation. The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning. # noqa: E501 + + :return: The lower_connection of this TapiConnectivityConnection. + :rtype: List[TapiConnectivityConnectionRef] + """ + return self._lower_connection + + @lower_connection.setter + def lower_connection(self, lower_connection: List[TapiConnectivityConnectionRef]): + """Sets the lower_connection of this TapiConnectivityConnection. + + An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning). Aggregation is used as for the Node/Topology to allow changes in hierarchy. Connection aggregation reflects Node/Topology aggregation. The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning. # noqa: E501 + + :param lower_connection: The lower_connection of this TapiConnectivityConnection. + :type lower_connection: List[TapiConnectivityConnectionRef] + """ + + self._lower_connection = lower_connection + + @property + def switch_control(self) -> List[TapiConnectivitySwitchControl]: + """Gets the switch_control of this TapiConnectivityConnection. + + none # noqa: E501 + + :return: The switch_control of this TapiConnectivityConnection. + :rtype: List[TapiConnectivitySwitchControl] + """ + return self._switch_control + + @switch_control.setter + def switch_control(self, switch_control: List[TapiConnectivitySwitchControl]): + """Sets the switch_control of this TapiConnectivityConnection. + + none # noqa: E501 + + :param switch_control: The switch_control of this TapiConnectivityConnection. + :type switch_control: List[TapiConnectivitySwitchControl] + """ + + self._switch_control = switch_control + + @property + def route(self) -> List[TapiConnectivityRoute]: + """Gets the route of this TapiConnectivityConnection. + + none # noqa: E501 + + :return: The route of this TapiConnectivityConnection. + :rtype: List[TapiConnectivityRoute] + """ + return self._route + + @route.setter + def route(self, route: List[TapiConnectivityRoute]): + """Sets the route of this TapiConnectivityConnection. + + none # noqa: E501 + + :param route: The route of this TapiConnectivityConnection. + :type route: List[TapiConnectivityRoute] + """ + + self._route = route + + @property + def connection_spec_reference(self) -> TapiConnectivityConnectionSpecReference: + """Gets the connection_spec_reference of this TapiConnectivityConnection. + + + :return: The connection_spec_reference of this TapiConnectivityConnection. + :rtype: TapiConnectivityConnectionSpecReference + """ + return self._connection_spec_reference + + @connection_spec_reference.setter + def connection_spec_reference(self, connection_spec_reference: TapiConnectivityConnectionSpecReference): + """Sets the connection_spec_reference of this TapiConnectivityConnection. + + + :param connection_spec_reference: The connection_spec_reference of this TapiConnectivityConnection. + :type connection_spec_reference: TapiConnectivityConnectionSpecReference + """ + + self._connection_spec_reference = connection_spec_reference + + @property + def layer_protocol_name(self) -> TapiCommonLayerProtocolName: + """Gets the layer_protocol_name of this TapiConnectivityConnection. + + + :return: The layer_protocol_name of this TapiConnectivityConnection. + :rtype: TapiCommonLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TapiCommonLayerProtocolName): + """Sets the layer_protocol_name of this TapiConnectivityConnection. + + + :param layer_protocol_name: The layer_protocol_name of this TapiConnectivityConnection. + :type layer_protocol_name: TapiCommonLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def connection_end_point(self) -> List[TapiConnectivityConnectionEndPointRef]: + """Gets the connection_end_point of this TapiConnectivityConnection. + + none # noqa: E501 + + :return: The connection_end_point of this TapiConnectivityConnection. + :rtype: List[TapiConnectivityConnectionEndPointRef] + """ + return self._connection_end_point + + @connection_end_point.setter + def connection_end_point(self, connection_end_point: List[TapiConnectivityConnectionEndPointRef]): + """Sets the connection_end_point of this TapiConnectivityConnection. + + none # noqa: E501 + + :param connection_end_point: The connection_end_point of this TapiConnectivityConnection. + :type connection_end_point: List[TapiConnectivityConnectionEndPointRef] + """ + + self._connection_end_point = connection_end_point + + @property + def direction(self) -> TapiCommonForwardingDirection: + """Gets the direction of this TapiConnectivityConnection. + + + :return: The direction of this TapiConnectivityConnection. + :rtype: TapiCommonForwardingDirection + """ + return self._direction + + @direction.setter + def direction(self, direction: TapiCommonForwardingDirection): + """Sets the direction of this TapiConnectivityConnection. + + + :param direction: The direction of this TapiConnectivityConnection. + :type direction: TapiCommonForwardingDirection + """ + + self._direction = direction diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point.py new file mode 100644 index 0000000000000000000000000000000000000000..19dff9cb6cf0858f1dd585ac154ebc4c57a5705d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point.py @@ -0,0 +1,426 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state_pac import TapiCommonOperationalStatePac # noqa: F401,E501 +from tapi_server.models.tapi_common_port_direction import TapiCommonPortDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_port_role import TapiCommonPortRole # noqa: F401,E501 +from tapi_server.models.tapi_common_termination_direction import TapiCommonTerminationDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_termination_pac import TapiCommonTerminationPac # noqa: F401,E501 +from tapi_server.models.tapi_common_termination_state import TapiCommonTerminationState # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_cep_role import TapiConnectivityCepRole # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connection_end_point_ref import TapiConnectivityConnectionEndPointRef # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectionEndPoint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, termination_direction: TapiCommonTerminationDirection=None, termination_state: TapiCommonTerminationState=None, name: List[TapiCommonNameAndValue]=None, uuid: str=None, client_node_edge_point: List[TapiTopologyNodeEdgePointRef]=None, connection_port_role: TapiCommonPortRole=None, layer_protocol_name: TapiCommonLayerProtocolName=None, layer_protocol_qualifier: str=None, parent_node_edge_point: TapiTopologyNodeEdgePointRef=None, cep_role: List[TapiConnectivityCepRole]=None, aggregated_connection_end_point: List[TapiConnectivityConnectionEndPointRef]=None, connection_port_direction: TapiCommonPortDirection=None): # noqa: E501 + """TapiConnectivityConnectionEndPoint - a model defined in Swagger + + :param operational_state: The operational_state of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + :param termination_direction: The termination_direction of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type termination_direction: TapiCommonTerminationDirection + :param termination_state: The termination_state of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type termination_state: TapiCommonTerminationState + :param name: The name of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type uuid: str + :param client_node_edge_point: The client_node_edge_point of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type client_node_edge_point: List[TapiTopologyNodeEdgePointRef] + :param connection_port_role: The connection_port_role of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type connection_port_role: TapiCommonPortRole + :param layer_protocol_name: The layer_protocol_name of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type layer_protocol_name: TapiCommonLayerProtocolName + :param layer_protocol_qualifier: The layer_protocol_qualifier of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type layer_protocol_qualifier: str + :param parent_node_edge_point: The parent_node_edge_point of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type parent_node_edge_point: TapiTopologyNodeEdgePointRef + :param cep_role: The cep_role of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type cep_role: List[TapiConnectivityCepRole] + :param aggregated_connection_end_point: The aggregated_connection_end_point of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type aggregated_connection_end_point: List[TapiConnectivityConnectionEndPointRef] + :param connection_port_direction: The connection_port_direction of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :type connection_port_direction: TapiCommonPortDirection + """ + self.swagger_types = { + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState, + 'termination_direction': TapiCommonTerminationDirection, + 'termination_state': TapiCommonTerminationState, + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'client_node_edge_point': List[TapiTopologyNodeEdgePointRef], + 'connection_port_role': TapiCommonPortRole, + 'layer_protocol_name': TapiCommonLayerProtocolName, + 'layer_protocol_qualifier': str, + 'parent_node_edge_point': TapiTopologyNodeEdgePointRef, + 'cep_role': List[TapiConnectivityCepRole], + 'aggregated_connection_end_point': List[TapiConnectivityConnectionEndPointRef], + 'connection_port_direction': TapiCommonPortDirection + } + + self.attribute_map = { + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state', + 'termination_direction': 'termination-direction', + 'termination_state': 'termination-state', + 'name': 'name', + 'uuid': 'uuid', + 'client_node_edge_point': 'client-node-edge-point', + 'connection_port_role': 'connection-port-role', + 'layer_protocol_name': 'layer-protocol-name', + 'layer_protocol_qualifier': 'layer-protocol-qualifier', + 'parent_node_edge_point': 'parent-node-edge-point', + 'cep_role': 'cep-role', + 'aggregated_connection_end_point': 'aggregated-connection-end-point', + 'connection_port_direction': 'connection-port-direction' + } + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + self._termination_direction = termination_direction + self._termination_state = termination_state + self._name = name + self._uuid = uuid + self._client_node_edge_point = client_node_edge_point + self._connection_port_role = connection_port_role + self._layer_protocol_name = layer_protocol_name + self._layer_protocol_qualifier = layer_protocol_qualifier + self._parent_node_edge_point = parent_node_edge_point + self._cep_role = cep_role + self._aggregated_connection_end_point = aggregated_connection_end_point + self._connection_port_direction = connection_port_direction + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectionEndPoint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectionEndPoint of this TapiConnectivityConnectionEndPoint. # noqa: E501 + :rtype: TapiConnectivityConnectionEndPoint + """ + return util.deserialize_model(dikt, cls) + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiConnectivityConnectionEndPoint. + + + :return: The operational_state of this TapiConnectivityConnectionEndPoint. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiConnectivityConnectionEndPoint. + + + :param operational_state: The operational_state of this TapiConnectivityConnectionEndPoint. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiConnectivityConnectionEndPoint. + + + :return: The lifecycle_state of this TapiConnectivityConnectionEndPoint. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiConnectivityConnectionEndPoint. + + + :param lifecycle_state: The lifecycle_state of this TapiConnectivityConnectionEndPoint. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state + + @property + def termination_direction(self) -> TapiCommonTerminationDirection: + """Gets the termination_direction of this TapiConnectivityConnectionEndPoint. + + + :return: The termination_direction of this TapiConnectivityConnectionEndPoint. + :rtype: TapiCommonTerminationDirection + """ + return self._termination_direction + + @termination_direction.setter + def termination_direction(self, termination_direction: TapiCommonTerminationDirection): + """Sets the termination_direction of this TapiConnectivityConnectionEndPoint. + + + :param termination_direction: The termination_direction of this TapiConnectivityConnectionEndPoint. + :type termination_direction: TapiCommonTerminationDirection + """ + + self._termination_direction = termination_direction + + @property + def termination_state(self) -> TapiCommonTerminationState: + """Gets the termination_state of this TapiConnectivityConnectionEndPoint. + + + :return: The termination_state of this TapiConnectivityConnectionEndPoint. + :rtype: TapiCommonTerminationState + """ + return self._termination_state + + @termination_state.setter + def termination_state(self, termination_state: TapiCommonTerminationState): + """Sets the termination_state of this TapiConnectivityConnectionEndPoint. + + + :param termination_state: The termination_state of this TapiConnectivityConnectionEndPoint. + :type termination_state: TapiCommonTerminationState + """ + + self._termination_state = termination_state + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiConnectivityConnectionEndPoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiConnectivityConnectionEndPoint. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiConnectivityConnectionEndPoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiConnectivityConnectionEndPoint. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiConnectivityConnectionEndPoint. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiConnectivityConnectionEndPoint. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiConnectivityConnectionEndPoint. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiConnectivityConnectionEndPoint. + :type uuid: str + """ + + self._uuid = uuid + + @property + def client_node_edge_point(self) -> List[TapiTopologyNodeEdgePointRef]: + """Gets the client_node_edge_point of this TapiConnectivityConnectionEndPoint. + + none # noqa: E501 + + :return: The client_node_edge_point of this TapiConnectivityConnectionEndPoint. + :rtype: List[TapiTopologyNodeEdgePointRef] + """ + return self._client_node_edge_point + + @client_node_edge_point.setter + def client_node_edge_point(self, client_node_edge_point: List[TapiTopologyNodeEdgePointRef]): + """Sets the client_node_edge_point of this TapiConnectivityConnectionEndPoint. + + none # noqa: E501 + + :param client_node_edge_point: The client_node_edge_point of this TapiConnectivityConnectionEndPoint. + :type client_node_edge_point: List[TapiTopologyNodeEdgePointRef] + """ + + self._client_node_edge_point = client_node_edge_point + + @property + def connection_port_role(self) -> TapiCommonPortRole: + """Gets the connection_port_role of this TapiConnectivityConnectionEndPoint. + + + :return: The connection_port_role of this TapiConnectivityConnectionEndPoint. + :rtype: TapiCommonPortRole + """ + return self._connection_port_role + + @connection_port_role.setter + def connection_port_role(self, connection_port_role: TapiCommonPortRole): + """Sets the connection_port_role of this TapiConnectivityConnectionEndPoint. + + + :param connection_port_role: The connection_port_role of this TapiConnectivityConnectionEndPoint. + :type connection_port_role: TapiCommonPortRole + """ + + self._connection_port_role = connection_port_role + + @property + def layer_protocol_name(self) -> TapiCommonLayerProtocolName: + """Gets the layer_protocol_name of this TapiConnectivityConnectionEndPoint. + + + :return: The layer_protocol_name of this TapiConnectivityConnectionEndPoint. + :rtype: TapiCommonLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TapiCommonLayerProtocolName): + """Sets the layer_protocol_name of this TapiConnectivityConnectionEndPoint. + + + :param layer_protocol_name: The layer_protocol_name of this TapiConnectivityConnectionEndPoint. + :type layer_protocol_name: TapiCommonLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def layer_protocol_qualifier(self) -> str: + """Gets the layer_protocol_qualifier of this TapiConnectivityConnectionEndPoint. + + none # noqa: E501 + + :return: The layer_protocol_qualifier of this TapiConnectivityConnectionEndPoint. + :rtype: str + """ + return self._layer_protocol_qualifier + + @layer_protocol_qualifier.setter + def layer_protocol_qualifier(self, layer_protocol_qualifier: str): + """Sets the layer_protocol_qualifier of this TapiConnectivityConnectionEndPoint. + + none # noqa: E501 + + :param layer_protocol_qualifier: The layer_protocol_qualifier of this TapiConnectivityConnectionEndPoint. + :type layer_protocol_qualifier: str + """ + + self._layer_protocol_qualifier = layer_protocol_qualifier + + @property + def parent_node_edge_point(self) -> TapiTopologyNodeEdgePointRef: + """Gets the parent_node_edge_point of this TapiConnectivityConnectionEndPoint. + + + :return: The parent_node_edge_point of this TapiConnectivityConnectionEndPoint. + :rtype: TapiTopologyNodeEdgePointRef + """ + return self._parent_node_edge_point + + @parent_node_edge_point.setter + def parent_node_edge_point(self, parent_node_edge_point: TapiTopologyNodeEdgePointRef): + """Sets the parent_node_edge_point of this TapiConnectivityConnectionEndPoint. + + + :param parent_node_edge_point: The parent_node_edge_point of this TapiConnectivityConnectionEndPoint. + :type parent_node_edge_point: TapiTopologyNodeEdgePointRef + """ + + self._parent_node_edge_point = parent_node_edge_point + + @property + def cep_role(self) -> List[TapiConnectivityCepRole]: + """Gets the cep_role of this TapiConnectivityConnectionEndPoint. + + Defines the role of the CEP in the context of the connection spec. There may be many cep role - connection spec combinations for a particular CEP where each corresponds to a specific connection associated with the CEP. # noqa: E501 + + :return: The cep_role of this TapiConnectivityConnectionEndPoint. + :rtype: List[TapiConnectivityCepRole] + """ + return self._cep_role + + @cep_role.setter + def cep_role(self, cep_role: List[TapiConnectivityCepRole]): + """Sets the cep_role of this TapiConnectivityConnectionEndPoint. + + Defines the role of the CEP in the context of the connection spec. There may be many cep role - connection spec combinations for a particular CEP where each corresponds to a specific connection associated with the CEP. # noqa: E501 + + :param cep_role: The cep_role of this TapiConnectivityConnectionEndPoint. + :type cep_role: List[TapiConnectivityCepRole] + """ + + self._cep_role = cep_role + + @property + def aggregated_connection_end_point(self) -> List[TapiConnectivityConnectionEndPointRef]: + """Gets the aggregated_connection_end_point of this TapiConnectivityConnectionEndPoint. + + none # noqa: E501 + + :return: The aggregated_connection_end_point of this TapiConnectivityConnectionEndPoint. + :rtype: List[TapiConnectivityConnectionEndPointRef] + """ + return self._aggregated_connection_end_point + + @aggregated_connection_end_point.setter + def aggregated_connection_end_point(self, aggregated_connection_end_point: List[TapiConnectivityConnectionEndPointRef]): + """Sets the aggregated_connection_end_point of this TapiConnectivityConnectionEndPoint. + + none # noqa: E501 + + :param aggregated_connection_end_point: The aggregated_connection_end_point of this TapiConnectivityConnectionEndPoint. + :type aggregated_connection_end_point: List[TapiConnectivityConnectionEndPointRef] + """ + + self._aggregated_connection_end_point = aggregated_connection_end_point + + @property + def connection_port_direction(self) -> TapiCommonPortDirection: + """Gets the connection_port_direction of this TapiConnectivityConnectionEndPoint. + + + :return: The connection_port_direction of this TapiConnectivityConnectionEndPoint. + :rtype: TapiCommonPortDirection + """ + return self._connection_port_direction + + @connection_port_direction.setter + def connection_port_direction(self, connection_port_direction: TapiCommonPortDirection): + """Sets the connection_port_direction of this TapiConnectivityConnectionEndPoint. + + + :param connection_port_direction: The connection_port_direction of this TapiConnectivityConnectionEndPoint. + :type connection_port_direction: TapiCommonPortDirection + """ + + self._connection_port_direction = connection_port_direction diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..5427e65c842e923a7d0ee5980c3fc50b5476ff31 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point_ref.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectionEndPointRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node_edge_point_uuid: str=None, connection_end_point_uuid: str=None): # noqa: E501 + """TapiConnectivityConnectionEndPointRef - a model defined in Swagger + + :param node_edge_point_uuid: The node_edge_point_uuid of this TapiConnectivityConnectionEndPointRef. # noqa: E501 + :type node_edge_point_uuid: str + :param connection_end_point_uuid: The connection_end_point_uuid of this TapiConnectivityConnectionEndPointRef. # noqa: E501 + :type connection_end_point_uuid: str + """ + self.swagger_types = { + 'node_edge_point_uuid': str, + 'connection_end_point_uuid': str + } + + self.attribute_map = { + 'node_edge_point_uuid': 'node-edge-point-uuid', + 'connection_end_point_uuid': 'connection-end-point-uuid' + } + self._node_edge_point_uuid = node_edge_point_uuid + self._connection_end_point_uuid = connection_end_point_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectionEndPointRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectionEndPointRef of this TapiConnectivityConnectionEndPointRef. # noqa: E501 + :rtype: TapiConnectivityConnectionEndPointRef + """ + return util.deserialize_model(dikt, cls) + + @property + def node_edge_point_uuid(self) -> str: + """Gets the node_edge_point_uuid of this TapiConnectivityConnectionEndPointRef. + + none # noqa: E501 + + :return: The node_edge_point_uuid of this TapiConnectivityConnectionEndPointRef. + :rtype: str + """ + return self._node_edge_point_uuid + + @node_edge_point_uuid.setter + def node_edge_point_uuid(self, node_edge_point_uuid: str): + """Sets the node_edge_point_uuid of this TapiConnectivityConnectionEndPointRef. + + none # noqa: E501 + + :param node_edge_point_uuid: The node_edge_point_uuid of this TapiConnectivityConnectionEndPointRef. + :type node_edge_point_uuid: str + """ + + self._node_edge_point_uuid = node_edge_point_uuid + + @property + def connection_end_point_uuid(self) -> str: + """Gets the connection_end_point_uuid of this TapiConnectivityConnectionEndPointRef. + + none # noqa: E501 + + :return: The connection_end_point_uuid of this TapiConnectivityConnectionEndPointRef. + :rtype: str + """ + return self._connection_end_point_uuid + + @connection_end_point_uuid.setter + def connection_end_point_uuid(self, connection_end_point_uuid: str): + """Sets the connection_end_point_uuid of this TapiConnectivityConnectionEndPointRef. + + none # noqa: E501 + + :param connection_end_point_uuid: The connection_end_point_uuid of this TapiConnectivityConnectionEndPointRef. + :type connection_end_point_uuid: str + """ + + self._connection_end_point_uuid = connection_end_point_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..11fe0103da2145d4f07c1a0f0bd6ae951b214cd1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection_end_point_ref import TapiConnectivityConnectionEndPointRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectionEndPointRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_end_point: TapiConnectivityConnectionEndPointRef=None): # noqa: E501 + """TapiConnectivityConnectionEndPointRefWrapper - a model defined in Swagger + + :param connection_end_point: The connection_end_point of this TapiConnectivityConnectionEndPointRefWrapper. # noqa: E501 + :type connection_end_point: TapiConnectivityConnectionEndPointRef + """ + self.swagger_types = { + 'connection_end_point': TapiConnectivityConnectionEndPointRef + } + + self.attribute_map = { + 'connection_end_point': 'connection-end-point' + } + self._connection_end_point = connection_end_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectionEndPointRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectionEndPointRefWrapper of this TapiConnectivityConnectionEndPointRefWrapper. # noqa: E501 + :rtype: TapiConnectivityConnectionEndPointRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_end_point(self) -> TapiConnectivityConnectionEndPointRef: + """Gets the connection_end_point of this TapiConnectivityConnectionEndPointRefWrapper. + + + :return: The connection_end_point of this TapiConnectivityConnectionEndPointRefWrapper. + :rtype: TapiConnectivityConnectionEndPointRef + """ + return self._connection_end_point + + @connection_end_point.setter + def connection_end_point(self, connection_end_point: TapiConnectivityConnectionEndPointRef): + """Sets the connection_end_point of this TapiConnectivityConnectionEndPointRefWrapper. + + + :param connection_end_point: The connection_end_point of this TapiConnectivityConnectionEndPointRefWrapper. + :type connection_end_point: TapiConnectivityConnectionEndPointRef + """ + + self._connection_end_point = connection_end_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..fd2655643793a6400eae6a43b3175d226b031247 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_end_point_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection_end_point import TapiConnectivityConnectionEndPoint # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectionEndPointWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_end_point: TapiConnectivityConnectionEndPoint=None): # noqa: E501 + """TapiConnectivityConnectionEndPointWrapper - a model defined in Swagger + + :param connection_end_point: The connection_end_point of this TapiConnectivityConnectionEndPointWrapper. # noqa: E501 + :type connection_end_point: TapiConnectivityConnectionEndPoint + """ + self.swagger_types = { + 'connection_end_point': TapiConnectivityConnectionEndPoint + } + + self.attribute_map = { + 'connection_end_point': 'connection-end-point' + } + self._connection_end_point = connection_end_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectionEndPointWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectionEndPointWrapper of this TapiConnectivityConnectionEndPointWrapper. # noqa: E501 + :rtype: TapiConnectivityConnectionEndPointWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_end_point(self) -> TapiConnectivityConnectionEndPoint: + """Gets the connection_end_point of this TapiConnectivityConnectionEndPointWrapper. + + + :return: The connection_end_point of this TapiConnectivityConnectionEndPointWrapper. + :rtype: TapiConnectivityConnectionEndPoint + """ + return self._connection_end_point + + @connection_end_point.setter + def connection_end_point(self, connection_end_point: TapiConnectivityConnectionEndPoint): + """Sets the connection_end_point of this TapiConnectivityConnectionEndPointWrapper. + + + :param connection_end_point: The connection_end_point of this TapiConnectivityConnectionEndPointWrapper. + :type connection_end_point: TapiConnectivityConnectionEndPoint + """ + + self._connection_end_point = connection_end_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..80d2e90e40819da52be9d209cb6a68467eca88db --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_ref.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityConnectionRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_uuid: str=None): # noqa: E501 + """TapiConnectivityConnectionRef - a model defined in Swagger + + :param connection_uuid: The connection_uuid of this TapiConnectivityConnectionRef. # noqa: E501 + :type connection_uuid: str + """ + self.swagger_types = { + 'connection_uuid': str + } + + self.attribute_map = { + 'connection_uuid': 'connection-uuid' + } + self._connection_uuid = connection_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectionRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectionRef of this TapiConnectivityConnectionRef. # noqa: E501 + :rtype: TapiConnectivityConnectionRef + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_uuid(self) -> str: + """Gets the connection_uuid of this TapiConnectivityConnectionRef. + + none # noqa: E501 + + :return: The connection_uuid of this TapiConnectivityConnectionRef. + :rtype: str + """ + return self._connection_uuid + + @connection_uuid.setter + def connection_uuid(self, connection_uuid: str): + """Sets the connection_uuid of this TapiConnectivityConnectionRef. + + none # noqa: E501 + + :param connection_uuid: The connection_uuid of this TapiConnectivityConnectionRef. + :type connection_uuid: str + """ + + self._connection_uuid = connection_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..415bfb1db5ff8286a412d428fbe8ed6e8484b549 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection_ref import TapiConnectivityConnectionRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectionRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, lower_connection: TapiConnectivityConnectionRef=None): # noqa: E501 + """TapiConnectivityConnectionRefWrapper - a model defined in Swagger + + :param lower_connection: The lower_connection of this TapiConnectivityConnectionRefWrapper. # noqa: E501 + :type lower_connection: TapiConnectivityConnectionRef + """ + self.swagger_types = { + 'lower_connection': TapiConnectivityConnectionRef + } + + self.attribute_map = { + 'lower_connection': 'lower-connection' + } + self._lower_connection = lower_connection + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectionRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectionRefWrapper of this TapiConnectivityConnectionRefWrapper. # noqa: E501 + :rtype: TapiConnectivityConnectionRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def lower_connection(self) -> TapiConnectivityConnectionRef: + """Gets the lower_connection of this TapiConnectivityConnectionRefWrapper. + + + :return: The lower_connection of this TapiConnectivityConnectionRefWrapper. + :rtype: TapiConnectivityConnectionRef + """ + return self._lower_connection + + @lower_connection.setter + def lower_connection(self, lower_connection: TapiConnectivityConnectionRef): + """Sets the lower_connection of this TapiConnectivityConnectionRefWrapper. + + + :param lower_connection: The lower_connection of this TapiConnectivityConnectionRefWrapper. + :type lower_connection: TapiConnectivityConnectionRef + """ + + self._lower_connection = lower_connection diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_spec_reference.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_spec_reference.py new file mode 100644 index 0000000000000000000000000000000000000000..9e423d754a31e5df242595e35da2f0a62a1d2b76 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_spec_reference.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityConnectionSpecReference(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_spec_name: str=None, connection_spec_id: str=None): # noqa: E501 + """TapiConnectivityConnectionSpecReference - a model defined in Swagger + + :param connection_spec_name: The connection_spec_name of this TapiConnectivityConnectionSpecReference. # noqa: E501 + :type connection_spec_name: str + :param connection_spec_id: The connection_spec_id of this TapiConnectivityConnectionSpecReference. # noqa: E501 + :type connection_spec_id: str + """ + self.swagger_types = { + 'connection_spec_name': str, + 'connection_spec_id': str + } + + self.attribute_map = { + 'connection_spec_name': 'connection-spec-name', + 'connection_spec_id': 'connection-spec-id' + } + self._connection_spec_name = connection_spec_name + self._connection_spec_id = connection_spec_id + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectionSpecReference': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectionSpecReference of this TapiConnectivityConnectionSpecReference. # noqa: E501 + :rtype: TapiConnectivityConnectionSpecReference + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_spec_name(self) -> str: + """Gets the connection_spec_name of this TapiConnectivityConnectionSpecReference. + + The name of the connection spec. This can be used alone (with no spec reference) where there is only a paper spec. # noqa: E501 + + :return: The connection_spec_name of this TapiConnectivityConnectionSpecReference. + :rtype: str + """ + return self._connection_spec_name + + @connection_spec_name.setter + def connection_spec_name(self, connection_spec_name: str): + """Sets the connection_spec_name of this TapiConnectivityConnectionSpecReference. + + The name of the connection spec. This can be used alone (with no spec reference) where there is only a paper spec. # noqa: E501 + + :param connection_spec_name: The connection_spec_name of this TapiConnectivityConnectionSpecReference. + :type connection_spec_name: str + """ + + self._connection_spec_name = connection_spec_name + + @property + def connection_spec_id(self) -> str: + """Gets the connection_spec_id of this TapiConnectivityConnectionSpecReference. + + The reference to a formal spec. This reference need not be provided (e.g., where there is no formal machine interpretable spec for the type of connection). # noqa: E501 + + :return: The connection_spec_id of this TapiConnectivityConnectionSpecReference. + :rtype: str + """ + return self._connection_spec_id + + @connection_spec_id.setter + def connection_spec_id(self, connection_spec_id: str): + """Sets the connection_spec_id of this TapiConnectivityConnectionSpecReference. + + The reference to a formal spec. This reference need not be provided (e.g., where there is no formal machine interpretable spec for the type of connection). # noqa: E501 + + :param connection_spec_id: The connection_spec_id of this TapiConnectivityConnectionSpecReference. + :type connection_spec_id: str + """ + + self._connection_spec_id = connection_spec_id diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_spec_reference_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_spec_reference_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..877ef242826fd9a7ff5400c99b249f1f0c28d27b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_spec_reference_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection_spec_reference import TapiConnectivityConnectionSpecReference # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectionSpecReferenceWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_spec_reference: TapiConnectivityConnectionSpecReference=None): # noqa: E501 + """TapiConnectivityConnectionSpecReferenceWrapper - a model defined in Swagger + + :param connection_spec_reference: The connection_spec_reference of this TapiConnectivityConnectionSpecReferenceWrapper. # noqa: E501 + :type connection_spec_reference: TapiConnectivityConnectionSpecReference + """ + self.swagger_types = { + 'connection_spec_reference': TapiConnectivityConnectionSpecReference + } + + self.attribute_map = { + 'connection_spec_reference': 'connection-spec-reference' + } + self._connection_spec_reference = connection_spec_reference + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectionSpecReferenceWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectionSpecReferenceWrapper of this TapiConnectivityConnectionSpecReferenceWrapper. # noqa: E501 + :rtype: TapiConnectivityConnectionSpecReferenceWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_spec_reference(self) -> TapiConnectivityConnectionSpecReference: + """Gets the connection_spec_reference of this TapiConnectivityConnectionSpecReferenceWrapper. + + + :return: The connection_spec_reference of this TapiConnectivityConnectionSpecReferenceWrapper. + :rtype: TapiConnectivityConnectionSpecReference + """ + return self._connection_spec_reference + + @connection_spec_reference.setter + def connection_spec_reference(self, connection_spec_reference: TapiConnectivityConnectionSpecReference): + """Sets the connection_spec_reference of this TapiConnectivityConnectionSpecReferenceWrapper. + + + :param connection_spec_reference: The connection_spec_reference of this TapiConnectivityConnectionSpecReferenceWrapper. + :type connection_spec_reference: TapiConnectivityConnectionSpecReference + """ + + self._connection_spec_reference = connection_spec_reference diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..fbdf9c64bab9a5cda5335ba481b044d75417f283 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connection_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection import TapiConnectivityConnection # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectionWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection: TapiConnectivityConnection=None): # noqa: E501 + """TapiConnectivityConnectionWrapper - a model defined in Swagger + + :param connection: The connection of this TapiConnectivityConnectionWrapper. # noqa: E501 + :type connection: TapiConnectivityConnection + """ + self.swagger_types = { + 'connection': TapiConnectivityConnection + } + + self.attribute_map = { + 'connection': 'connection' + } + self._connection = connection + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectionWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectionWrapper of this TapiConnectivityConnectionWrapper. # noqa: E501 + :rtype: TapiConnectivityConnectionWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def connection(self) -> TapiConnectivityConnection: + """Gets the connection of this TapiConnectivityConnectionWrapper. + + + :return: The connection of this TapiConnectivityConnectionWrapper. + :rtype: TapiConnectivityConnection + """ + return self._connection + + @connection.setter + def connection(self, connection: TapiConnectivityConnection): + """Sets the connection of this TapiConnectivityConnectionWrapper. + + + :param connection: The connection of this TapiConnectivityConnectionWrapper. + :type connection: TapiConnectivityConnection + """ + + self._connection = connection diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_constraint.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_constraint.py new file mode 100644 index 0000000000000000000000000000000000000000..bd3a88a780b8b533e280bd813bf6910cb6269c4a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_constraint.py @@ -0,0 +1,310 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_forwarding_direction import TapiCommonForwardingDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_time_range import TapiCommonTimeRange # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connectivity_service_ref import TapiConnectivityConnectivityServiceRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_service_type import TapiConnectivityServiceType # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectivityConstraint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service_layer: TapiCommonLayerProtocolName=None, schedule: TapiCommonTimeRange=None, connectivity_direction: TapiCommonForwardingDirection=None, requested_capacity: TapiCommonCapacity=None, diversity_exclusion: List[TapiConnectivityConnectivityServiceRef]=None, connection_inclusion: List[str]=None, service_level: str=None, service_type: TapiConnectivityServiceType=None, connection_exclusion: List[str]=None, coroute_inclusion: TapiConnectivityConnectivityServiceRef=None): # noqa: E501 + """TapiConnectivityConnectivityConstraint - a model defined in Swagger + + :param service_layer: The service_layer of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :type service_layer: TapiCommonLayerProtocolName + :param schedule: The schedule of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :type schedule: TapiCommonTimeRange + :param connectivity_direction: The connectivity_direction of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :type connectivity_direction: TapiCommonForwardingDirection + :param requested_capacity: The requested_capacity of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :type requested_capacity: TapiCommonCapacity + :param diversity_exclusion: The diversity_exclusion of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :type diversity_exclusion: List[TapiConnectivityConnectivityServiceRef] + :param connection_inclusion: The connection_inclusion of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :type connection_inclusion: List[str] + :param service_level: The service_level of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :type service_level: str + :param service_type: The service_type of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :type service_type: TapiConnectivityServiceType + :param connection_exclusion: The connection_exclusion of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :type connection_exclusion: List[str] + :param coroute_inclusion: The coroute_inclusion of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :type coroute_inclusion: TapiConnectivityConnectivityServiceRef + """ + self.swagger_types = { + 'service_layer': TapiCommonLayerProtocolName, + 'schedule': TapiCommonTimeRange, + 'connectivity_direction': TapiCommonForwardingDirection, + 'requested_capacity': TapiCommonCapacity, + 'diversity_exclusion': List[TapiConnectivityConnectivityServiceRef], + 'connection_inclusion': List[str], + 'service_level': str, + 'service_type': TapiConnectivityServiceType, + 'connection_exclusion': List[str], + 'coroute_inclusion': TapiConnectivityConnectivityServiceRef + } + + self.attribute_map = { + 'service_layer': 'service-layer', + 'schedule': 'schedule', + 'connectivity_direction': 'connectivity-direction', + 'requested_capacity': 'requested-capacity', + 'diversity_exclusion': 'diversity-exclusion', + 'connection_inclusion': 'connection-inclusion', + 'service_level': 'service-level', + 'service_type': 'service-type', + 'connection_exclusion': 'connection-exclusion', + 'coroute_inclusion': 'coroute-inclusion' + } + self._service_layer = service_layer + self._schedule = schedule + self._connectivity_direction = connectivity_direction + self._requested_capacity = requested_capacity + self._diversity_exclusion = diversity_exclusion + self._connection_inclusion = connection_inclusion + self._service_level = service_level + self._service_type = service_type + self._connection_exclusion = connection_exclusion + self._coroute_inclusion = coroute_inclusion + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityConstraint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityConstraint of this TapiConnectivityConnectivityConstraint. # noqa: E501 + :rtype: TapiConnectivityConnectivityConstraint + """ + return util.deserialize_model(dikt, cls) + + @property + def service_layer(self) -> TapiCommonLayerProtocolName: + """Gets the service_layer of this TapiConnectivityConnectivityConstraint. + + + :return: The service_layer of this TapiConnectivityConnectivityConstraint. + :rtype: TapiCommonLayerProtocolName + """ + return self._service_layer + + @service_layer.setter + def service_layer(self, service_layer: TapiCommonLayerProtocolName): + """Sets the service_layer of this TapiConnectivityConnectivityConstraint. + + + :param service_layer: The service_layer of this TapiConnectivityConnectivityConstraint. + :type service_layer: TapiCommonLayerProtocolName + """ + + self._service_layer = service_layer + + @property + def schedule(self) -> TapiCommonTimeRange: + """Gets the schedule of this TapiConnectivityConnectivityConstraint. + + + :return: The schedule of this TapiConnectivityConnectivityConstraint. + :rtype: TapiCommonTimeRange + """ + return self._schedule + + @schedule.setter + def schedule(self, schedule: TapiCommonTimeRange): + """Sets the schedule of this TapiConnectivityConnectivityConstraint. + + + :param schedule: The schedule of this TapiConnectivityConnectivityConstraint. + :type schedule: TapiCommonTimeRange + """ + + self._schedule = schedule + + @property + def connectivity_direction(self) -> TapiCommonForwardingDirection: + """Gets the connectivity_direction of this TapiConnectivityConnectivityConstraint. + + + :return: The connectivity_direction of this TapiConnectivityConnectivityConstraint. + :rtype: TapiCommonForwardingDirection + """ + return self._connectivity_direction + + @connectivity_direction.setter + def connectivity_direction(self, connectivity_direction: TapiCommonForwardingDirection): + """Sets the connectivity_direction of this TapiConnectivityConnectivityConstraint. + + + :param connectivity_direction: The connectivity_direction of this TapiConnectivityConnectivityConstraint. + :type connectivity_direction: TapiCommonForwardingDirection + """ + + self._connectivity_direction = connectivity_direction + + @property + def requested_capacity(self) -> TapiCommonCapacity: + """Gets the requested_capacity of this TapiConnectivityConnectivityConstraint. + + + :return: The requested_capacity of this TapiConnectivityConnectivityConstraint. + :rtype: TapiCommonCapacity + """ + return self._requested_capacity + + @requested_capacity.setter + def requested_capacity(self, requested_capacity: TapiCommonCapacity): + """Sets the requested_capacity of this TapiConnectivityConnectivityConstraint. + + + :param requested_capacity: The requested_capacity of this TapiConnectivityConnectivityConstraint. + :type requested_capacity: TapiCommonCapacity + """ + + self._requested_capacity = requested_capacity + + @property + def diversity_exclusion(self) -> List[TapiConnectivityConnectivityServiceRef]: + """Gets the diversity_exclusion of this TapiConnectivityConnectivityConstraint. + + none # noqa: E501 + + :return: The diversity_exclusion of this TapiConnectivityConnectivityConstraint. + :rtype: List[TapiConnectivityConnectivityServiceRef] + """ + return self._diversity_exclusion + + @diversity_exclusion.setter + def diversity_exclusion(self, diversity_exclusion: List[TapiConnectivityConnectivityServiceRef]): + """Sets the diversity_exclusion of this TapiConnectivityConnectivityConstraint. + + none # noqa: E501 + + :param diversity_exclusion: The diversity_exclusion of this TapiConnectivityConnectivityConstraint. + :type diversity_exclusion: List[TapiConnectivityConnectivityServiceRef] + """ + + self._diversity_exclusion = diversity_exclusion + + @property + def connection_inclusion(self) -> List[str]: + """Gets the connection_inclusion of this TapiConnectivityConnectivityConstraint. + + A ConnectivityService may use one or more existing Connections. A common traditional strategy is to set up “stranded” connectivity in the core of the network as “express channels” (this is essentially a serial compound link, but can be treated as simple connections) A connection inclusion capability allows for adoption of a discovered Connections. A ConnectivityService is requested with a connection inclusion constraint that identifies a connection (or chain of connections) that is bounded by CEPs that each belong to a NEP that references a SIP that is referenced by a CSEP of the ConnectivityService such that all CSEPs are satisfied by CEPs of the existing Connection. will allow discovered Connections with no stated intent to be associated with an intent via the ConnectivityService. # noqa: E501 + + :return: The connection_inclusion of this TapiConnectivityConnectivityConstraint. + :rtype: List[str] + """ + return self._connection_inclusion + + @connection_inclusion.setter + def connection_inclusion(self, connection_inclusion: List[str]): + """Sets the connection_inclusion of this TapiConnectivityConnectivityConstraint. + + A ConnectivityService may use one or more existing Connections. A common traditional strategy is to set up “stranded” connectivity in the core of the network as “express channels” (this is essentially a serial compound link, but can be treated as simple connections) A connection inclusion capability allows for adoption of a discovered Connections. A ConnectivityService is requested with a connection inclusion constraint that identifies a connection (or chain of connections) that is bounded by CEPs that each belong to a NEP that references a SIP that is referenced by a CSEP of the ConnectivityService such that all CSEPs are satisfied by CEPs of the existing Connection. will allow discovered Connections with no stated intent to be associated with an intent via the ConnectivityService. # noqa: E501 + + :param connection_inclusion: The connection_inclusion of this TapiConnectivityConnectivityConstraint. + :type connection_inclusion: List[str] + """ + + self._connection_inclusion = connection_inclusion + + @property + def service_level(self) -> str: + """Gets the service_level of this TapiConnectivityConnectivityConstraint. + + An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability # noqa: E501 + + :return: The service_level of this TapiConnectivityConnectivityConstraint. + :rtype: str + """ + return self._service_level + + @service_level.setter + def service_level(self, service_level: str): + """Sets the service_level of this TapiConnectivityConnectivityConstraint. + + An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability # noqa: E501 + + :param service_level: The service_level of this TapiConnectivityConnectivityConstraint. + :type service_level: str + """ + + self._service_level = service_level + + @property + def service_type(self) -> TapiConnectivityServiceType: + """Gets the service_type of this TapiConnectivityConnectivityConstraint. + + + :return: The service_type of this TapiConnectivityConnectivityConstraint. + :rtype: TapiConnectivityServiceType + """ + return self._service_type + + @service_type.setter + def service_type(self, service_type: TapiConnectivityServiceType): + """Sets the service_type of this TapiConnectivityConnectivityConstraint. + + + :param service_type: The service_type of this TapiConnectivityConnectivityConstraint. + :type service_type: TapiConnectivityServiceType + """ + + self._service_type = service_type + + @property + def connection_exclusion(self) -> List[str]: + """Gets the connection_exclusion of this TapiConnectivityConnectivityConstraint. + + none # noqa: E501 + + :return: The connection_exclusion of this TapiConnectivityConnectivityConstraint. + :rtype: List[str] + """ + return self._connection_exclusion + + @connection_exclusion.setter + def connection_exclusion(self, connection_exclusion: List[str]): + """Sets the connection_exclusion of this TapiConnectivityConnectivityConstraint. + + none # noqa: E501 + + :param connection_exclusion: The connection_exclusion of this TapiConnectivityConnectivityConstraint. + :type connection_exclusion: List[str] + """ + + self._connection_exclusion = connection_exclusion + + @property + def coroute_inclusion(self) -> TapiConnectivityConnectivityServiceRef: + """Gets the coroute_inclusion of this TapiConnectivityConnectivityConstraint. + + + :return: The coroute_inclusion of this TapiConnectivityConnectivityConstraint. + :rtype: TapiConnectivityConnectivityServiceRef + """ + return self._coroute_inclusion + + @coroute_inclusion.setter + def coroute_inclusion(self, coroute_inclusion: TapiConnectivityConnectivityServiceRef): + """Sets the coroute_inclusion of this TapiConnectivityConnectivityConstraint. + + + :param coroute_inclusion: The coroute_inclusion of this TapiConnectivityConnectivityConstraint. + :type coroute_inclusion: TapiConnectivityConnectivityServiceRef + """ + + self._coroute_inclusion = coroute_inclusion diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_context.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_context.py new file mode 100644 index 0000000000000000000000000000000000000000..2d2bc5119df6540d5264a956465e442669e1a5d2 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_context.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection import TapiConnectivityConnection # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connectivity_service import TapiConnectivityConnectivityService # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectivityContext(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connectivity_service: List[TapiConnectivityConnectivityService]=None, connection: List[TapiConnectivityConnection]=None): # noqa: E501 + """TapiConnectivityConnectivityContext - a model defined in Swagger + + :param connectivity_service: The connectivity_service of this TapiConnectivityConnectivityContext. # noqa: E501 + :type connectivity_service: List[TapiConnectivityConnectivityService] + :param connection: The connection of this TapiConnectivityConnectivityContext. # noqa: E501 + :type connection: List[TapiConnectivityConnection] + """ + self.swagger_types = { + 'connectivity_service': List[TapiConnectivityConnectivityService], + 'connection': List[TapiConnectivityConnection] + } + + self.attribute_map = { + 'connectivity_service': 'connectivity-service', + 'connection': 'connection' + } + self._connectivity_service = connectivity_service + self._connection = connection + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityContext': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityContext of this TapiConnectivityConnectivityContext. # noqa: E501 + :rtype: TapiConnectivityConnectivityContext + """ + return util.deserialize_model(dikt, cls) + + @property + def connectivity_service(self) -> List[TapiConnectivityConnectivityService]: + """Gets the connectivity_service of this TapiConnectivityConnectivityContext. + + none # noqa: E501 + + :return: The connectivity_service of this TapiConnectivityConnectivityContext. + :rtype: List[TapiConnectivityConnectivityService] + """ + return self._connectivity_service + + @connectivity_service.setter + def connectivity_service(self, connectivity_service: List[TapiConnectivityConnectivityService]): + """Sets the connectivity_service of this TapiConnectivityConnectivityContext. + + none # noqa: E501 + + :param connectivity_service: The connectivity_service of this TapiConnectivityConnectivityContext. + :type connectivity_service: List[TapiConnectivityConnectivityService] + """ + + self._connectivity_service = connectivity_service + + @property + def connection(self) -> List[TapiConnectivityConnection]: + """Gets the connection of this TapiConnectivityConnectivityContext. + + none # noqa: E501 + + :return: The connection of this TapiConnectivityConnectivityContext. + :rtype: List[TapiConnectivityConnection] + """ + return self._connection + + @connection.setter + def connection(self, connection: List[TapiConnectivityConnection]): + """Sets the connection of this TapiConnectivityConnectivityContext. + + none # noqa: E501 + + :param connection: The connection of this TapiConnectivityConnectivityContext. + :type connection: List[TapiConnectivityConnection] + """ + + self._connection = connection diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_context_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_context_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..f13e4ceddaa31a405eaa0e0b4e1d028bf0d7166a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_context_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_context import TapiConnectivityConnectivityContext # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectivityContextWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, tapi_connectivityconnectivity_context: TapiConnectivityConnectivityContext=None): # noqa: E501 + """TapiConnectivityConnectivityContextWrapper - a model defined in Swagger + + :param tapi_connectivityconnectivity_context: The tapi_connectivityconnectivity_context of this TapiConnectivityConnectivityContextWrapper. # noqa: E501 + :type tapi_connectivityconnectivity_context: TapiConnectivityConnectivityContext + """ + self.swagger_types = { + 'tapi_connectivityconnectivity_context': TapiConnectivityConnectivityContext + } + + self.attribute_map = { + 'tapi_connectivityconnectivity_context': 'tapi-connectivity:connectivity-context' + } + self._tapi_connectivityconnectivity_context = tapi_connectivityconnectivity_context + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityContextWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityContextWrapper of this TapiConnectivityConnectivityContextWrapper. # noqa: E501 + :rtype: TapiConnectivityConnectivityContextWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def tapi_connectivityconnectivity_context(self) -> TapiConnectivityConnectivityContext: + """Gets the tapi_connectivityconnectivity_context of this TapiConnectivityConnectivityContextWrapper. + + + :return: The tapi_connectivityconnectivity_context of this TapiConnectivityConnectivityContextWrapper. + :rtype: TapiConnectivityConnectivityContext + """ + return self._tapi_connectivityconnectivity_context + + @tapi_connectivityconnectivity_context.setter + def tapi_connectivityconnectivity_context(self, tapi_connectivityconnectivity_context: TapiConnectivityConnectivityContext): + """Sets the tapi_connectivityconnectivity_context of this TapiConnectivityConnectivityContextWrapper. + + + :param tapi_connectivityconnectivity_context: The tapi_connectivityconnectivity_context of this TapiConnectivityConnectivityContextWrapper. + :type tapi_connectivityconnectivity_context: TapiConnectivityConnectivityContext + """ + + self._tapi_connectivityconnectivity_context = tapi_connectivityconnectivity_context diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service.py new file mode 100644 index 0000000000000000000000000000000000000000..7d913435c2bd40b8bf5fbf9e652c991cd5f8ee4f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service.py @@ -0,0 +1,1343 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_admin_state_pac import TapiCommonAdminStatePac # noqa: F401,E501 +from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_forwarding_direction import TapiCommonForwardingDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server.models.tapi_common_time_range import TapiCommonTimeRange # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connection_ref import TapiConnectivityConnectionRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connectivity_constraint import TapiConnectivityConnectivityConstraint # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connectivity_service_end_point import TapiConnectivityConnectivityServiceEndPoint # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connectivity_service_ref import TapiConnectivityConnectivityServiceRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_coordinate_type import TapiConnectivityCoordinateType # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_resilience_constraint import TapiConnectivityResilienceConstraint # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_reversion_mode import TapiConnectivityReversionMode # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_service_type import TapiConnectivityServiceType # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_diversity_policy import TapiPathComputationDiversityPolicy # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_route_objective_function import TapiPathComputationRouteObjectiveFunction # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_routing_constraint import TapiPathComputationRoutingConstraint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_topology_constraint import TapiPathComputationTopologyConstraint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_value_or_priority import TapiPathComputationValueOrPriority # noqa: F401,E501 +from tapi_server.models.tapi_topology_cost_characteristic import TapiTopologyCostCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_resilience_type import TapiTopologyResilienceType # noqa: F401,E501 +from tapi_server.models.tapi_topology_risk_characteristic import TapiTopologyRiskCharacteristic # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectivityService(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None, service_layer: TapiCommonLayerProtocolName=None, schedule: TapiCommonTimeRange=None, connectivity_direction: TapiCommonForwardingDirection=None, requested_capacity: TapiCommonCapacity=None, diversity_exclusion: List[TapiConnectivityConnectivityServiceRef]=None, connection_inclusion: List[str]=None, service_level: str=None, service_type: TapiConnectivityServiceType=None, connection_exclusion: List[str]=None, coroute_inclusion: TapiConnectivityConnectivityServiceRef=None, is_lock_out: bool=False, max_switch_times: int=None, restoration_coordinate_type: TapiConnectivityCoordinateType=None, is_coordinated_switching_both_ends: bool=False, hold_off_time: int=None, is_frozen: bool=False, wait_to_revert_time: int=15, resilience_type: TapiTopologyResilienceType=None, preferred_restoration_layer: List[TapiCommonLayerProtocolName]=None, restore_priority: int=None, reversion_mode: TapiConnectivityReversionMode=None, is_exclusive: bool=True, max_allowed_cost: TapiPathComputationValueOrPriority=None, diversity_policy: TapiPathComputationDiversityPolicy=None, route_objective_function: TapiPathComputationRouteObjectiveFunction=None, cost_characteristic: List[TapiTopologyCostCharacteristic]=None, max_allowed_hops: TapiPathComputationValueOrPriority=None, max_allowed_delay: TapiPathComputationValueOrPriority=None, latency_characteristic: List[TapiTopologyLatencyCharacteristic]=None, risk_diversity_characteristic: List[TapiTopologyRiskCharacteristic]=None, route_direction: TapiCommonForwardingDirection=None, include_node: List[str]=None, exclude_link: List[str]=None, avoid_topology: List[str]=None, exclude_path: List[str]=None, include_link: List[str]=None, preferred_transport_layer: List[TapiCommonLayerProtocolName]=None, exclude_node: List[str]=None, include_topology: List[str]=None, include_path: List[str]=None, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, administrative_state: TapiCommonAdministrativeState=None, end_point: List[TapiConnectivityConnectivityServiceEndPoint]=None, connection: List[TapiConnectivityConnectionRef]=None): # noqa: E501 + """TapiConnectivityConnectivityService - a model defined in Swagger + + :param name: The name of this TapiConnectivityConnectivityService. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiConnectivityConnectivityService. # noqa: E501 + :type uuid: str + :param service_layer: The service_layer of this TapiConnectivityConnectivityService. # noqa: E501 + :type service_layer: TapiCommonLayerProtocolName + :param schedule: The schedule of this TapiConnectivityConnectivityService. # noqa: E501 + :type schedule: TapiCommonTimeRange + :param connectivity_direction: The connectivity_direction of this TapiConnectivityConnectivityService. # noqa: E501 + :type connectivity_direction: TapiCommonForwardingDirection + :param requested_capacity: The requested_capacity of this TapiConnectivityConnectivityService. # noqa: E501 + :type requested_capacity: TapiCommonCapacity + :param diversity_exclusion: The diversity_exclusion of this TapiConnectivityConnectivityService. # noqa: E501 + :type diversity_exclusion: List[TapiConnectivityConnectivityServiceRef] + :param connection_inclusion: The connection_inclusion of this TapiConnectivityConnectivityService. # noqa: E501 + :type connection_inclusion: List[str] + :param service_level: The service_level of this TapiConnectivityConnectivityService. # noqa: E501 + :type service_level: str + :param service_type: The service_type of this TapiConnectivityConnectivityService. # noqa: E501 + :type service_type: TapiConnectivityServiceType + :param connection_exclusion: The connection_exclusion of this TapiConnectivityConnectivityService. # noqa: E501 + :type connection_exclusion: List[str] + :param coroute_inclusion: The coroute_inclusion of this TapiConnectivityConnectivityService. # noqa: E501 + :type coroute_inclusion: TapiConnectivityConnectivityServiceRef + :param is_lock_out: The is_lock_out of this TapiConnectivityConnectivityService. # noqa: E501 + :type is_lock_out: bool + :param max_switch_times: The max_switch_times of this TapiConnectivityConnectivityService. # noqa: E501 + :type max_switch_times: int + :param restoration_coordinate_type: The restoration_coordinate_type of this TapiConnectivityConnectivityService. # noqa: E501 + :type restoration_coordinate_type: TapiConnectivityCoordinateType + :param is_coordinated_switching_both_ends: The is_coordinated_switching_both_ends of this TapiConnectivityConnectivityService. # noqa: E501 + :type is_coordinated_switching_both_ends: bool + :param hold_off_time: The hold_off_time of this TapiConnectivityConnectivityService. # noqa: E501 + :type hold_off_time: int + :param is_frozen: The is_frozen of this TapiConnectivityConnectivityService. # noqa: E501 + :type is_frozen: bool + :param wait_to_revert_time: The wait_to_revert_time of this TapiConnectivityConnectivityService. # noqa: E501 + :type wait_to_revert_time: int + :param resilience_type: The resilience_type of this TapiConnectivityConnectivityService. # noqa: E501 + :type resilience_type: TapiTopologyResilienceType + :param preferred_restoration_layer: The preferred_restoration_layer of this TapiConnectivityConnectivityService. # noqa: E501 + :type preferred_restoration_layer: List[TapiCommonLayerProtocolName] + :param restore_priority: The restore_priority of this TapiConnectivityConnectivityService. # noqa: E501 + :type restore_priority: int + :param reversion_mode: The reversion_mode of this TapiConnectivityConnectivityService. # noqa: E501 + :type reversion_mode: TapiConnectivityReversionMode + :param is_exclusive: The is_exclusive of this TapiConnectivityConnectivityService. # noqa: E501 + :type is_exclusive: bool + :param max_allowed_cost: The max_allowed_cost of this TapiConnectivityConnectivityService. # noqa: E501 + :type max_allowed_cost: TapiPathComputationValueOrPriority + :param diversity_policy: The diversity_policy of this TapiConnectivityConnectivityService. # noqa: E501 + :type diversity_policy: TapiPathComputationDiversityPolicy + :param route_objective_function: The route_objective_function of this TapiConnectivityConnectivityService. # noqa: E501 + :type route_objective_function: TapiPathComputationRouteObjectiveFunction + :param cost_characteristic: The cost_characteristic of this TapiConnectivityConnectivityService. # noqa: E501 + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + :param max_allowed_hops: The max_allowed_hops of this TapiConnectivityConnectivityService. # noqa: E501 + :type max_allowed_hops: TapiPathComputationValueOrPriority + :param max_allowed_delay: The max_allowed_delay of this TapiConnectivityConnectivityService. # noqa: E501 + :type max_allowed_delay: TapiPathComputationValueOrPriority + :param latency_characteristic: The latency_characteristic of this TapiConnectivityConnectivityService. # noqa: E501 + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + :param risk_diversity_characteristic: The risk_diversity_characteristic of this TapiConnectivityConnectivityService. # noqa: E501 + :type risk_diversity_characteristic: List[TapiTopologyRiskCharacteristic] + :param route_direction: The route_direction of this TapiConnectivityConnectivityService. # noqa: E501 + :type route_direction: TapiCommonForwardingDirection + :param include_node: The include_node of this TapiConnectivityConnectivityService. # noqa: E501 + :type include_node: List[str] + :param exclude_link: The exclude_link of this TapiConnectivityConnectivityService. # noqa: E501 + :type exclude_link: List[str] + :param avoid_topology: The avoid_topology of this TapiConnectivityConnectivityService. # noqa: E501 + :type avoid_topology: List[str] + :param exclude_path: The exclude_path of this TapiConnectivityConnectivityService. # noqa: E501 + :type exclude_path: List[str] + :param include_link: The include_link of this TapiConnectivityConnectivityService. # noqa: E501 + :type include_link: List[str] + :param preferred_transport_layer: The preferred_transport_layer of this TapiConnectivityConnectivityService. # noqa: E501 + :type preferred_transport_layer: List[TapiCommonLayerProtocolName] + :param exclude_node: The exclude_node of this TapiConnectivityConnectivityService. # noqa: E501 + :type exclude_node: List[str] + :param include_topology: The include_topology of this TapiConnectivityConnectivityService. # noqa: E501 + :type include_topology: List[str] + :param include_path: The include_path of this TapiConnectivityConnectivityService. # noqa: E501 + :type include_path: List[str] + :param operational_state: The operational_state of this TapiConnectivityConnectivityService. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiConnectivityConnectivityService. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + :param administrative_state: The administrative_state of this TapiConnectivityConnectivityService. # noqa: E501 + :type administrative_state: TapiCommonAdministrativeState + :param end_point: The end_point of this TapiConnectivityConnectivityService. # noqa: E501 + :type end_point: List[TapiConnectivityConnectivityServiceEndPoint] + :param connection: The connection of this TapiConnectivityConnectivityService. # noqa: E501 + :type connection: List[TapiConnectivityConnectionRef] + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'service_layer': TapiCommonLayerProtocolName, + 'schedule': TapiCommonTimeRange, + 'connectivity_direction': TapiCommonForwardingDirection, + 'requested_capacity': TapiCommonCapacity, + 'diversity_exclusion': List[TapiConnectivityConnectivityServiceRef], + 'connection_inclusion': List[str], + 'service_level': str, + 'service_type': TapiConnectivityServiceType, + 'connection_exclusion': List[str], + 'coroute_inclusion': TapiConnectivityConnectivityServiceRef, + 'is_lock_out': bool, + 'max_switch_times': int, + 'restoration_coordinate_type': TapiConnectivityCoordinateType, + 'is_coordinated_switching_both_ends': bool, + 'hold_off_time': int, + 'is_frozen': bool, + 'wait_to_revert_time': int, + 'resilience_type': TapiTopologyResilienceType, + 'preferred_restoration_layer': List[TapiCommonLayerProtocolName], + 'restore_priority': int, + 'reversion_mode': TapiConnectivityReversionMode, + 'is_exclusive': bool, + 'max_allowed_cost': TapiPathComputationValueOrPriority, + 'diversity_policy': TapiPathComputationDiversityPolicy, + 'route_objective_function': TapiPathComputationRouteObjectiveFunction, + 'cost_characteristic': List[TapiTopologyCostCharacteristic], + 'max_allowed_hops': TapiPathComputationValueOrPriority, + 'max_allowed_delay': TapiPathComputationValueOrPriority, + 'latency_characteristic': List[TapiTopologyLatencyCharacteristic], + 'risk_diversity_characteristic': List[TapiTopologyRiskCharacteristic], + 'route_direction': TapiCommonForwardingDirection, + 'include_node': List[str], + 'exclude_link': List[str], + 'avoid_topology': List[str], + 'exclude_path': List[str], + 'include_link': List[str], + 'preferred_transport_layer': List[TapiCommonLayerProtocolName], + 'exclude_node': List[str], + 'include_topology': List[str], + 'include_path': List[str], + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState, + 'administrative_state': TapiCommonAdministrativeState, + 'end_point': List[TapiConnectivityConnectivityServiceEndPoint], + 'connection': List[TapiConnectivityConnectionRef] + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid', + 'service_layer': 'service-layer', + 'schedule': 'schedule', + 'connectivity_direction': 'connectivity-direction', + 'requested_capacity': 'requested-capacity', + 'diversity_exclusion': 'diversity-exclusion', + 'connection_inclusion': 'connection-inclusion', + 'service_level': 'service-level', + 'service_type': 'service-type', + 'connection_exclusion': 'connection-exclusion', + 'coroute_inclusion': 'coroute-inclusion', + 'is_lock_out': 'is-lock-out', + 'max_switch_times': 'max-switch-times', + 'restoration_coordinate_type': 'restoration-coordinate-type', + 'is_coordinated_switching_both_ends': 'is-coordinated-switching-both-ends', + 'hold_off_time': 'hold-off-time', + 'is_frozen': 'is-frozen', + 'wait_to_revert_time': 'wait-to-revert-time', + 'resilience_type': 'resilience-type', + 'preferred_restoration_layer': 'preferred-restoration-layer', + 'restore_priority': 'restore-priority', + 'reversion_mode': 'reversion-mode', + 'is_exclusive': 'is-exclusive', + 'max_allowed_cost': 'max-allowed-cost', + 'diversity_policy': 'diversity-policy', + 'route_objective_function': 'route-objective-function', + 'cost_characteristic': 'cost-characteristic', + 'max_allowed_hops': 'max-allowed-hops', + 'max_allowed_delay': 'max-allowed-delay', + 'latency_characteristic': 'latency-characteristic', + 'risk_diversity_characteristic': 'risk-diversity-characteristic', + 'route_direction': 'route-direction', + 'include_node': 'include-node', + 'exclude_link': 'exclude-link', + 'avoid_topology': 'avoid-topology', + 'exclude_path': 'exclude-path', + 'include_link': 'include-link', + 'preferred_transport_layer': 'preferred-transport-layer', + 'exclude_node': 'exclude-node', + 'include_topology': 'include-topology', + 'include_path': 'include-path', + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state', + 'administrative_state': 'administrative-state', + 'end_point': 'end-point', + 'connection': 'connection' + } + self._name = name + self._uuid = uuid + self._service_layer = service_layer + self._schedule = schedule + self._connectivity_direction = connectivity_direction + self._requested_capacity = requested_capacity + self._diversity_exclusion = diversity_exclusion + self._connection_inclusion = connection_inclusion + self._service_level = service_level + self._service_type = service_type + self._connection_exclusion = connection_exclusion + self._coroute_inclusion = coroute_inclusion + self._is_lock_out = is_lock_out + self._max_switch_times = max_switch_times + self._restoration_coordinate_type = restoration_coordinate_type + self._is_coordinated_switching_both_ends = is_coordinated_switching_both_ends + self._hold_off_time = hold_off_time + self._is_frozen = is_frozen + self._wait_to_revert_time = wait_to_revert_time + self._resilience_type = resilience_type + self._preferred_restoration_layer = preferred_restoration_layer + self._restore_priority = restore_priority + self._reversion_mode = reversion_mode + self._is_exclusive = is_exclusive + self._max_allowed_cost = max_allowed_cost + self._diversity_policy = diversity_policy + self._route_objective_function = route_objective_function + self._cost_characteristic = cost_characteristic + self._max_allowed_hops = max_allowed_hops + self._max_allowed_delay = max_allowed_delay + self._latency_characteristic = latency_characteristic + self._risk_diversity_characteristic = risk_diversity_characteristic + self._route_direction = route_direction + self._include_node = include_node + self._exclude_link = exclude_link + self._avoid_topology = avoid_topology + self._exclude_path = exclude_path + self._include_link = include_link + self._preferred_transport_layer = preferred_transport_layer + self._exclude_node = exclude_node + self._include_topology = include_topology + self._include_path = include_path + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + self._administrative_state = administrative_state + self._end_point = end_point + self._connection = connection + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityService': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityService of this TapiConnectivityConnectivityService. # noqa: E501 + :rtype: TapiConnectivityConnectivityService + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiConnectivityConnectivityService. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiConnectivityConnectivityService. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiConnectivityConnectivityService. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiConnectivityConnectivityService. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiConnectivityConnectivityService. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiConnectivityConnectivityService. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiConnectivityConnectivityService. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiConnectivityConnectivityService. + :type uuid: str + """ + + self._uuid = uuid + + @property + def service_layer(self) -> TapiCommonLayerProtocolName: + """Gets the service_layer of this TapiConnectivityConnectivityService. + + + :return: The service_layer of this TapiConnectivityConnectivityService. + :rtype: TapiCommonLayerProtocolName + """ + return self._service_layer + + @service_layer.setter + def service_layer(self, service_layer: TapiCommonLayerProtocolName): + """Sets the service_layer of this TapiConnectivityConnectivityService. + + + :param service_layer: The service_layer of this TapiConnectivityConnectivityService. + :type service_layer: TapiCommonLayerProtocolName + """ + + self._service_layer = service_layer + + @property + def schedule(self) -> TapiCommonTimeRange: + """Gets the schedule of this TapiConnectivityConnectivityService. + + + :return: The schedule of this TapiConnectivityConnectivityService. + :rtype: TapiCommonTimeRange + """ + return self._schedule + + @schedule.setter + def schedule(self, schedule: TapiCommonTimeRange): + """Sets the schedule of this TapiConnectivityConnectivityService. + + + :param schedule: The schedule of this TapiConnectivityConnectivityService. + :type schedule: TapiCommonTimeRange + """ + + self._schedule = schedule + + @property + def connectivity_direction(self) -> TapiCommonForwardingDirection: + """Gets the connectivity_direction of this TapiConnectivityConnectivityService. + + + :return: The connectivity_direction of this TapiConnectivityConnectivityService. + :rtype: TapiCommonForwardingDirection + """ + return self._connectivity_direction + + @connectivity_direction.setter + def connectivity_direction(self, connectivity_direction: TapiCommonForwardingDirection): + """Sets the connectivity_direction of this TapiConnectivityConnectivityService. + + + :param connectivity_direction: The connectivity_direction of this TapiConnectivityConnectivityService. + :type connectivity_direction: TapiCommonForwardingDirection + """ + + self._connectivity_direction = connectivity_direction + + @property + def requested_capacity(self) -> TapiCommonCapacity: + """Gets the requested_capacity of this TapiConnectivityConnectivityService. + + + :return: The requested_capacity of this TapiConnectivityConnectivityService. + :rtype: TapiCommonCapacity + """ + return self._requested_capacity + + @requested_capacity.setter + def requested_capacity(self, requested_capacity: TapiCommonCapacity): + """Sets the requested_capacity of this TapiConnectivityConnectivityService. + + + :param requested_capacity: The requested_capacity of this TapiConnectivityConnectivityService. + :type requested_capacity: TapiCommonCapacity + """ + + self._requested_capacity = requested_capacity + + @property + def diversity_exclusion(self) -> List[TapiConnectivityConnectivityServiceRef]: + """Gets the diversity_exclusion of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The diversity_exclusion of this TapiConnectivityConnectivityService. + :rtype: List[TapiConnectivityConnectivityServiceRef] + """ + return self._diversity_exclusion + + @diversity_exclusion.setter + def diversity_exclusion(self, diversity_exclusion: List[TapiConnectivityConnectivityServiceRef]): + """Sets the diversity_exclusion of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param diversity_exclusion: The diversity_exclusion of this TapiConnectivityConnectivityService. + :type diversity_exclusion: List[TapiConnectivityConnectivityServiceRef] + """ + + self._diversity_exclusion = diversity_exclusion + + @property + def connection_inclusion(self) -> List[str]: + """Gets the connection_inclusion of this TapiConnectivityConnectivityService. + + A ConnectivityService may use one or more existing Connections. A common traditional strategy is to set up “stranded” connectivity in the core of the network as “express channels” (this is essentially a serial compound link, but can be treated as simple connections) A connection inclusion capability allows for adoption of a discovered Connections. A ConnectivityService is requested with a connection inclusion constraint that identifies a connection (or chain of connections) that is bounded by CEPs that each belong to a NEP that references a SIP that is referenced by a CSEP of the ConnectivityService such that all CSEPs are satisfied by CEPs of the existing Connection. will allow discovered Connections with no stated intent to be associated with an intent via the ConnectivityService. # noqa: E501 + + :return: The connection_inclusion of this TapiConnectivityConnectivityService. + :rtype: List[str] + """ + return self._connection_inclusion + + @connection_inclusion.setter + def connection_inclusion(self, connection_inclusion: List[str]): + """Sets the connection_inclusion of this TapiConnectivityConnectivityService. + + A ConnectivityService may use one or more existing Connections. A common traditional strategy is to set up “stranded” connectivity in the core of the network as “express channels” (this is essentially a serial compound link, but can be treated as simple connections) A connection inclusion capability allows for adoption of a discovered Connections. A ConnectivityService is requested with a connection inclusion constraint that identifies a connection (or chain of connections) that is bounded by CEPs that each belong to a NEP that references a SIP that is referenced by a CSEP of the ConnectivityService such that all CSEPs are satisfied by CEPs of the existing Connection. will allow discovered Connections with no stated intent to be associated with an intent via the ConnectivityService. # noqa: E501 + + :param connection_inclusion: The connection_inclusion of this TapiConnectivityConnectivityService. + :type connection_inclusion: List[str] + """ + + self._connection_inclusion = connection_inclusion + + @property + def service_level(self) -> str: + """Gets the service_level of this TapiConnectivityConnectivityService. + + An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability # noqa: E501 + + :return: The service_level of this TapiConnectivityConnectivityService. + :rtype: str + """ + return self._service_level + + @service_level.setter + def service_level(self, service_level: str): + """Sets the service_level of this TapiConnectivityConnectivityService. + + An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability # noqa: E501 + + :param service_level: The service_level of this TapiConnectivityConnectivityService. + :type service_level: str + """ + + self._service_level = service_level + + @property + def service_type(self) -> TapiConnectivityServiceType: + """Gets the service_type of this TapiConnectivityConnectivityService. + + + :return: The service_type of this TapiConnectivityConnectivityService. + :rtype: TapiConnectivityServiceType + """ + return self._service_type + + @service_type.setter + def service_type(self, service_type: TapiConnectivityServiceType): + """Sets the service_type of this TapiConnectivityConnectivityService. + + + :param service_type: The service_type of this TapiConnectivityConnectivityService. + :type service_type: TapiConnectivityServiceType + """ + + self._service_type = service_type + + @property + def connection_exclusion(self) -> List[str]: + """Gets the connection_exclusion of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The connection_exclusion of this TapiConnectivityConnectivityService. + :rtype: List[str] + """ + return self._connection_exclusion + + @connection_exclusion.setter + def connection_exclusion(self, connection_exclusion: List[str]): + """Sets the connection_exclusion of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param connection_exclusion: The connection_exclusion of this TapiConnectivityConnectivityService. + :type connection_exclusion: List[str] + """ + + self._connection_exclusion = connection_exclusion + + @property + def coroute_inclusion(self) -> TapiConnectivityConnectivityServiceRef: + """Gets the coroute_inclusion of this TapiConnectivityConnectivityService. + + + :return: The coroute_inclusion of this TapiConnectivityConnectivityService. + :rtype: TapiConnectivityConnectivityServiceRef + """ + return self._coroute_inclusion + + @coroute_inclusion.setter + def coroute_inclusion(self, coroute_inclusion: TapiConnectivityConnectivityServiceRef): + """Sets the coroute_inclusion of this TapiConnectivityConnectivityService. + + + :param coroute_inclusion: The coroute_inclusion of this TapiConnectivityConnectivityService. + :type coroute_inclusion: TapiConnectivityConnectivityServiceRef + """ + + self._coroute_inclusion = coroute_inclusion + + @property + def is_lock_out(self) -> bool: + """Gets the is_lock_out of this TapiConnectivityConnectivityService. + + The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of. This overrides all other protection control states including forced. If the item is locked out then it cannot be used under any circumstances. Note: Only relevant when part of a protection scheme. # noqa: E501 + + :return: The is_lock_out of this TapiConnectivityConnectivityService. + :rtype: bool + """ + return self._is_lock_out + + @is_lock_out.setter + def is_lock_out(self, is_lock_out: bool): + """Sets the is_lock_out of this TapiConnectivityConnectivityService. + + The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of. This overrides all other protection control states including forced. If the item is locked out then it cannot be used under any circumstances. Note: Only relevant when part of a protection scheme. # noqa: E501 + + :param is_lock_out: The is_lock_out of this TapiConnectivityConnectivityService. + :type is_lock_out: bool + """ + + self._is_lock_out = is_lock_out + + @property + def max_switch_times(self) -> int: + """Gets the max_switch_times of this TapiConnectivityConnectivityService. + + Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset. # noqa: E501 + + :return: The max_switch_times of this TapiConnectivityConnectivityService. + :rtype: int + """ + return self._max_switch_times + + @max_switch_times.setter + def max_switch_times(self, max_switch_times: int): + """Sets the max_switch_times of this TapiConnectivityConnectivityService. + + Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset. # noqa: E501 + + :param max_switch_times: The max_switch_times of this TapiConnectivityConnectivityService. + :type max_switch_times: int + """ + + self._max_switch_times = max_switch_times + + @property + def restoration_coordinate_type(self) -> TapiConnectivityCoordinateType: + """Gets the restoration_coordinate_type of this TapiConnectivityConnectivityService. + + + :return: The restoration_coordinate_type of this TapiConnectivityConnectivityService. + :rtype: TapiConnectivityCoordinateType + """ + return self._restoration_coordinate_type + + @restoration_coordinate_type.setter + def restoration_coordinate_type(self, restoration_coordinate_type: TapiConnectivityCoordinateType): + """Sets the restoration_coordinate_type of this TapiConnectivityConnectivityService. + + + :param restoration_coordinate_type: The restoration_coordinate_type of this TapiConnectivityConnectivityService. + :type restoration_coordinate_type: TapiConnectivityCoordinateType + """ + + self._restoration_coordinate_type = restoration_coordinate_type + + @property + def is_coordinated_switching_both_ends(self) -> bool: + """Gets the is_coordinated_switching_both_ends of this TapiConnectivityConnectivityService. + + Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends. # noqa: E501 + + :return: The is_coordinated_switching_both_ends of this TapiConnectivityConnectivityService. + :rtype: bool + """ + return self._is_coordinated_switching_both_ends + + @is_coordinated_switching_both_ends.setter + def is_coordinated_switching_both_ends(self, is_coordinated_switching_both_ends: bool): + """Sets the is_coordinated_switching_both_ends of this TapiConnectivityConnectivityService. + + Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends. # noqa: E501 + + :param is_coordinated_switching_both_ends: The is_coordinated_switching_both_ends of this TapiConnectivityConnectivityService. + :type is_coordinated_switching_both_ends: bool + """ + + self._is_coordinated_switching_both_ends = is_coordinated_switching_both_ends + + @property + def hold_off_time(self) -> int: + """Gets the hold_off_time of this TapiConnectivityConnectivityService. + + This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm. # noqa: E501 + + :return: The hold_off_time of this TapiConnectivityConnectivityService. + :rtype: int + """ + return self._hold_off_time + + @hold_off_time.setter + def hold_off_time(self, hold_off_time: int): + """Sets the hold_off_time of this TapiConnectivityConnectivityService. + + This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm. # noqa: E501 + + :param hold_off_time: The hold_off_time of this TapiConnectivityConnectivityService. + :type hold_off_time: int + """ + + self._hold_off_time = hold_off_time + + @property + def is_frozen(self) -> bool: + """Gets the is_frozen of this TapiConnectivityConnectivityService. + + Temporarily prevents any switch action to be taken and, as such, freezes the current state. Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored. All administrative controls of any aspect of protection are rejected. # noqa: E501 + + :return: The is_frozen of this TapiConnectivityConnectivityService. + :rtype: bool + """ + return self._is_frozen + + @is_frozen.setter + def is_frozen(self, is_frozen: bool): + """Sets the is_frozen of this TapiConnectivityConnectivityService. + + Temporarily prevents any switch action to be taken and, as such, freezes the current state. Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored. All administrative controls of any aspect of protection are rejected. # noqa: E501 + + :param is_frozen: The is_frozen of this TapiConnectivityConnectivityService. + :type is_frozen: bool + """ + + self._is_frozen = is_frozen + + @property + def wait_to_revert_time(self) -> int: + """Gets the wait_to_revert_time of this TapiConnectivityConnectivityService. + + If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource. # noqa: E501 + + :return: The wait_to_revert_time of this TapiConnectivityConnectivityService. + :rtype: int + """ + return self._wait_to_revert_time + + @wait_to_revert_time.setter + def wait_to_revert_time(self, wait_to_revert_time: int): + """Sets the wait_to_revert_time of this TapiConnectivityConnectivityService. + + If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource. # noqa: E501 + + :param wait_to_revert_time: The wait_to_revert_time of this TapiConnectivityConnectivityService. + :type wait_to_revert_time: int + """ + + self._wait_to_revert_time = wait_to_revert_time + + @property + def resilience_type(self) -> TapiTopologyResilienceType: + """Gets the resilience_type of this TapiConnectivityConnectivityService. + + + :return: The resilience_type of this TapiConnectivityConnectivityService. + :rtype: TapiTopologyResilienceType + """ + return self._resilience_type + + @resilience_type.setter + def resilience_type(self, resilience_type: TapiTopologyResilienceType): + """Sets the resilience_type of this TapiConnectivityConnectivityService. + + + :param resilience_type: The resilience_type of this TapiConnectivityConnectivityService. + :type resilience_type: TapiTopologyResilienceType + """ + + self._resilience_type = resilience_type + + @property + def preferred_restoration_layer(self) -> List[TapiCommonLayerProtocolName]: + """Gets the preferred_restoration_layer of this TapiConnectivityConnectivityService. + + Indicate which layer this resilience parameters package configured for. # noqa: E501 + + :return: The preferred_restoration_layer of this TapiConnectivityConnectivityService. + :rtype: List[TapiCommonLayerProtocolName] + """ + return self._preferred_restoration_layer + + @preferred_restoration_layer.setter + def preferred_restoration_layer(self, preferred_restoration_layer: List[TapiCommonLayerProtocolName]): + """Sets the preferred_restoration_layer of this TapiConnectivityConnectivityService. + + Indicate which layer this resilience parameters package configured for. # noqa: E501 + + :param preferred_restoration_layer: The preferred_restoration_layer of this TapiConnectivityConnectivityService. + :type preferred_restoration_layer: List[TapiCommonLayerProtocolName] + """ + + self._preferred_restoration_layer = preferred_restoration_layer + + @property + def restore_priority(self) -> int: + """Gets the restore_priority of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The restore_priority of this TapiConnectivityConnectivityService. + :rtype: int + """ + return self._restore_priority + + @restore_priority.setter + def restore_priority(self, restore_priority: int): + """Sets the restore_priority of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param restore_priority: The restore_priority of this TapiConnectivityConnectivityService. + :type restore_priority: int + """ + + self._restore_priority = restore_priority + + @property + def reversion_mode(self) -> TapiConnectivityReversionMode: + """Gets the reversion_mode of this TapiConnectivityConnectivityService. + + + :return: The reversion_mode of this TapiConnectivityConnectivityService. + :rtype: TapiConnectivityReversionMode + """ + return self._reversion_mode + + @reversion_mode.setter + def reversion_mode(self, reversion_mode: TapiConnectivityReversionMode): + """Sets the reversion_mode of this TapiConnectivityConnectivityService. + + + :param reversion_mode: The reversion_mode of this TapiConnectivityConnectivityService. + :type reversion_mode: TapiConnectivityReversionMode + """ + + self._reversion_mode = reversion_mode + + @property + def is_exclusive(self) -> bool: + """Gets the is_exclusive of this TapiConnectivityConnectivityService. + + To distinguish if the resources are to be exclusive to the service # noqa: E501 + + :return: The is_exclusive of this TapiConnectivityConnectivityService. + :rtype: bool + """ + return self._is_exclusive + + @is_exclusive.setter + def is_exclusive(self, is_exclusive: bool): + """Sets the is_exclusive of this TapiConnectivityConnectivityService. + + To distinguish if the resources are to be exclusive to the service # noqa: E501 + + :param is_exclusive: The is_exclusive of this TapiConnectivityConnectivityService. + :type is_exclusive: bool + """ + + self._is_exclusive = is_exclusive + + @property + def max_allowed_cost(self) -> TapiPathComputationValueOrPriority: + """Gets the max_allowed_cost of this TapiConnectivityConnectivityService. + + + :return: The max_allowed_cost of this TapiConnectivityConnectivityService. + :rtype: TapiPathComputationValueOrPriority + """ + return self._max_allowed_cost + + @max_allowed_cost.setter + def max_allowed_cost(self, max_allowed_cost: TapiPathComputationValueOrPriority): + """Sets the max_allowed_cost of this TapiConnectivityConnectivityService. + + + :param max_allowed_cost: The max_allowed_cost of this TapiConnectivityConnectivityService. + :type max_allowed_cost: TapiPathComputationValueOrPriority + """ + + self._max_allowed_cost = max_allowed_cost + + @property + def diversity_policy(self) -> TapiPathComputationDiversityPolicy: + """Gets the diversity_policy of this TapiConnectivityConnectivityService. + + + :return: The diversity_policy of this TapiConnectivityConnectivityService. + :rtype: TapiPathComputationDiversityPolicy + """ + return self._diversity_policy + + @diversity_policy.setter + def diversity_policy(self, diversity_policy: TapiPathComputationDiversityPolicy): + """Sets the diversity_policy of this TapiConnectivityConnectivityService. + + + :param diversity_policy: The diversity_policy of this TapiConnectivityConnectivityService. + :type diversity_policy: TapiPathComputationDiversityPolicy + """ + + self._diversity_policy = diversity_policy + + @property + def route_objective_function(self) -> TapiPathComputationRouteObjectiveFunction: + """Gets the route_objective_function of this TapiConnectivityConnectivityService. + + + :return: The route_objective_function of this TapiConnectivityConnectivityService. + :rtype: TapiPathComputationRouteObjectiveFunction + """ + return self._route_objective_function + + @route_objective_function.setter + def route_objective_function(self, route_objective_function: TapiPathComputationRouteObjectiveFunction): + """Sets the route_objective_function of this TapiConnectivityConnectivityService. + + + :param route_objective_function: The route_objective_function of this TapiConnectivityConnectivityService. + :type route_objective_function: TapiPathComputationRouteObjectiveFunction + """ + + self._route_objective_function = route_objective_function + + @property + def cost_characteristic(self) -> List[TapiTopologyCostCharacteristic]: + """Gets the cost_characteristic of this TapiConnectivityConnectivityService. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :return: The cost_characteristic of this TapiConnectivityConnectivityService. + :rtype: List[TapiTopologyCostCharacteristic] + """ + return self._cost_characteristic + + @cost_characteristic.setter + def cost_characteristic(self, cost_characteristic: List[TapiTopologyCostCharacteristic]): + """Sets the cost_characteristic of this TapiConnectivityConnectivityService. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param cost_characteristic: The cost_characteristic of this TapiConnectivityConnectivityService. + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + """ + + self._cost_characteristic = cost_characteristic + + @property + def max_allowed_hops(self) -> TapiPathComputationValueOrPriority: + """Gets the max_allowed_hops of this TapiConnectivityConnectivityService. + + + :return: The max_allowed_hops of this TapiConnectivityConnectivityService. + :rtype: TapiPathComputationValueOrPriority + """ + return self._max_allowed_hops + + @max_allowed_hops.setter + def max_allowed_hops(self, max_allowed_hops: TapiPathComputationValueOrPriority): + """Sets the max_allowed_hops of this TapiConnectivityConnectivityService. + + + :param max_allowed_hops: The max_allowed_hops of this TapiConnectivityConnectivityService. + :type max_allowed_hops: TapiPathComputationValueOrPriority + """ + + self._max_allowed_hops = max_allowed_hops + + @property + def max_allowed_delay(self) -> TapiPathComputationValueOrPriority: + """Gets the max_allowed_delay of this TapiConnectivityConnectivityService. + + + :return: The max_allowed_delay of this TapiConnectivityConnectivityService. + :rtype: TapiPathComputationValueOrPriority + """ + return self._max_allowed_delay + + @max_allowed_delay.setter + def max_allowed_delay(self, max_allowed_delay: TapiPathComputationValueOrPriority): + """Sets the max_allowed_delay of this TapiConnectivityConnectivityService. + + + :param max_allowed_delay: The max_allowed_delay of this TapiConnectivityConnectivityService. + :type max_allowed_delay: TapiPathComputationValueOrPriority + """ + + self._max_allowed_delay = max_allowed_delay + + @property + def latency_characteristic(self) -> List[TapiTopologyLatencyCharacteristic]: + """Gets the latency_characteristic of this TapiConnectivityConnectivityService. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :return: The latency_characteristic of this TapiConnectivityConnectivityService. + :rtype: List[TapiTopologyLatencyCharacteristic] + """ + return self._latency_characteristic + + @latency_characteristic.setter + def latency_characteristic(self, latency_characteristic: List[TapiTopologyLatencyCharacteristic]): + """Sets the latency_characteristic of this TapiConnectivityConnectivityService. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param latency_characteristic: The latency_characteristic of this TapiConnectivityConnectivityService. + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + """ + + self._latency_characteristic = latency_characteristic + + @property + def risk_diversity_characteristic(self) -> List[TapiTopologyRiskCharacteristic]: + """Gets the risk_diversity_characteristic of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The risk_diversity_characteristic of this TapiConnectivityConnectivityService. + :rtype: List[TapiTopologyRiskCharacteristic] + """ + return self._risk_diversity_characteristic + + @risk_diversity_characteristic.setter + def risk_diversity_characteristic(self, risk_diversity_characteristic: List[TapiTopologyRiskCharacteristic]): + """Sets the risk_diversity_characteristic of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param risk_diversity_characteristic: The risk_diversity_characteristic of this TapiConnectivityConnectivityService. + :type risk_diversity_characteristic: List[TapiTopologyRiskCharacteristic] + """ + + self._risk_diversity_characteristic = risk_diversity_characteristic + + @property + def route_direction(self) -> TapiCommonForwardingDirection: + """Gets the route_direction of this TapiConnectivityConnectivityService. + + + :return: The route_direction of this TapiConnectivityConnectivityService. + :rtype: TapiCommonForwardingDirection + """ + return self._route_direction + + @route_direction.setter + def route_direction(self, route_direction: TapiCommonForwardingDirection): + """Sets the route_direction of this TapiConnectivityConnectivityService. + + + :param route_direction: The route_direction of this TapiConnectivityConnectivityService. + :type route_direction: TapiCommonForwardingDirection + """ + + self._route_direction = route_direction + + @property + def include_node(self) -> List[str]: + """Gets the include_node of this TapiConnectivityConnectivityService. + + This is a loose constraint - that is it is unordered and could be a partial list # noqa: E501 + + :return: The include_node of this TapiConnectivityConnectivityService. + :rtype: List[str] + """ + return self._include_node + + @include_node.setter + def include_node(self, include_node: List[str]): + """Sets the include_node of this TapiConnectivityConnectivityService. + + This is a loose constraint - that is it is unordered and could be a partial list # noqa: E501 + + :param include_node: The include_node of this TapiConnectivityConnectivityService. + :type include_node: List[str] + """ + + self._include_node = include_node + + @property + def exclude_link(self) -> List[str]: + """Gets the exclude_link of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The exclude_link of this TapiConnectivityConnectivityService. + :rtype: List[str] + """ + return self._exclude_link + + @exclude_link.setter + def exclude_link(self, exclude_link: List[str]): + """Sets the exclude_link of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param exclude_link: The exclude_link of this TapiConnectivityConnectivityService. + :type exclude_link: List[str] + """ + + self._exclude_link = exclude_link + + @property + def avoid_topology(self) -> List[str]: + """Gets the avoid_topology of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The avoid_topology of this TapiConnectivityConnectivityService. + :rtype: List[str] + """ + return self._avoid_topology + + @avoid_topology.setter + def avoid_topology(self, avoid_topology: List[str]): + """Sets the avoid_topology of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param avoid_topology: The avoid_topology of this TapiConnectivityConnectivityService. + :type avoid_topology: List[str] + """ + + self._avoid_topology = avoid_topology + + @property + def exclude_path(self) -> List[str]: + """Gets the exclude_path of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The exclude_path of this TapiConnectivityConnectivityService. + :rtype: List[str] + """ + return self._exclude_path + + @exclude_path.setter + def exclude_path(self, exclude_path: List[str]): + """Sets the exclude_path of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param exclude_path: The exclude_path of this TapiConnectivityConnectivityService. + :type exclude_path: List[str] + """ + + self._exclude_path = exclude_path + + @property + def include_link(self) -> List[str]: + """Gets the include_link of this TapiConnectivityConnectivityService. + + This is a loose constraint - that is it is unordered and could be a partial list # noqa: E501 + + :return: The include_link of this TapiConnectivityConnectivityService. + :rtype: List[str] + """ + return self._include_link + + @include_link.setter + def include_link(self, include_link: List[str]): + """Sets the include_link of this TapiConnectivityConnectivityService. + + This is a loose constraint - that is it is unordered and could be a partial list # noqa: E501 + + :param include_link: The include_link of this TapiConnectivityConnectivityService. + :type include_link: List[str] + """ + + self._include_link = include_link + + @property + def preferred_transport_layer(self) -> List[TapiCommonLayerProtocolName]: + """Gets the preferred_transport_layer of this TapiConnectivityConnectivityService. + + soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers # noqa: E501 + + :return: The preferred_transport_layer of this TapiConnectivityConnectivityService. + :rtype: List[TapiCommonLayerProtocolName] + """ + return self._preferred_transport_layer + + @preferred_transport_layer.setter + def preferred_transport_layer(self, preferred_transport_layer: List[TapiCommonLayerProtocolName]): + """Sets the preferred_transport_layer of this TapiConnectivityConnectivityService. + + soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers # noqa: E501 + + :param preferred_transport_layer: The preferred_transport_layer of this TapiConnectivityConnectivityService. + :type preferred_transport_layer: List[TapiCommonLayerProtocolName] + """ + + self._preferred_transport_layer = preferred_transport_layer + + @property + def exclude_node(self) -> List[str]: + """Gets the exclude_node of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The exclude_node of this TapiConnectivityConnectivityService. + :rtype: List[str] + """ + return self._exclude_node + + @exclude_node.setter + def exclude_node(self, exclude_node: List[str]): + """Sets the exclude_node of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param exclude_node: The exclude_node of this TapiConnectivityConnectivityService. + :type exclude_node: List[str] + """ + + self._exclude_node = exclude_node + + @property + def include_topology(self) -> List[str]: + """Gets the include_topology of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The include_topology of this TapiConnectivityConnectivityService. + :rtype: List[str] + """ + return self._include_topology + + @include_topology.setter + def include_topology(self, include_topology: List[str]): + """Sets the include_topology of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param include_topology: The include_topology of this TapiConnectivityConnectivityService. + :type include_topology: List[str] + """ + + self._include_topology = include_topology + + @property + def include_path(self) -> List[str]: + """Gets the include_path of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The include_path of this TapiConnectivityConnectivityService. + :rtype: List[str] + """ + return self._include_path + + @include_path.setter + def include_path(self, include_path: List[str]): + """Sets the include_path of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param include_path: The include_path of this TapiConnectivityConnectivityService. + :type include_path: List[str] + """ + + self._include_path = include_path + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiConnectivityConnectivityService. + + + :return: The operational_state of this TapiConnectivityConnectivityService. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiConnectivityConnectivityService. + + + :param operational_state: The operational_state of this TapiConnectivityConnectivityService. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiConnectivityConnectivityService. + + + :return: The lifecycle_state of this TapiConnectivityConnectivityService. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiConnectivityConnectivityService. + + + :param lifecycle_state: The lifecycle_state of this TapiConnectivityConnectivityService. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state + + @property + def administrative_state(self) -> TapiCommonAdministrativeState: + """Gets the administrative_state of this TapiConnectivityConnectivityService. + + + :return: The administrative_state of this TapiConnectivityConnectivityService. + :rtype: TapiCommonAdministrativeState + """ + return self._administrative_state + + @administrative_state.setter + def administrative_state(self, administrative_state: TapiCommonAdministrativeState): + """Sets the administrative_state of this TapiConnectivityConnectivityService. + + + :param administrative_state: The administrative_state of this TapiConnectivityConnectivityService. + :type administrative_state: TapiCommonAdministrativeState + """ + + self._administrative_state = administrative_state + + @property + def end_point(self) -> List[TapiConnectivityConnectivityServiceEndPoint]: + """Gets the end_point of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The end_point of this TapiConnectivityConnectivityService. + :rtype: List[TapiConnectivityConnectivityServiceEndPoint] + """ + return self._end_point + + @end_point.setter + def end_point(self, end_point: List[TapiConnectivityConnectivityServiceEndPoint]): + """Sets the end_point of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param end_point: The end_point of this TapiConnectivityConnectivityService. + :type end_point: List[TapiConnectivityConnectivityServiceEndPoint] + """ + + self._end_point = end_point + + @property + def connection(self) -> List[TapiConnectivityConnectionRef]: + """Gets the connection of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :return: The connection of this TapiConnectivityConnectivityService. + :rtype: List[TapiConnectivityConnectionRef] + """ + return self._connection + + @connection.setter + def connection(self, connection: List[TapiConnectivityConnectionRef]): + """Sets the connection of this TapiConnectivityConnectivityService. + + none # noqa: E501 + + :param connection: The connection of this TapiConnectivityConnectivityService. + :type connection: List[TapiConnectivityConnectionRef] + """ + + self._connection = connection diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point.py new file mode 100644 index 0000000000000000000000000000000000000000..84df8f687885c89db080047a8098929c2dcb8662 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point.py @@ -0,0 +1,474 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_admin_state_pac import TapiCommonAdminStatePac # noqa: F401,E501 +from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server.models.tapi_common_port_direction import TapiCommonPortDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_port_role import TapiCommonPortRole # noqa: F401,E501 +from tapi_server.models.tapi_common_service_interface_point_ref import TapiCommonServiceInterfacePointRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connection_end_point_ref import TapiConnectivityConnectionEndPointRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connectivity_service_end_point_ref import TapiConnectivityConnectivityServiceEndPointRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_protection_role import TapiConnectivityProtectionRole # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectivityServiceEndPoint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, administrative_state: TapiCommonAdministrativeState=None, protection_role: TapiConnectivityProtectionRole=None, role: TapiCommonPortRole=None, service_interface_point: TapiCommonServiceInterfacePointRef=None, peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef=None, layer_protocol_name: TapiCommonLayerProtocolName=None, layer_protocol_qualifier: str=None, connection_end_point: List[TapiConnectivityConnectionEndPointRef]=None, server_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef=None, protecting_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef=None, direction: TapiCommonPortDirection=None, capacity: TapiCommonCapacity=None): # noqa: E501 + """TapiConnectivityConnectivityServiceEndPoint - a model defined in Swagger + + :param name: The name of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type local_id: str + :param operational_state: The operational_state of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + :param administrative_state: The administrative_state of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type administrative_state: TapiCommonAdministrativeState + :param protection_role: The protection_role of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type protection_role: TapiConnectivityProtectionRole + :param role: The role of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type role: TapiCommonPortRole + :param service_interface_point: The service_interface_point of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type service_interface_point: TapiCommonServiceInterfacePointRef + :param peer_fwd_connectivity_service_end_point: The peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef + :param layer_protocol_name: The layer_protocol_name of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type layer_protocol_name: TapiCommonLayerProtocolName + :param layer_protocol_qualifier: The layer_protocol_qualifier of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type layer_protocol_qualifier: str + :param connection_end_point: The connection_end_point of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type connection_end_point: List[TapiConnectivityConnectionEndPointRef] + :param server_connectivity_service_end_point: The server_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type server_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef + :param protecting_connectivity_service_end_point: The protecting_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type protecting_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef + :param direction: The direction of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type direction: TapiCommonPortDirection + :param capacity: The capacity of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :type capacity: TapiCommonCapacity + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str, + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState, + 'administrative_state': TapiCommonAdministrativeState, + 'protection_role': TapiConnectivityProtectionRole, + 'role': TapiCommonPortRole, + 'service_interface_point': TapiCommonServiceInterfacePointRef, + 'peer_fwd_connectivity_service_end_point': TapiConnectivityConnectivityServiceEndPointRef, + 'layer_protocol_name': TapiCommonLayerProtocolName, + 'layer_protocol_qualifier': str, + 'connection_end_point': List[TapiConnectivityConnectionEndPointRef], + 'server_connectivity_service_end_point': TapiConnectivityConnectivityServiceEndPointRef, + 'protecting_connectivity_service_end_point': TapiConnectivityConnectivityServiceEndPointRef, + 'direction': TapiCommonPortDirection, + 'capacity': TapiCommonCapacity + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id', + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state', + 'administrative_state': 'administrative-state', + 'protection_role': 'protection-role', + 'role': 'role', + 'service_interface_point': 'service-interface-point', + 'peer_fwd_connectivity_service_end_point': 'peer-fwd-connectivity-service-end-point', + 'layer_protocol_name': 'layer-protocol-name', + 'layer_protocol_qualifier': 'layer-protocol-qualifier', + 'connection_end_point': 'connection-end-point', + 'server_connectivity_service_end_point': 'server-connectivity-service-end-point', + 'protecting_connectivity_service_end_point': 'protecting-connectivity-service-end-point', + 'direction': 'direction', + 'capacity': 'capacity' + } + self._name = name + self._local_id = local_id + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + self._administrative_state = administrative_state + self._protection_role = protection_role + self._role = role + self._service_interface_point = service_interface_point + self._peer_fwd_connectivity_service_end_point = peer_fwd_connectivity_service_end_point + self._layer_protocol_name = layer_protocol_name + self._layer_protocol_qualifier = layer_protocol_qualifier + self._connection_end_point = connection_end_point + self._server_connectivity_service_end_point = server_connectivity_service_end_point + self._protecting_connectivity_service_end_point = protecting_connectivity_service_end_point + self._direction = direction + self._capacity = capacity + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityServiceEndPoint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityServiceEndPoint of this TapiConnectivityConnectivityServiceEndPoint. # noqa: E501 + :rtype: TapiConnectivityConnectivityServiceEndPoint + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiConnectivityConnectivityServiceEndPoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiConnectivityConnectivityServiceEndPoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiConnectivityConnectivityServiceEndPoint. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiConnectivityConnectivityServiceEndPoint. + + none # noqa: E501 + + :return: The local_id of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiConnectivityConnectivityServiceEndPoint. + + none # noqa: E501 + + :param local_id: The local_id of this TapiConnectivityConnectivityServiceEndPoint. + :type local_id: str + """ + + self._local_id = local_id + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The operational_state of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiConnectivityConnectivityServiceEndPoint. + + + :param operational_state: The operational_state of this TapiConnectivityConnectivityServiceEndPoint. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The lifecycle_state of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiConnectivityConnectivityServiceEndPoint. + + + :param lifecycle_state: The lifecycle_state of this TapiConnectivityConnectivityServiceEndPoint. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state + + @property + def administrative_state(self) -> TapiCommonAdministrativeState: + """Gets the administrative_state of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The administrative_state of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiCommonAdministrativeState + """ + return self._administrative_state + + @administrative_state.setter + def administrative_state(self, administrative_state: TapiCommonAdministrativeState): + """Sets the administrative_state of this TapiConnectivityConnectivityServiceEndPoint. + + + :param administrative_state: The administrative_state of this TapiConnectivityConnectivityServiceEndPoint. + :type administrative_state: TapiCommonAdministrativeState + """ + + self._administrative_state = administrative_state + + @property + def protection_role(self) -> TapiConnectivityProtectionRole: + """Gets the protection_role of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The protection_role of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiConnectivityProtectionRole + """ + return self._protection_role + + @protection_role.setter + def protection_role(self, protection_role: TapiConnectivityProtectionRole): + """Sets the protection_role of this TapiConnectivityConnectivityServiceEndPoint. + + + :param protection_role: The protection_role of this TapiConnectivityConnectivityServiceEndPoint. + :type protection_role: TapiConnectivityProtectionRole + """ + + self._protection_role = protection_role + + @property + def role(self) -> TapiCommonPortRole: + """Gets the role of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The role of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiCommonPortRole + """ + return self._role + + @role.setter + def role(self, role: TapiCommonPortRole): + """Sets the role of this TapiConnectivityConnectivityServiceEndPoint. + + + :param role: The role of this TapiConnectivityConnectivityServiceEndPoint. + :type role: TapiCommonPortRole + """ + + self._role = role + + @property + def service_interface_point(self) -> TapiCommonServiceInterfacePointRef: + """Gets the service_interface_point of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The service_interface_point of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiCommonServiceInterfacePointRef + """ + return self._service_interface_point + + @service_interface_point.setter + def service_interface_point(self, service_interface_point: TapiCommonServiceInterfacePointRef): + """Sets the service_interface_point of this TapiConnectivityConnectivityServiceEndPoint. + + + :param service_interface_point: The service_interface_point of this TapiConnectivityConnectivityServiceEndPoint. + :type service_interface_point: TapiCommonServiceInterfacePointRef + """ + + self._service_interface_point = service_interface_point + + @property + def peer_fwd_connectivity_service_end_point(self) -> TapiConnectivityConnectivityServiceEndPointRef: + """Gets the peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiConnectivityConnectivityServiceEndPointRef + """ + return self._peer_fwd_connectivity_service_end_point + + @peer_fwd_connectivity_service_end_point.setter + def peer_fwd_connectivity_service_end_point(self, peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef): + """Sets the peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + + + :param peer_fwd_connectivity_service_end_point: The peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + :type peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef + """ + + self._peer_fwd_connectivity_service_end_point = peer_fwd_connectivity_service_end_point + + @property + def layer_protocol_name(self) -> TapiCommonLayerProtocolName: + """Gets the layer_protocol_name of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The layer_protocol_name of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiCommonLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TapiCommonLayerProtocolName): + """Sets the layer_protocol_name of this TapiConnectivityConnectivityServiceEndPoint. + + + :param layer_protocol_name: The layer_protocol_name of this TapiConnectivityConnectivityServiceEndPoint. + :type layer_protocol_name: TapiCommonLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def layer_protocol_qualifier(self) -> str: + """Gets the layer_protocol_qualifier of this TapiConnectivityConnectivityServiceEndPoint. + + none # noqa: E501 + + :return: The layer_protocol_qualifier of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: str + """ + return self._layer_protocol_qualifier + + @layer_protocol_qualifier.setter + def layer_protocol_qualifier(self, layer_protocol_qualifier: str): + """Sets the layer_protocol_qualifier of this TapiConnectivityConnectivityServiceEndPoint. + + none # noqa: E501 + + :param layer_protocol_qualifier: The layer_protocol_qualifier of this TapiConnectivityConnectivityServiceEndPoint. + :type layer_protocol_qualifier: str + """ + + self._layer_protocol_qualifier = layer_protocol_qualifier + + @property + def connection_end_point(self) -> List[TapiConnectivityConnectionEndPointRef]: + """Gets the connection_end_point of this TapiConnectivityConnectivityServiceEndPoint. + + none # noqa: E501 + + :return: The connection_end_point of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: List[TapiConnectivityConnectionEndPointRef] + """ + return self._connection_end_point + + @connection_end_point.setter + def connection_end_point(self, connection_end_point: List[TapiConnectivityConnectionEndPointRef]): + """Sets the connection_end_point of this TapiConnectivityConnectivityServiceEndPoint. + + none # noqa: E501 + + :param connection_end_point: The connection_end_point of this TapiConnectivityConnectivityServiceEndPoint. + :type connection_end_point: List[TapiConnectivityConnectionEndPointRef] + """ + + self._connection_end_point = connection_end_point + + @property + def server_connectivity_service_end_point(self) -> TapiConnectivityConnectivityServiceEndPointRef: + """Gets the server_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The server_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiConnectivityConnectivityServiceEndPointRef + """ + return self._server_connectivity_service_end_point + + @server_connectivity_service_end_point.setter + def server_connectivity_service_end_point(self, server_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef): + """Sets the server_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + + + :param server_connectivity_service_end_point: The server_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + :type server_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef + """ + + self._server_connectivity_service_end_point = server_connectivity_service_end_point + + @property + def protecting_connectivity_service_end_point(self) -> TapiConnectivityConnectivityServiceEndPointRef: + """Gets the protecting_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The protecting_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiConnectivityConnectivityServiceEndPointRef + """ + return self._protecting_connectivity_service_end_point + + @protecting_connectivity_service_end_point.setter + def protecting_connectivity_service_end_point(self, protecting_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef): + """Sets the protecting_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + + + :param protecting_connectivity_service_end_point: The protecting_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPoint. + :type protecting_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef + """ + + self._protecting_connectivity_service_end_point = protecting_connectivity_service_end_point + + @property + def direction(self) -> TapiCommonPortDirection: + """Gets the direction of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The direction of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiCommonPortDirection + """ + return self._direction + + @direction.setter + def direction(self, direction: TapiCommonPortDirection): + """Sets the direction of this TapiConnectivityConnectivityServiceEndPoint. + + + :param direction: The direction of this TapiConnectivityConnectivityServiceEndPoint. + :type direction: TapiCommonPortDirection + """ + + self._direction = direction + + @property + def capacity(self) -> TapiCommonCapacity: + """Gets the capacity of this TapiConnectivityConnectivityServiceEndPoint. + + + :return: The capacity of this TapiConnectivityConnectivityServiceEndPoint. + :rtype: TapiCommonCapacity + """ + return self._capacity + + @capacity.setter + def capacity(self, capacity: TapiCommonCapacity): + """Sets the capacity of this TapiConnectivityConnectivityServiceEndPoint. + + + :param capacity: The capacity of this TapiConnectivityConnectivityServiceEndPoint. + :type capacity: TapiCommonCapacity + """ + + self._capacity = capacity diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..afde504d00bb5494da1b23c6c4cded75d4eb630e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point_ref.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_service_ref import TapiConnectivityConnectivityServiceRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectivityServiceEndPointRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connectivity_service_uuid: str=None, connectivity_service_end_point_local_id: str=None): # noqa: E501 + """TapiConnectivityConnectivityServiceEndPointRef - a model defined in Swagger + + :param connectivity_service_uuid: The connectivity_service_uuid of this TapiConnectivityConnectivityServiceEndPointRef. # noqa: E501 + :type connectivity_service_uuid: str + :param connectivity_service_end_point_local_id: The connectivity_service_end_point_local_id of this TapiConnectivityConnectivityServiceEndPointRef. # noqa: E501 + :type connectivity_service_end_point_local_id: str + """ + self.swagger_types = { + 'connectivity_service_uuid': str, + 'connectivity_service_end_point_local_id': str + } + + self.attribute_map = { + 'connectivity_service_uuid': 'connectivity-service-uuid', + 'connectivity_service_end_point_local_id': 'connectivity-service-end-point-local-id' + } + self._connectivity_service_uuid = connectivity_service_uuid + self._connectivity_service_end_point_local_id = connectivity_service_end_point_local_id + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityServiceEndPointRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityServiceEndPointRef of this TapiConnectivityConnectivityServiceEndPointRef. # noqa: E501 + :rtype: TapiConnectivityConnectivityServiceEndPointRef + """ + return util.deserialize_model(dikt, cls) + + @property + def connectivity_service_uuid(self) -> str: + """Gets the connectivity_service_uuid of this TapiConnectivityConnectivityServiceEndPointRef. + + none # noqa: E501 + + :return: The connectivity_service_uuid of this TapiConnectivityConnectivityServiceEndPointRef. + :rtype: str + """ + return self._connectivity_service_uuid + + @connectivity_service_uuid.setter + def connectivity_service_uuid(self, connectivity_service_uuid: str): + """Sets the connectivity_service_uuid of this TapiConnectivityConnectivityServiceEndPointRef. + + none # noqa: E501 + + :param connectivity_service_uuid: The connectivity_service_uuid of this TapiConnectivityConnectivityServiceEndPointRef. + :type connectivity_service_uuid: str + """ + + self._connectivity_service_uuid = connectivity_service_uuid + + @property + def connectivity_service_end_point_local_id(self) -> str: + """Gets the connectivity_service_end_point_local_id of this TapiConnectivityConnectivityServiceEndPointRef. + + none # noqa: E501 + + :return: The connectivity_service_end_point_local_id of this TapiConnectivityConnectivityServiceEndPointRef. + :rtype: str + """ + return self._connectivity_service_end_point_local_id + + @connectivity_service_end_point_local_id.setter + def connectivity_service_end_point_local_id(self, connectivity_service_end_point_local_id: str): + """Sets the connectivity_service_end_point_local_id of this TapiConnectivityConnectivityServiceEndPointRef. + + none # noqa: E501 + + :param connectivity_service_end_point_local_id: The connectivity_service_end_point_local_id of this TapiConnectivityConnectivityServiceEndPointRef. + :type connectivity_service_end_point_local_id: str + """ + + self._connectivity_service_end_point_local_id = connectivity_service_end_point_local_id diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..f0f156275ae8bac5c7382f94b14df13ccd9309f9 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_service_end_point_ref import TapiConnectivityConnectivityServiceEndPointRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectivityServiceEndPointRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef=None): # noqa: E501 + """TapiConnectivityConnectivityServiceEndPointRefWrapper - a model defined in Swagger + + :param peer_fwd_connectivity_service_end_point: The peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPointRefWrapper. # noqa: E501 + :type peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef + """ + self.swagger_types = { + 'peer_fwd_connectivity_service_end_point': TapiConnectivityConnectivityServiceEndPointRef + } + + self.attribute_map = { + 'peer_fwd_connectivity_service_end_point': 'peer-fwd-connectivity-service-end-point' + } + self._peer_fwd_connectivity_service_end_point = peer_fwd_connectivity_service_end_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityServiceEndPointRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityServiceEndPointRefWrapper of this TapiConnectivityConnectivityServiceEndPointRefWrapper. # noqa: E501 + :rtype: TapiConnectivityConnectivityServiceEndPointRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def peer_fwd_connectivity_service_end_point(self) -> TapiConnectivityConnectivityServiceEndPointRef: + """Gets the peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPointRefWrapper. + + + :return: The peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPointRefWrapper. + :rtype: TapiConnectivityConnectivityServiceEndPointRef + """ + return self._peer_fwd_connectivity_service_end_point + + @peer_fwd_connectivity_service_end_point.setter + def peer_fwd_connectivity_service_end_point(self, peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef): + """Sets the peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPointRefWrapper. + + + :param peer_fwd_connectivity_service_end_point: The peer_fwd_connectivity_service_end_point of this TapiConnectivityConnectivityServiceEndPointRefWrapper. + :type peer_fwd_connectivity_service_end_point: TapiConnectivityConnectivityServiceEndPointRef + """ + + self._peer_fwd_connectivity_service_end_point = peer_fwd_connectivity_service_end_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..2f55968a292fe062f714f08eec6dd450af1abaa2 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_end_point_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_service_end_point import TapiConnectivityConnectivityServiceEndPoint # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectivityServiceEndPointWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, end_point: TapiConnectivityConnectivityServiceEndPoint=None): # noqa: E501 + """TapiConnectivityConnectivityServiceEndPointWrapper - a model defined in Swagger + + :param end_point: The end_point of this TapiConnectivityConnectivityServiceEndPointWrapper. # noqa: E501 + :type end_point: TapiConnectivityConnectivityServiceEndPoint + """ + self.swagger_types = { + 'end_point': TapiConnectivityConnectivityServiceEndPoint + } + + self.attribute_map = { + 'end_point': 'end-point' + } + self._end_point = end_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityServiceEndPointWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityServiceEndPointWrapper of this TapiConnectivityConnectivityServiceEndPointWrapper. # noqa: E501 + :rtype: TapiConnectivityConnectivityServiceEndPointWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def end_point(self) -> TapiConnectivityConnectivityServiceEndPoint: + """Gets the end_point of this TapiConnectivityConnectivityServiceEndPointWrapper. + + + :return: The end_point of this TapiConnectivityConnectivityServiceEndPointWrapper. + :rtype: TapiConnectivityConnectivityServiceEndPoint + """ + return self._end_point + + @end_point.setter + def end_point(self, end_point: TapiConnectivityConnectivityServiceEndPoint): + """Sets the end_point of this TapiConnectivityConnectivityServiceEndPointWrapper. + + + :param end_point: The end_point of this TapiConnectivityConnectivityServiceEndPointWrapper. + :type end_point: TapiConnectivityConnectivityServiceEndPoint + """ + + self._end_point = end_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..b854f2223db359cf03db8e6df27948fc62535ca1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_ref.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityConnectivityServiceRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connectivity_service_uuid: str=None): # noqa: E501 + """TapiConnectivityConnectivityServiceRef - a model defined in Swagger + + :param connectivity_service_uuid: The connectivity_service_uuid of this TapiConnectivityConnectivityServiceRef. # noqa: E501 + :type connectivity_service_uuid: str + """ + self.swagger_types = { + 'connectivity_service_uuid': str + } + + self.attribute_map = { + 'connectivity_service_uuid': 'connectivity-service-uuid' + } + self._connectivity_service_uuid = connectivity_service_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityServiceRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityServiceRef of this TapiConnectivityConnectivityServiceRef. # noqa: E501 + :rtype: TapiConnectivityConnectivityServiceRef + """ + return util.deserialize_model(dikt, cls) + + @property + def connectivity_service_uuid(self) -> str: + """Gets the connectivity_service_uuid of this TapiConnectivityConnectivityServiceRef. + + none # noqa: E501 + + :return: The connectivity_service_uuid of this TapiConnectivityConnectivityServiceRef. + :rtype: str + """ + return self._connectivity_service_uuid + + @connectivity_service_uuid.setter + def connectivity_service_uuid(self, connectivity_service_uuid: str): + """Sets the connectivity_service_uuid of this TapiConnectivityConnectivityServiceRef. + + none # noqa: E501 + + :param connectivity_service_uuid: The connectivity_service_uuid of this TapiConnectivityConnectivityServiceRef. + :type connectivity_service_uuid: str + """ + + self._connectivity_service_uuid = connectivity_service_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..289ab904cf5f966b8e4155bd7f253e0f2c367d70 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_service_ref import TapiConnectivityConnectivityServiceRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectivityServiceRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, coroute_inclusion: TapiConnectivityConnectivityServiceRef=None): # noqa: E501 + """TapiConnectivityConnectivityServiceRefWrapper - a model defined in Swagger + + :param coroute_inclusion: The coroute_inclusion of this TapiConnectivityConnectivityServiceRefWrapper. # noqa: E501 + :type coroute_inclusion: TapiConnectivityConnectivityServiceRef + """ + self.swagger_types = { + 'coroute_inclusion': TapiConnectivityConnectivityServiceRef + } + + self.attribute_map = { + 'coroute_inclusion': 'coroute-inclusion' + } + self._coroute_inclusion = coroute_inclusion + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityServiceRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityServiceRefWrapper of this TapiConnectivityConnectivityServiceRefWrapper. # noqa: E501 + :rtype: TapiConnectivityConnectivityServiceRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def coroute_inclusion(self) -> TapiConnectivityConnectivityServiceRef: + """Gets the coroute_inclusion of this TapiConnectivityConnectivityServiceRefWrapper. + + + :return: The coroute_inclusion of this TapiConnectivityConnectivityServiceRefWrapper. + :rtype: TapiConnectivityConnectivityServiceRef + """ + return self._coroute_inclusion + + @coroute_inclusion.setter + def coroute_inclusion(self, coroute_inclusion: TapiConnectivityConnectivityServiceRef): + """Sets the coroute_inclusion of this TapiConnectivityConnectivityServiceRefWrapper. + + + :param coroute_inclusion: The coroute_inclusion of this TapiConnectivityConnectivityServiceRefWrapper. + :type coroute_inclusion: TapiConnectivityConnectivityServiceRef + """ + + self._coroute_inclusion = coroute_inclusion diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..9be218bbe7a102094531ad1a754a138a8155d408 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_connectivity_service_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_service import TapiConnectivityConnectivityService # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityConnectivityServiceWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connectivity_service: TapiConnectivityConnectivityService=None): # noqa: E501 + """TapiConnectivityConnectivityServiceWrapper - a model defined in Swagger + + :param connectivity_service: The connectivity_service of this TapiConnectivityConnectivityServiceWrapper. # noqa: E501 + :type connectivity_service: TapiConnectivityConnectivityService + """ + self.swagger_types = { + 'connectivity_service': TapiConnectivityConnectivityService + } + + self.attribute_map = { + 'connectivity_service': 'connectivity-service' + } + self._connectivity_service = connectivity_service + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityConnectivityServiceWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ConnectivityServiceWrapper of this TapiConnectivityConnectivityServiceWrapper. # noqa: E501 + :rtype: TapiConnectivityConnectivityServiceWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def connectivity_service(self) -> TapiConnectivityConnectivityService: + """Gets the connectivity_service of this TapiConnectivityConnectivityServiceWrapper. + + + :return: The connectivity_service of this TapiConnectivityConnectivityServiceWrapper. + :rtype: TapiConnectivityConnectivityService + """ + return self._connectivity_service + + @connectivity_service.setter + def connectivity_service(self, connectivity_service: TapiConnectivityConnectivityService): + """Sets the connectivity_service of this TapiConnectivityConnectivityServiceWrapper. + + + :param connectivity_service: The connectivity_service of this TapiConnectivityConnectivityServiceWrapper. + :type connectivity_service: TapiConnectivityConnectivityService + """ + + self._connectivity_service = connectivity_service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_context_augmentation3.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_context_augmentation3.py new file mode 100644 index 0000000000000000000000000000000000000000..1e4fe8d2064b1fc86c2f1a2de31584f052ff2ff1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_context_augmentation3.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_context import TapiConnectivityConnectivityContext # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityContextAugmentation3(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connectivity_context: TapiConnectivityConnectivityContext=None): # noqa: E501 + """TapiConnectivityContextAugmentation3 - a model defined in Swagger + + :param connectivity_context: The connectivity_context of this TapiConnectivityContextAugmentation3. # noqa: E501 + :type connectivity_context: TapiConnectivityConnectivityContext + """ + self.swagger_types = { + 'connectivity_context': TapiConnectivityConnectivityContext + } + + self.attribute_map = { + 'connectivity_context': 'connectivity-context' + } + self._connectivity_context = connectivity_context + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityContextAugmentation3': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ContextAugmentation3 of this TapiConnectivityContextAugmentation3. # noqa: E501 + :rtype: TapiConnectivityContextAugmentation3 + """ + return util.deserialize_model(dikt, cls) + + @property + def connectivity_context(self) -> TapiConnectivityConnectivityContext: + """Gets the connectivity_context of this TapiConnectivityContextAugmentation3. + + + :return: The connectivity_context of this TapiConnectivityContextAugmentation3. + :rtype: TapiConnectivityConnectivityContext + """ + return self._connectivity_context + + @connectivity_context.setter + def connectivity_context(self, connectivity_context: TapiConnectivityConnectivityContext): + """Sets the connectivity_context of this TapiConnectivityContextAugmentation3. + + + :param connectivity_context: The connectivity_context of this TapiConnectivityContextAugmentation3. + :type connectivity_context: TapiConnectivityConnectivityContext + """ + + self._connectivity_context = connectivity_context diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_coordinate_type.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_coordinate_type.py new file mode 100644 index 0000000000000000000000000000000000000000..f7924219f829bff23cd829cc5c1df365a30e610f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_coordinate_type.py @@ -0,0 +1,43 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityCoordinateType(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + NO_COORDINATE = "NO_COORDINATE" + HOLD_OFF_TIME = "HOLD_OFF_TIME" + WAIT_FOR_NOTIFICATION = "WAIT_FOR_NOTIFICATION" + def __init__(self): # noqa: E501 + """TapiConnectivityCoordinateType - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityCoordinateType': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.CoordinateType of this TapiConnectivityCoordinateType. # noqa: E501 + :rtype: TapiConnectivityCoordinateType + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_create_connectivity_service.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_create_connectivity_service.py new file mode 100644 index 0000000000000000000000000000000000000000..1d22b1bfb6584a170b62717c63f780a27d662660 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_create_connectivity_service.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_createconnectivityservice_output import TapiConnectivityCreateconnectivityserviceOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityCreateConnectivityService(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiConnectivityCreateconnectivityserviceOutput=None): # noqa: E501 + """TapiConnectivityCreateConnectivityService - a model defined in Swagger + + :param output: The output of this TapiConnectivityCreateConnectivityService. # noqa: E501 + :type output: TapiConnectivityCreateconnectivityserviceOutput + """ + self.swagger_types = { + 'output': TapiConnectivityCreateconnectivityserviceOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityCreateConnectivityService': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.CreateConnectivityService of this TapiConnectivityCreateConnectivityService. # noqa: E501 + :rtype: TapiConnectivityCreateConnectivityService + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiConnectivityCreateconnectivityserviceOutput: + """Gets the output of this TapiConnectivityCreateConnectivityService. + + + :return: The output of this TapiConnectivityCreateConnectivityService. + :rtype: TapiConnectivityCreateconnectivityserviceOutput + """ + return self._output + + @output.setter + def output(self, output: TapiConnectivityCreateconnectivityserviceOutput): + """Sets the output of this TapiConnectivityCreateConnectivityService. + + + :param output: The output of this TapiConnectivityCreateConnectivityService. + :type output: TapiConnectivityCreateconnectivityserviceOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_createconnectivityservice_input.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_createconnectivityservice_input.py new file mode 100644 index 0000000000000000000000000000000000000000..dcb22ab3b2a1ccd9e75b4ae10dac4ae54694137e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_createconnectivityservice_input.py @@ -0,0 +1,201 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_constraint import TapiConnectivityConnectivityConstraint # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connectivity_service_end_point import TapiConnectivityConnectivityServiceEndPoint # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_resilience_constraint import TapiConnectivityResilienceConstraint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_routing_constraint import TapiPathComputationRoutingConstraint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_topology_constraint import TapiPathComputationTopologyConstraint # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityCreateconnectivityserviceInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology_constraint: TapiPathComputationTopologyConstraint=None, end_point: List[TapiConnectivityConnectivityServiceEndPoint]=None, resilience_constraint: TapiConnectivityResilienceConstraint=None, routing_constraint: TapiPathComputationRoutingConstraint=None, state: str=None, connectivity_constraint: TapiConnectivityConnectivityConstraint=None): # noqa: E501 + """TapiConnectivityCreateconnectivityserviceInput - a model defined in Swagger + + :param topology_constraint: The topology_constraint of this TapiConnectivityCreateconnectivityserviceInput. # noqa: E501 + :type topology_constraint: TapiPathComputationTopologyConstraint + :param end_point: The end_point of this TapiConnectivityCreateconnectivityserviceInput. # noqa: E501 + :type end_point: List[TapiConnectivityConnectivityServiceEndPoint] + :param resilience_constraint: The resilience_constraint of this TapiConnectivityCreateconnectivityserviceInput. # noqa: E501 + :type resilience_constraint: TapiConnectivityResilienceConstraint + :param routing_constraint: The routing_constraint of this TapiConnectivityCreateconnectivityserviceInput. # noqa: E501 + :type routing_constraint: TapiPathComputationRoutingConstraint + :param state: The state of this TapiConnectivityCreateconnectivityserviceInput. # noqa: E501 + :type state: str + :param connectivity_constraint: The connectivity_constraint of this TapiConnectivityCreateconnectivityserviceInput. # noqa: E501 + :type connectivity_constraint: TapiConnectivityConnectivityConstraint + """ + self.swagger_types = { + 'topology_constraint': TapiPathComputationTopologyConstraint, + 'end_point': List[TapiConnectivityConnectivityServiceEndPoint], + 'resilience_constraint': TapiConnectivityResilienceConstraint, + 'routing_constraint': TapiPathComputationRoutingConstraint, + 'state': str, + 'connectivity_constraint': TapiConnectivityConnectivityConstraint + } + + self.attribute_map = { + 'topology_constraint': 'topology-constraint', + 'end_point': 'end-point', + 'resilience_constraint': 'resilience-constraint', + 'routing_constraint': 'routing-constraint', + 'state': 'state', + 'connectivity_constraint': 'connectivity-constraint' + } + self._topology_constraint = topology_constraint + self._end_point = end_point + self._resilience_constraint = resilience_constraint + self._routing_constraint = routing_constraint + self._state = state + self._connectivity_constraint = connectivity_constraint + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityCreateconnectivityserviceInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.createconnectivityservice.Input of this TapiConnectivityCreateconnectivityserviceInput. # noqa: E501 + :rtype: TapiConnectivityCreateconnectivityserviceInput + """ + return util.deserialize_model(dikt, cls) + + @property + def topology_constraint(self) -> TapiPathComputationTopologyConstraint: + """Gets the topology_constraint of this TapiConnectivityCreateconnectivityserviceInput. + + + :return: The topology_constraint of this TapiConnectivityCreateconnectivityserviceInput. + :rtype: TapiPathComputationTopologyConstraint + """ + return self._topology_constraint + + @topology_constraint.setter + def topology_constraint(self, topology_constraint: TapiPathComputationTopologyConstraint): + """Sets the topology_constraint of this TapiConnectivityCreateconnectivityserviceInput. + + + :param topology_constraint: The topology_constraint of this TapiConnectivityCreateconnectivityserviceInput. + :type topology_constraint: TapiPathComputationTopologyConstraint + """ + + self._topology_constraint = topology_constraint + + @property + def end_point(self) -> List[TapiConnectivityConnectivityServiceEndPoint]: + """Gets the end_point of this TapiConnectivityCreateconnectivityserviceInput. + + none # noqa: E501 + + :return: The end_point of this TapiConnectivityCreateconnectivityserviceInput. + :rtype: List[TapiConnectivityConnectivityServiceEndPoint] + """ + return self._end_point + + @end_point.setter + def end_point(self, end_point: List[TapiConnectivityConnectivityServiceEndPoint]): + """Sets the end_point of this TapiConnectivityCreateconnectivityserviceInput. + + none # noqa: E501 + + :param end_point: The end_point of this TapiConnectivityCreateconnectivityserviceInput. + :type end_point: List[TapiConnectivityConnectivityServiceEndPoint] + """ + + self._end_point = end_point + + @property + def resilience_constraint(self) -> TapiConnectivityResilienceConstraint: + """Gets the resilience_constraint of this TapiConnectivityCreateconnectivityserviceInput. + + + :return: The resilience_constraint of this TapiConnectivityCreateconnectivityserviceInput. + :rtype: TapiConnectivityResilienceConstraint + """ + return self._resilience_constraint + + @resilience_constraint.setter + def resilience_constraint(self, resilience_constraint: TapiConnectivityResilienceConstraint): + """Sets the resilience_constraint of this TapiConnectivityCreateconnectivityserviceInput. + + + :param resilience_constraint: The resilience_constraint of this TapiConnectivityCreateconnectivityserviceInput. + :type resilience_constraint: TapiConnectivityResilienceConstraint + """ + + self._resilience_constraint = resilience_constraint + + @property + def routing_constraint(self) -> TapiPathComputationRoutingConstraint: + """Gets the routing_constraint of this TapiConnectivityCreateconnectivityserviceInput. + + + :return: The routing_constraint of this TapiConnectivityCreateconnectivityserviceInput. + :rtype: TapiPathComputationRoutingConstraint + """ + return self._routing_constraint + + @routing_constraint.setter + def routing_constraint(self, routing_constraint: TapiPathComputationRoutingConstraint): + """Sets the routing_constraint of this TapiConnectivityCreateconnectivityserviceInput. + + + :param routing_constraint: The routing_constraint of this TapiConnectivityCreateconnectivityserviceInput. + :type routing_constraint: TapiPathComputationRoutingConstraint + """ + + self._routing_constraint = routing_constraint + + @property + def state(self) -> str: + """Gets the state of this TapiConnectivityCreateconnectivityserviceInput. + + none # noqa: E501 + + :return: The state of this TapiConnectivityCreateconnectivityserviceInput. + :rtype: str + """ + return self._state + + @state.setter + def state(self, state: str): + """Sets the state of this TapiConnectivityCreateconnectivityserviceInput. + + none # noqa: E501 + + :param state: The state of this TapiConnectivityCreateconnectivityserviceInput. + :type state: str + """ + + self._state = state + + @property + def connectivity_constraint(self) -> TapiConnectivityConnectivityConstraint: + """Gets the connectivity_constraint of this TapiConnectivityCreateconnectivityserviceInput. + + + :return: The connectivity_constraint of this TapiConnectivityCreateconnectivityserviceInput. + :rtype: TapiConnectivityConnectivityConstraint + """ + return self._connectivity_constraint + + @connectivity_constraint.setter + def connectivity_constraint(self, connectivity_constraint: TapiConnectivityConnectivityConstraint): + """Sets the connectivity_constraint of this TapiConnectivityCreateconnectivityserviceInput. + + + :param connectivity_constraint: The connectivity_constraint of this TapiConnectivityCreateconnectivityserviceInput. + :type connectivity_constraint: TapiConnectivityConnectivityConstraint + """ + + self._connectivity_constraint = connectivity_constraint diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_createconnectivityservice_output.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_createconnectivityservice_output.py new file mode 100644 index 0000000000000000000000000000000000000000..a17efd6245eddeec5c4a3b2fe85b8e35de253dc6 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_createconnectivityservice_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_service import TapiConnectivityConnectivityService # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityCreateconnectivityserviceOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service: TapiConnectivityConnectivityService=None): # noqa: E501 + """TapiConnectivityCreateconnectivityserviceOutput - a model defined in Swagger + + :param service: The service of this TapiConnectivityCreateconnectivityserviceOutput. # noqa: E501 + :type service: TapiConnectivityConnectivityService + """ + self.swagger_types = { + 'service': TapiConnectivityConnectivityService + } + + self.attribute_map = { + 'service': 'service' + } + self._service = service + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityCreateconnectivityserviceOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.createconnectivityservice.Output of this TapiConnectivityCreateconnectivityserviceOutput. # noqa: E501 + :rtype: TapiConnectivityCreateconnectivityserviceOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def service(self) -> TapiConnectivityConnectivityService: + """Gets the service of this TapiConnectivityCreateconnectivityserviceOutput. + + + :return: The service of this TapiConnectivityCreateconnectivityserviceOutput. + :rtype: TapiConnectivityConnectivityService + """ + return self._service + + @service.setter + def service(self, service: TapiConnectivityConnectivityService): + """Sets the service of this TapiConnectivityCreateconnectivityserviceOutput. + + + :param service: The service of this TapiConnectivityCreateconnectivityserviceOutput. + :type service: TapiConnectivityConnectivityService + """ + + self._service = service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_deleteconnectivityservice_input.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_deleteconnectivityservice_input.py new file mode 100644 index 0000000000000000000000000000000000000000..b2bd8d52488b5f193a9c72ed968f7cc441c9bba2 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_deleteconnectivityservice_input.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityDeleteconnectivityserviceInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service_id_or_name: str=None): # noqa: E501 + """TapiConnectivityDeleteconnectivityserviceInput - a model defined in Swagger + + :param service_id_or_name: The service_id_or_name of this TapiConnectivityDeleteconnectivityserviceInput. # noqa: E501 + :type service_id_or_name: str + """ + self.swagger_types = { + 'service_id_or_name': str + } + + self.attribute_map = { + 'service_id_or_name': 'service-id-or-name' + } + self._service_id_or_name = service_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityDeleteconnectivityserviceInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.deleteconnectivityservice.Input of this TapiConnectivityDeleteconnectivityserviceInput. # noqa: E501 + :rtype: TapiConnectivityDeleteconnectivityserviceInput + """ + return util.deserialize_model(dikt, cls) + + @property + def service_id_or_name(self) -> str: + """Gets the service_id_or_name of this TapiConnectivityDeleteconnectivityserviceInput. + + none # noqa: E501 + + :return: The service_id_or_name of this TapiConnectivityDeleteconnectivityserviceInput. + :rtype: str + """ + return self._service_id_or_name + + @service_id_or_name.setter + def service_id_or_name(self, service_id_or_name: str): + """Sets the service_id_or_name of this TapiConnectivityDeleteconnectivityserviceInput. + + none # noqa: E501 + + :param service_id_or_name: The service_id_or_name of this TapiConnectivityDeleteconnectivityserviceInput. + :type service_id_or_name: str + """ + + self._service_id_or_name = service_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connection_details.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connection_details.py new file mode 100644 index 0000000000000000000000000000000000000000..dcef8c372f3cf195909391e153e2569d01991c4d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connection_details.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_getconnectiondetails_output import TapiConnectivityGetconnectiondetailsOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityGetConnectionDetails(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiConnectivityGetconnectiondetailsOutput=None): # noqa: E501 + """TapiConnectivityGetConnectionDetails - a model defined in Swagger + + :param output: The output of this TapiConnectivityGetConnectionDetails. # noqa: E501 + :type output: TapiConnectivityGetconnectiondetailsOutput + """ + self.swagger_types = { + 'output': TapiConnectivityGetconnectiondetailsOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetConnectionDetails': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.GetConnectionDetails of this TapiConnectivityGetConnectionDetails. # noqa: E501 + :rtype: TapiConnectivityGetConnectionDetails + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiConnectivityGetconnectiondetailsOutput: + """Gets the output of this TapiConnectivityGetConnectionDetails. + + + :return: The output of this TapiConnectivityGetConnectionDetails. + :rtype: TapiConnectivityGetconnectiondetailsOutput + """ + return self._output + + @output.setter + def output(self, output: TapiConnectivityGetconnectiondetailsOutput): + """Sets the output of this TapiConnectivityGetConnectionDetails. + + + :param output: The output of this TapiConnectivityGetConnectionDetails. + :type output: TapiConnectivityGetconnectiondetailsOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connection_end_point_details.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connection_end_point_details.py new file mode 100644 index 0000000000000000000000000000000000000000..8ef8320b6264708a9958aee5cd6b655f023cf639 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connection_end_point_details.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_getconnectionendpointdetails_output import TapiConnectivityGetconnectionendpointdetailsOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityGetConnectionEndPointDetails(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiConnectivityGetconnectionendpointdetailsOutput=None): # noqa: E501 + """TapiConnectivityGetConnectionEndPointDetails - a model defined in Swagger + + :param output: The output of this TapiConnectivityGetConnectionEndPointDetails. # noqa: E501 + :type output: TapiConnectivityGetconnectionendpointdetailsOutput + """ + self.swagger_types = { + 'output': TapiConnectivityGetconnectionendpointdetailsOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetConnectionEndPointDetails': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.GetConnectionEndPointDetails of this TapiConnectivityGetConnectionEndPointDetails. # noqa: E501 + :rtype: TapiConnectivityGetConnectionEndPointDetails + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiConnectivityGetconnectionendpointdetailsOutput: + """Gets the output of this TapiConnectivityGetConnectionEndPointDetails. + + + :return: The output of this TapiConnectivityGetConnectionEndPointDetails. + :rtype: TapiConnectivityGetconnectionendpointdetailsOutput + """ + return self._output + + @output.setter + def output(self, output: TapiConnectivityGetconnectionendpointdetailsOutput): + """Sets the output of this TapiConnectivityGetConnectionEndPointDetails. + + + :param output: The output of this TapiConnectivityGetConnectionEndPointDetails. + :type output: TapiConnectivityGetconnectionendpointdetailsOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connectivity_service_details.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connectivity_service_details.py new file mode 100644 index 0000000000000000000000000000000000000000..94634c34435a9cf3e8c16f8a85b369b50c31021c --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connectivity_service_details.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_getconnectivityservicedetails_output import TapiConnectivityGetconnectivityservicedetailsOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityGetConnectivityServiceDetails(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiConnectivityGetconnectivityservicedetailsOutput=None): # noqa: E501 + """TapiConnectivityGetConnectivityServiceDetails - a model defined in Swagger + + :param output: The output of this TapiConnectivityGetConnectivityServiceDetails. # noqa: E501 + :type output: TapiConnectivityGetconnectivityservicedetailsOutput + """ + self.swagger_types = { + 'output': TapiConnectivityGetconnectivityservicedetailsOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetConnectivityServiceDetails': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.GetConnectivityServiceDetails of this TapiConnectivityGetConnectivityServiceDetails. # noqa: E501 + :rtype: TapiConnectivityGetConnectivityServiceDetails + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiConnectivityGetconnectivityservicedetailsOutput: + """Gets the output of this TapiConnectivityGetConnectivityServiceDetails. + + + :return: The output of this TapiConnectivityGetConnectivityServiceDetails. + :rtype: TapiConnectivityGetconnectivityservicedetailsOutput + """ + return self._output + + @output.setter + def output(self, output: TapiConnectivityGetconnectivityservicedetailsOutput): + """Sets the output of this TapiConnectivityGetConnectivityServiceDetails. + + + :param output: The output of this TapiConnectivityGetConnectivityServiceDetails. + :type output: TapiConnectivityGetconnectivityservicedetailsOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connectivity_service_list.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connectivity_service_list.py new file mode 100644 index 0000000000000000000000000000000000000000..0690417e6db422b8db768fef5a6e9b33bdfb36d7 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_get_connectivity_service_list.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_getconnectivityservicelist_output import TapiConnectivityGetconnectivityservicelistOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityGetConnectivityServiceList(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiConnectivityGetconnectivityservicelistOutput=None): # noqa: E501 + """TapiConnectivityGetConnectivityServiceList - a model defined in Swagger + + :param output: The output of this TapiConnectivityGetConnectivityServiceList. # noqa: E501 + :type output: TapiConnectivityGetconnectivityservicelistOutput + """ + self.swagger_types = { + 'output': TapiConnectivityGetconnectivityservicelistOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetConnectivityServiceList': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.GetConnectivityServiceList of this TapiConnectivityGetConnectivityServiceList. # noqa: E501 + :rtype: TapiConnectivityGetConnectivityServiceList + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiConnectivityGetconnectivityservicelistOutput: + """Gets the output of this TapiConnectivityGetConnectivityServiceList. + + + :return: The output of this TapiConnectivityGetConnectivityServiceList. + :rtype: TapiConnectivityGetconnectivityservicelistOutput + """ + return self._output + + @output.setter + def output(self, output: TapiConnectivityGetconnectivityservicelistOutput): + """Sets the output of this TapiConnectivityGetConnectivityServiceList. + + + :param output: The output of this TapiConnectivityGetConnectivityServiceList. + :type output: TapiConnectivityGetconnectivityservicelistOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectiondetails_input.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectiondetails_input.py new file mode 100644 index 0000000000000000000000000000000000000000..e67339d980718a136b9176871eb6dc8a42aec0a3 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectiondetails_input.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityGetconnectiondetailsInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_id_or_name: str=None): # noqa: E501 + """TapiConnectivityGetconnectiondetailsInput - a model defined in Swagger + + :param connection_id_or_name: The connection_id_or_name of this TapiConnectivityGetconnectiondetailsInput. # noqa: E501 + :type connection_id_or_name: str + """ + self.swagger_types = { + 'connection_id_or_name': str + } + + self.attribute_map = { + 'connection_id_or_name': 'connection-id-or-name' + } + self._connection_id_or_name = connection_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetconnectiondetailsInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.getconnectiondetails.Input of this TapiConnectivityGetconnectiondetailsInput. # noqa: E501 + :rtype: TapiConnectivityGetconnectiondetailsInput + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_id_or_name(self) -> str: + """Gets the connection_id_or_name of this TapiConnectivityGetconnectiondetailsInput. + + none # noqa: E501 + + :return: The connection_id_or_name of this TapiConnectivityGetconnectiondetailsInput. + :rtype: str + """ + return self._connection_id_or_name + + @connection_id_or_name.setter + def connection_id_or_name(self, connection_id_or_name: str): + """Sets the connection_id_or_name of this TapiConnectivityGetconnectiondetailsInput. + + none # noqa: E501 + + :param connection_id_or_name: The connection_id_or_name of this TapiConnectivityGetconnectiondetailsInput. + :type connection_id_or_name: str + """ + + self._connection_id_or_name = connection_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectiondetails_output.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectiondetails_output.py new file mode 100644 index 0000000000000000000000000000000000000000..cf93f482c72a65f18f757293e21eec75a1e3f2b6 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectiondetails_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection import TapiConnectivityConnection # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityGetconnectiondetailsOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection: TapiConnectivityConnection=None): # noqa: E501 + """TapiConnectivityGetconnectiondetailsOutput - a model defined in Swagger + + :param connection: The connection of this TapiConnectivityGetconnectiondetailsOutput. # noqa: E501 + :type connection: TapiConnectivityConnection + """ + self.swagger_types = { + 'connection': TapiConnectivityConnection + } + + self.attribute_map = { + 'connection': 'connection' + } + self._connection = connection + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetconnectiondetailsOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.getconnectiondetails.Output of this TapiConnectivityGetconnectiondetailsOutput. # noqa: E501 + :rtype: TapiConnectivityGetconnectiondetailsOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def connection(self) -> TapiConnectivityConnection: + """Gets the connection of this TapiConnectivityGetconnectiondetailsOutput. + + + :return: The connection of this TapiConnectivityGetconnectiondetailsOutput. + :rtype: TapiConnectivityConnection + """ + return self._connection + + @connection.setter + def connection(self, connection: TapiConnectivityConnection): + """Sets the connection of this TapiConnectivityGetconnectiondetailsOutput. + + + :param connection: The connection of this TapiConnectivityGetconnectiondetailsOutput. + :type connection: TapiConnectivityConnection + """ + + self._connection = connection diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectionendpointdetails_input.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectionendpointdetails_input.py new file mode 100644 index 0000000000000000000000000000000000000000..86ca4a4c459555fbd662a42b67256513f3861930 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectionendpointdetails_input.py @@ -0,0 +1,148 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityGetconnectionendpointdetailsInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, cep_id_or_name: str=None, nep_id_or_name: str=None, node_id_or_name: str=None, topology_id_or_name: str=None): # noqa: E501 + """TapiConnectivityGetconnectionendpointdetailsInput - a model defined in Swagger + + :param cep_id_or_name: The cep_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. # noqa: E501 + :type cep_id_or_name: str + :param nep_id_or_name: The nep_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. # noqa: E501 + :type nep_id_or_name: str + :param node_id_or_name: The node_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. # noqa: E501 + :type node_id_or_name: str + :param topology_id_or_name: The topology_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. # noqa: E501 + :type topology_id_or_name: str + """ + self.swagger_types = { + 'cep_id_or_name': str, + 'nep_id_or_name': str, + 'node_id_or_name': str, + 'topology_id_or_name': str + } + + self.attribute_map = { + 'cep_id_or_name': 'cep-id-or-name', + 'nep_id_or_name': 'nep-id-or-name', + 'node_id_or_name': 'node-id-or-name', + 'topology_id_or_name': 'topology-id-or-name' + } + self._cep_id_or_name = cep_id_or_name + self._nep_id_or_name = nep_id_or_name + self._node_id_or_name = node_id_or_name + self._topology_id_or_name = topology_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetconnectionendpointdetailsInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.getconnectionendpointdetails.Input of this TapiConnectivityGetconnectionendpointdetailsInput. # noqa: E501 + :rtype: TapiConnectivityGetconnectionendpointdetailsInput + """ + return util.deserialize_model(dikt, cls) + + @property + def cep_id_or_name(self) -> str: + """Gets the cep_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + + none # noqa: E501 + + :return: The cep_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + :rtype: str + """ + return self._cep_id_or_name + + @cep_id_or_name.setter + def cep_id_or_name(self, cep_id_or_name: str): + """Sets the cep_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + + none # noqa: E501 + + :param cep_id_or_name: The cep_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + :type cep_id_or_name: str + """ + + self._cep_id_or_name = cep_id_or_name + + @property + def nep_id_or_name(self) -> str: + """Gets the nep_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + + none # noqa: E501 + + :return: The nep_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + :rtype: str + """ + return self._nep_id_or_name + + @nep_id_or_name.setter + def nep_id_or_name(self, nep_id_or_name: str): + """Sets the nep_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + + none # noqa: E501 + + :param nep_id_or_name: The nep_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + :type nep_id_or_name: str + """ + + self._nep_id_or_name = nep_id_or_name + + @property + def node_id_or_name(self) -> str: + """Gets the node_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + + none # noqa: E501 + + :return: The node_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + :rtype: str + """ + return self._node_id_or_name + + @node_id_or_name.setter + def node_id_or_name(self, node_id_or_name: str): + """Sets the node_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + + none # noqa: E501 + + :param node_id_or_name: The node_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + :type node_id_or_name: str + """ + + self._node_id_or_name = node_id_or_name + + @property + def topology_id_or_name(self) -> str: + """Gets the topology_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + + none # noqa: E501 + + :return: The topology_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + :rtype: str + """ + return self._topology_id_or_name + + @topology_id_or_name.setter + def topology_id_or_name(self, topology_id_or_name: str): + """Sets the topology_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + + none # noqa: E501 + + :param topology_id_or_name: The topology_id_or_name of this TapiConnectivityGetconnectionendpointdetailsInput. + :type topology_id_or_name: str + """ + + self._topology_id_or_name = topology_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectionendpointdetails_output.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectionendpointdetails_output.py new file mode 100644 index 0000000000000000000000000000000000000000..d7a9e6e03bae5fdf4c7166c9bb229de138d95ead --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectionendpointdetails_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection_end_point import TapiConnectivityConnectionEndPoint # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityGetconnectionendpointdetailsOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_end_point: TapiConnectivityConnectionEndPoint=None): # noqa: E501 + """TapiConnectivityGetconnectionendpointdetailsOutput - a model defined in Swagger + + :param connection_end_point: The connection_end_point of this TapiConnectivityGetconnectionendpointdetailsOutput. # noqa: E501 + :type connection_end_point: TapiConnectivityConnectionEndPoint + """ + self.swagger_types = { + 'connection_end_point': TapiConnectivityConnectionEndPoint + } + + self.attribute_map = { + 'connection_end_point': 'connection-end-point' + } + self._connection_end_point = connection_end_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetconnectionendpointdetailsOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.getconnectionendpointdetails.Output of this TapiConnectivityGetconnectionendpointdetailsOutput. # noqa: E501 + :rtype: TapiConnectivityGetconnectionendpointdetailsOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_end_point(self) -> TapiConnectivityConnectionEndPoint: + """Gets the connection_end_point of this TapiConnectivityGetconnectionendpointdetailsOutput. + + + :return: The connection_end_point of this TapiConnectivityGetconnectionendpointdetailsOutput. + :rtype: TapiConnectivityConnectionEndPoint + """ + return self._connection_end_point + + @connection_end_point.setter + def connection_end_point(self, connection_end_point: TapiConnectivityConnectionEndPoint): + """Sets the connection_end_point of this TapiConnectivityGetconnectionendpointdetailsOutput. + + + :param connection_end_point: The connection_end_point of this TapiConnectivityGetconnectionendpointdetailsOutput. + :type connection_end_point: TapiConnectivityConnectionEndPoint + """ + + self._connection_end_point = connection_end_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectivityservicedetails_input.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectivityservicedetails_input.py new file mode 100644 index 0000000000000000000000000000000000000000..820758a5544b01c776625a4f85d2222f40b15d21 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectivityservicedetails_input.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityGetconnectivityservicedetailsInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service_id_or_name: str=None): # noqa: E501 + """TapiConnectivityGetconnectivityservicedetailsInput - a model defined in Swagger + + :param service_id_or_name: The service_id_or_name of this TapiConnectivityGetconnectivityservicedetailsInput. # noqa: E501 + :type service_id_or_name: str + """ + self.swagger_types = { + 'service_id_or_name': str + } + + self.attribute_map = { + 'service_id_or_name': 'service-id-or-name' + } + self._service_id_or_name = service_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetconnectivityservicedetailsInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.getconnectivityservicedetails.Input of this TapiConnectivityGetconnectivityservicedetailsInput. # noqa: E501 + :rtype: TapiConnectivityGetconnectivityservicedetailsInput + """ + return util.deserialize_model(dikt, cls) + + @property + def service_id_or_name(self) -> str: + """Gets the service_id_or_name of this TapiConnectivityGetconnectivityservicedetailsInput. + + none # noqa: E501 + + :return: The service_id_or_name of this TapiConnectivityGetconnectivityservicedetailsInput. + :rtype: str + """ + return self._service_id_or_name + + @service_id_or_name.setter + def service_id_or_name(self, service_id_or_name: str): + """Sets the service_id_or_name of this TapiConnectivityGetconnectivityservicedetailsInput. + + none # noqa: E501 + + :param service_id_or_name: The service_id_or_name of this TapiConnectivityGetconnectivityservicedetailsInput. + :type service_id_or_name: str + """ + + self._service_id_or_name = service_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectivityservicedetails_output.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectivityservicedetails_output.py new file mode 100644 index 0000000000000000000000000000000000000000..3b08975ce29bba78f9184d96758dbe1041882525 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectivityservicedetails_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_service import TapiConnectivityConnectivityService # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityGetconnectivityservicedetailsOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service: TapiConnectivityConnectivityService=None): # noqa: E501 + """TapiConnectivityGetconnectivityservicedetailsOutput - a model defined in Swagger + + :param service: The service of this TapiConnectivityGetconnectivityservicedetailsOutput. # noqa: E501 + :type service: TapiConnectivityConnectivityService + """ + self.swagger_types = { + 'service': TapiConnectivityConnectivityService + } + + self.attribute_map = { + 'service': 'service' + } + self._service = service + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetconnectivityservicedetailsOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.getconnectivityservicedetails.Output of this TapiConnectivityGetconnectivityservicedetailsOutput. # noqa: E501 + :rtype: TapiConnectivityGetconnectivityservicedetailsOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def service(self) -> TapiConnectivityConnectivityService: + """Gets the service of this TapiConnectivityGetconnectivityservicedetailsOutput. + + + :return: The service of this TapiConnectivityGetconnectivityservicedetailsOutput. + :rtype: TapiConnectivityConnectivityService + """ + return self._service + + @service.setter + def service(self, service: TapiConnectivityConnectivityService): + """Sets the service of this TapiConnectivityGetconnectivityservicedetailsOutput. + + + :param service: The service of this TapiConnectivityGetconnectivityservicedetailsOutput. + :type service: TapiConnectivityConnectivityService + """ + + self._service = service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectivityservicelist_output.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectivityservicelist_output.py new file mode 100644 index 0000000000000000000000000000000000000000..6490999b3799cb16883db8898199bc4872b12f66 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_getconnectivityservicelist_output.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_service import TapiConnectivityConnectivityService # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityGetconnectivityservicelistOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service: List[TapiConnectivityConnectivityService]=None): # noqa: E501 + """TapiConnectivityGetconnectivityservicelistOutput - a model defined in Swagger + + :param service: The service of this TapiConnectivityGetconnectivityservicelistOutput. # noqa: E501 + :type service: List[TapiConnectivityConnectivityService] + """ + self.swagger_types = { + 'service': List[TapiConnectivityConnectivityService] + } + + self.attribute_map = { + 'service': 'service' + } + self._service = service + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityGetconnectivityservicelistOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.getconnectivityservicelist.Output of this TapiConnectivityGetconnectivityservicelistOutput. # noqa: E501 + :rtype: TapiConnectivityGetconnectivityservicelistOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def service(self) -> List[TapiConnectivityConnectivityService]: + """Gets the service of this TapiConnectivityGetconnectivityservicelistOutput. + + none # noqa: E501 + + :return: The service of this TapiConnectivityGetconnectivityservicelistOutput. + :rtype: List[TapiConnectivityConnectivityService] + """ + return self._service + + @service.setter + def service(self, service: List[TapiConnectivityConnectivityService]): + """Sets the service of this TapiConnectivityGetconnectivityservicelistOutput. + + none # noqa: E501 + + :param service: The service of this TapiConnectivityGetconnectivityservicelistOutput. + :type service: List[TapiConnectivityConnectivityService] + """ + + self._service = service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_owned_node_edge_point_augmentation1.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_owned_node_edge_point_augmentation1.py new file mode 100644 index 0000000000000000000000000000000000000000..b3ee274b1a4d9c5c9959a695166898411f82a88f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_owned_node_edge_point_augmentation1.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_cep_list import TapiConnectivityCepList # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityOwnedNodeEdgePointAugmentation1(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, cep_list: TapiConnectivityCepList=None): # noqa: E501 + """TapiConnectivityOwnedNodeEdgePointAugmentation1 - a model defined in Swagger + + :param cep_list: The cep_list of this TapiConnectivityOwnedNodeEdgePointAugmentation1. # noqa: E501 + :type cep_list: TapiConnectivityCepList + """ + self.swagger_types = { + 'cep_list': TapiConnectivityCepList + } + + self.attribute_map = { + 'cep_list': 'cep-list' + } + self._cep_list = cep_list + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityOwnedNodeEdgePointAugmentation1': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.OwnedNodeEdgePointAugmentation1 of this TapiConnectivityOwnedNodeEdgePointAugmentation1. # noqa: E501 + :rtype: TapiConnectivityOwnedNodeEdgePointAugmentation1 + """ + return util.deserialize_model(dikt, cls) + + @property + def cep_list(self) -> TapiConnectivityCepList: + """Gets the cep_list of this TapiConnectivityOwnedNodeEdgePointAugmentation1. + + + :return: The cep_list of this TapiConnectivityOwnedNodeEdgePointAugmentation1. + :rtype: TapiConnectivityCepList + """ + return self._cep_list + + @cep_list.setter + def cep_list(self, cep_list: TapiConnectivityCepList): + """Sets the cep_list of this TapiConnectivityOwnedNodeEdgePointAugmentation1. + + + :param cep_list: The cep_list of this TapiConnectivityOwnedNodeEdgePointAugmentation1. + :type cep_list: TapiConnectivityCepList + """ + + self._cep_list = cep_list diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_protection_role.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_protection_role.py new file mode 100644 index 0000000000000000000000000000000000000000..045f9e0d1a83295ea6afe9c7e22fc2f7dcaf2be8 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_protection_role.py @@ -0,0 +1,46 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityProtectionRole(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + WORK = "WORK" + PROTECT = "PROTECT" + PROTECTED = "PROTECTED" + NA = "NA" + WORK_RESTORE = "WORK_RESTORE" + PROTECT_RESTORE = "PROTECT_RESTORE" + def __init__(self): # noqa: E501 + """TapiConnectivityProtectionRole - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityProtectionRole': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ProtectionRole of this TapiConnectivityProtectionRole. # noqa: E501 + :rtype: TapiConnectivityProtectionRole + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_resilience_constraint.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_resilience_constraint.py new file mode 100644 index 0000000000000000000000000000000000000000..d122587aa99abe20cb93592fe253a7c5190b3a55 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_resilience_constraint.py @@ -0,0 +1,342 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_coordinate_type import TapiConnectivityCoordinateType # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_reversion_mode import TapiConnectivityReversionMode # noqa: F401,E501 +from tapi_server.models.tapi_topology_resilience_type import TapiTopologyResilienceType # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityResilienceConstraint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, is_lock_out: bool=False, max_switch_times: int=None, restoration_coordinate_type: TapiConnectivityCoordinateType=None, is_coordinated_switching_both_ends: bool=False, hold_off_time: int=None, is_frozen: bool=False, wait_to_revert_time: int=15, resilience_type: TapiTopologyResilienceType=None, preferred_restoration_layer: List[TapiCommonLayerProtocolName]=None, restore_priority: int=None, reversion_mode: TapiConnectivityReversionMode=None): # noqa: E501 + """TapiConnectivityResilienceConstraint - a model defined in Swagger + + :param is_lock_out: The is_lock_out of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type is_lock_out: bool + :param max_switch_times: The max_switch_times of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type max_switch_times: int + :param restoration_coordinate_type: The restoration_coordinate_type of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type restoration_coordinate_type: TapiConnectivityCoordinateType + :param is_coordinated_switching_both_ends: The is_coordinated_switching_both_ends of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type is_coordinated_switching_both_ends: bool + :param hold_off_time: The hold_off_time of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type hold_off_time: int + :param is_frozen: The is_frozen of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type is_frozen: bool + :param wait_to_revert_time: The wait_to_revert_time of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type wait_to_revert_time: int + :param resilience_type: The resilience_type of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type resilience_type: TapiTopologyResilienceType + :param preferred_restoration_layer: The preferred_restoration_layer of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type preferred_restoration_layer: List[TapiCommonLayerProtocolName] + :param restore_priority: The restore_priority of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type restore_priority: int + :param reversion_mode: The reversion_mode of this TapiConnectivityResilienceConstraint. # noqa: E501 + :type reversion_mode: TapiConnectivityReversionMode + """ + self.swagger_types = { + 'is_lock_out': bool, + 'max_switch_times': int, + 'restoration_coordinate_type': TapiConnectivityCoordinateType, + 'is_coordinated_switching_both_ends': bool, + 'hold_off_time': int, + 'is_frozen': bool, + 'wait_to_revert_time': int, + 'resilience_type': TapiTopologyResilienceType, + 'preferred_restoration_layer': List[TapiCommonLayerProtocolName], + 'restore_priority': int, + 'reversion_mode': TapiConnectivityReversionMode + } + + self.attribute_map = { + 'is_lock_out': 'is-lock-out', + 'max_switch_times': 'max-switch-times', + 'restoration_coordinate_type': 'restoration-coordinate-type', + 'is_coordinated_switching_both_ends': 'is-coordinated-switching-both-ends', + 'hold_off_time': 'hold-off-time', + 'is_frozen': 'is-frozen', + 'wait_to_revert_time': 'wait-to-revert-time', + 'resilience_type': 'resilience-type', + 'preferred_restoration_layer': 'preferred-restoration-layer', + 'restore_priority': 'restore-priority', + 'reversion_mode': 'reversion-mode' + } + self._is_lock_out = is_lock_out + self._max_switch_times = max_switch_times + self._restoration_coordinate_type = restoration_coordinate_type + self._is_coordinated_switching_both_ends = is_coordinated_switching_both_ends + self._hold_off_time = hold_off_time + self._is_frozen = is_frozen + self._wait_to_revert_time = wait_to_revert_time + self._resilience_type = resilience_type + self._preferred_restoration_layer = preferred_restoration_layer + self._restore_priority = restore_priority + self._reversion_mode = reversion_mode + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityResilienceConstraint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ResilienceConstraint of this TapiConnectivityResilienceConstraint. # noqa: E501 + :rtype: TapiConnectivityResilienceConstraint + """ + return util.deserialize_model(dikt, cls) + + @property + def is_lock_out(self) -> bool: + """Gets the is_lock_out of this TapiConnectivityResilienceConstraint. + + The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of. This overrides all other protection control states including forced. If the item is locked out then it cannot be used under any circumstances. Note: Only relevant when part of a protection scheme. # noqa: E501 + + :return: The is_lock_out of this TapiConnectivityResilienceConstraint. + :rtype: bool + """ + return self._is_lock_out + + @is_lock_out.setter + def is_lock_out(self, is_lock_out: bool): + """Sets the is_lock_out of this TapiConnectivityResilienceConstraint. + + The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of. This overrides all other protection control states including forced. If the item is locked out then it cannot be used under any circumstances. Note: Only relevant when part of a protection scheme. # noqa: E501 + + :param is_lock_out: The is_lock_out of this TapiConnectivityResilienceConstraint. + :type is_lock_out: bool + """ + + self._is_lock_out = is_lock_out + + @property + def max_switch_times(self) -> int: + """Gets the max_switch_times of this TapiConnectivityResilienceConstraint. + + Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset. # noqa: E501 + + :return: The max_switch_times of this TapiConnectivityResilienceConstraint. + :rtype: int + """ + return self._max_switch_times + + @max_switch_times.setter + def max_switch_times(self, max_switch_times: int): + """Sets the max_switch_times of this TapiConnectivityResilienceConstraint. + + Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset. # noqa: E501 + + :param max_switch_times: The max_switch_times of this TapiConnectivityResilienceConstraint. + :type max_switch_times: int + """ + + self._max_switch_times = max_switch_times + + @property + def restoration_coordinate_type(self) -> TapiConnectivityCoordinateType: + """Gets the restoration_coordinate_type of this TapiConnectivityResilienceConstraint. + + + :return: The restoration_coordinate_type of this TapiConnectivityResilienceConstraint. + :rtype: TapiConnectivityCoordinateType + """ + return self._restoration_coordinate_type + + @restoration_coordinate_type.setter + def restoration_coordinate_type(self, restoration_coordinate_type: TapiConnectivityCoordinateType): + """Sets the restoration_coordinate_type of this TapiConnectivityResilienceConstraint. + + + :param restoration_coordinate_type: The restoration_coordinate_type of this TapiConnectivityResilienceConstraint. + :type restoration_coordinate_type: TapiConnectivityCoordinateType + """ + + self._restoration_coordinate_type = restoration_coordinate_type + + @property + def is_coordinated_switching_both_ends(self) -> bool: + """Gets the is_coordinated_switching_both_ends of this TapiConnectivityResilienceConstraint. + + Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends. # noqa: E501 + + :return: The is_coordinated_switching_both_ends of this TapiConnectivityResilienceConstraint. + :rtype: bool + """ + return self._is_coordinated_switching_both_ends + + @is_coordinated_switching_both_ends.setter + def is_coordinated_switching_both_ends(self, is_coordinated_switching_both_ends: bool): + """Sets the is_coordinated_switching_both_ends of this TapiConnectivityResilienceConstraint. + + Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends. # noqa: E501 + + :param is_coordinated_switching_both_ends: The is_coordinated_switching_both_ends of this TapiConnectivityResilienceConstraint. + :type is_coordinated_switching_both_ends: bool + """ + + self._is_coordinated_switching_both_ends = is_coordinated_switching_both_ends + + @property + def hold_off_time(self) -> int: + """Gets the hold_off_time of this TapiConnectivityResilienceConstraint. + + This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm. # noqa: E501 + + :return: The hold_off_time of this TapiConnectivityResilienceConstraint. + :rtype: int + """ + return self._hold_off_time + + @hold_off_time.setter + def hold_off_time(self, hold_off_time: int): + """Sets the hold_off_time of this TapiConnectivityResilienceConstraint. + + This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm. # noqa: E501 + + :param hold_off_time: The hold_off_time of this TapiConnectivityResilienceConstraint. + :type hold_off_time: int + """ + + self._hold_off_time = hold_off_time + + @property + def is_frozen(self) -> bool: + """Gets the is_frozen of this TapiConnectivityResilienceConstraint. + + Temporarily prevents any switch action to be taken and, as such, freezes the current state. Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored. All administrative controls of any aspect of protection are rejected. # noqa: E501 + + :return: The is_frozen of this TapiConnectivityResilienceConstraint. + :rtype: bool + """ + return self._is_frozen + + @is_frozen.setter + def is_frozen(self, is_frozen: bool): + """Sets the is_frozen of this TapiConnectivityResilienceConstraint. + + Temporarily prevents any switch action to be taken and, as such, freezes the current state. Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored. All administrative controls of any aspect of protection are rejected. # noqa: E501 + + :param is_frozen: The is_frozen of this TapiConnectivityResilienceConstraint. + :type is_frozen: bool + """ + + self._is_frozen = is_frozen + + @property + def wait_to_revert_time(self) -> int: + """Gets the wait_to_revert_time of this TapiConnectivityResilienceConstraint. + + If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource. # noqa: E501 + + :return: The wait_to_revert_time of this TapiConnectivityResilienceConstraint. + :rtype: int + """ + return self._wait_to_revert_time + + @wait_to_revert_time.setter + def wait_to_revert_time(self, wait_to_revert_time: int): + """Sets the wait_to_revert_time of this TapiConnectivityResilienceConstraint. + + If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource. # noqa: E501 + + :param wait_to_revert_time: The wait_to_revert_time of this TapiConnectivityResilienceConstraint. + :type wait_to_revert_time: int + """ + + self._wait_to_revert_time = wait_to_revert_time + + @property + def resilience_type(self) -> TapiTopologyResilienceType: + """Gets the resilience_type of this TapiConnectivityResilienceConstraint. + + + :return: The resilience_type of this TapiConnectivityResilienceConstraint. + :rtype: TapiTopologyResilienceType + """ + return self._resilience_type + + @resilience_type.setter + def resilience_type(self, resilience_type: TapiTopologyResilienceType): + """Sets the resilience_type of this TapiConnectivityResilienceConstraint. + + + :param resilience_type: The resilience_type of this TapiConnectivityResilienceConstraint. + :type resilience_type: TapiTopologyResilienceType + """ + + self._resilience_type = resilience_type + + @property + def preferred_restoration_layer(self) -> List[TapiCommonLayerProtocolName]: + """Gets the preferred_restoration_layer of this TapiConnectivityResilienceConstraint. + + Indicate which layer this resilience parameters package configured for. # noqa: E501 + + :return: The preferred_restoration_layer of this TapiConnectivityResilienceConstraint. + :rtype: List[TapiCommonLayerProtocolName] + """ + return self._preferred_restoration_layer + + @preferred_restoration_layer.setter + def preferred_restoration_layer(self, preferred_restoration_layer: List[TapiCommonLayerProtocolName]): + """Sets the preferred_restoration_layer of this TapiConnectivityResilienceConstraint. + + Indicate which layer this resilience parameters package configured for. # noqa: E501 + + :param preferred_restoration_layer: The preferred_restoration_layer of this TapiConnectivityResilienceConstraint. + :type preferred_restoration_layer: List[TapiCommonLayerProtocolName] + """ + + self._preferred_restoration_layer = preferred_restoration_layer + + @property + def restore_priority(self) -> int: + """Gets the restore_priority of this TapiConnectivityResilienceConstraint. + + none # noqa: E501 + + :return: The restore_priority of this TapiConnectivityResilienceConstraint. + :rtype: int + """ + return self._restore_priority + + @restore_priority.setter + def restore_priority(self, restore_priority: int): + """Sets the restore_priority of this TapiConnectivityResilienceConstraint. + + none # noqa: E501 + + :param restore_priority: The restore_priority of this TapiConnectivityResilienceConstraint. + :type restore_priority: int + """ + + self._restore_priority = restore_priority + + @property + def reversion_mode(self) -> TapiConnectivityReversionMode: + """Gets the reversion_mode of this TapiConnectivityResilienceConstraint. + + + :return: The reversion_mode of this TapiConnectivityResilienceConstraint. + :rtype: TapiConnectivityReversionMode + """ + return self._reversion_mode + + @reversion_mode.setter + def reversion_mode(self, reversion_mode: TapiConnectivityReversionMode): + """Sets the reversion_mode of this TapiConnectivityResilienceConstraint. + + + :param reversion_mode: The reversion_mode of this TapiConnectivityResilienceConstraint. + :type reversion_mode: TapiConnectivityReversionMode + """ + + self._reversion_mode = reversion_mode diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_resilience_route.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_resilience_route.py new file mode 100644 index 0000000000000000000000000000000000000000..a005aa32b44d6f0ed694a0b6d7f95f047ded4b28 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_resilience_route.py @@ -0,0 +1,150 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityResilienceRoute(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, priority: int=None, route_state: str=None): # noqa: E501 + """TapiConnectivityResilienceRoute - a model defined in Swagger + + :param name: The name of this TapiConnectivityResilienceRoute. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiConnectivityResilienceRoute. # noqa: E501 + :type local_id: str + :param priority: The priority of this TapiConnectivityResilienceRoute. # noqa: E501 + :type priority: int + :param route_state: The route_state of this TapiConnectivityResilienceRoute. # noqa: E501 + :type route_state: str + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str, + 'priority': int, + 'route_state': str + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id', + 'priority': 'priority', + 'route_state': 'route-state' + } + self._name = name + self._local_id = local_id + self._priority = priority + self._route_state = route_state + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityResilienceRoute': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ResilienceRoute of this TapiConnectivityResilienceRoute. # noqa: E501 + :rtype: TapiConnectivityResilienceRoute + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiConnectivityResilienceRoute. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiConnectivityResilienceRoute. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiConnectivityResilienceRoute. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiConnectivityResilienceRoute. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiConnectivityResilienceRoute. + + none # noqa: E501 + + :return: The local_id of this TapiConnectivityResilienceRoute. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiConnectivityResilienceRoute. + + none # noqa: E501 + + :param local_id: The local_id of this TapiConnectivityResilienceRoute. + :type local_id: str + """ + + self._local_id = local_id + + @property + def priority(self) -> int: + """Gets the priority of this TapiConnectivityResilienceRoute. + + Value of 0 (zero) means 'unspecified priority'. Highest priority is 1, sometimes referred as 'preferred' or 'main' or 'intended' route. 2 has lower priority than 1, 3 has lower priority than 2, etc. # noqa: E501 + + :return: The priority of this TapiConnectivityResilienceRoute. + :rtype: int + """ + return self._priority + + @priority.setter + def priority(self, priority: int): + """Sets the priority of this TapiConnectivityResilienceRoute. + + Value of 0 (zero) means 'unspecified priority'. Highest priority is 1, sometimes referred as 'preferred' or 'main' or 'intended' route. 2 has lower priority than 1, 3 has lower priority than 2, etc. # noqa: E501 + + :param priority: The priority of this TapiConnectivityResilienceRoute. + :type priority: int + """ + + self._priority = priority + + @property + def route_state(self) -> str: + """Gets the route_state of this TapiConnectivityResilienceRoute. + + Current information on the route selection. # noqa: E501 + + :return: The route_state of this TapiConnectivityResilienceRoute. + :rtype: str + """ + return self._route_state + + @route_state.setter + def route_state(self, route_state: str): + """Sets the route_state of this TapiConnectivityResilienceRoute. + + Current information on the route selection. # noqa: E501 + + :param route_state: The route_state of this TapiConnectivityResilienceRoute. + :type route_state: str + """ + + self._route_state = route_state diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_resilience_route_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_resilience_route_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..7c1e3af55f692d9a7585957ab2ecff68be4e3e24 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_resilience_route_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_resilience_route import TapiConnectivityResilienceRoute # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityResilienceRouteWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, resilience_route_pac: TapiConnectivityResilienceRoute=None): # noqa: E501 + """TapiConnectivityResilienceRouteWrapper - a model defined in Swagger + + :param resilience_route_pac: The resilience_route_pac of this TapiConnectivityResilienceRouteWrapper. # noqa: E501 + :type resilience_route_pac: TapiConnectivityResilienceRoute + """ + self.swagger_types = { + 'resilience_route_pac': TapiConnectivityResilienceRoute + } + + self.attribute_map = { + 'resilience_route_pac': 'resilience-route-pac' + } + self._resilience_route_pac = resilience_route_pac + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityResilienceRouteWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ResilienceRouteWrapper of this TapiConnectivityResilienceRouteWrapper. # noqa: E501 + :rtype: TapiConnectivityResilienceRouteWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def resilience_route_pac(self) -> TapiConnectivityResilienceRoute: + """Gets the resilience_route_pac of this TapiConnectivityResilienceRouteWrapper. + + + :return: The resilience_route_pac of this TapiConnectivityResilienceRouteWrapper. + :rtype: TapiConnectivityResilienceRoute + """ + return self._resilience_route_pac + + @resilience_route_pac.setter + def resilience_route_pac(self, resilience_route_pac: TapiConnectivityResilienceRoute): + """Sets the resilience_route_pac of this TapiConnectivityResilienceRouteWrapper. + + + :param resilience_route_pac: The resilience_route_pac of this TapiConnectivityResilienceRouteWrapper. + :type resilience_route_pac: TapiConnectivityResilienceRoute + """ + + self._resilience_route_pac = resilience_route_pac diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_reversion_mode.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_reversion_mode.py new file mode 100644 index 0000000000000000000000000000000000000000..8004b8293a895a9d32ecdd27b3642bf22fe5934b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_reversion_mode.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityReversionMode(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + REVERTIVE = "REVERTIVE" + NON_REVERTIVE = "NON-REVERTIVE" + def __init__(self): # noqa: E501 + """TapiConnectivityReversionMode - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityReversionMode': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ReversionMode of this TapiConnectivityReversionMode. # noqa: E501 + :rtype: TapiConnectivityReversionMode + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route.py new file mode 100644 index 0000000000000000000000000000000000000000..85768ee1727161a3741e38656d9d49fe9ee2e0e3 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route.py @@ -0,0 +1,150 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connection_end_point_ref import TapiConnectivityConnectionEndPointRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_resilience_route import TapiConnectivityResilienceRoute # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityRoute(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, connection_end_point: List[TapiConnectivityConnectionEndPointRef]=None, resilience_route_pac: TapiConnectivityResilienceRoute=None): # noqa: E501 + """TapiConnectivityRoute - a model defined in Swagger + + :param name: The name of this TapiConnectivityRoute. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiConnectivityRoute. # noqa: E501 + :type local_id: str + :param connection_end_point: The connection_end_point of this TapiConnectivityRoute. # noqa: E501 + :type connection_end_point: List[TapiConnectivityConnectionEndPointRef] + :param resilience_route_pac: The resilience_route_pac of this TapiConnectivityRoute. # noqa: E501 + :type resilience_route_pac: TapiConnectivityResilienceRoute + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str, + 'connection_end_point': List[TapiConnectivityConnectionEndPointRef], + 'resilience_route_pac': TapiConnectivityResilienceRoute + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id', + 'connection_end_point': 'connection-end-point', + 'resilience_route_pac': 'resilience-route-pac' + } + self._name = name + self._local_id = local_id + self._connection_end_point = connection_end_point + self._resilience_route_pac = resilience_route_pac + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityRoute': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.Route of this TapiConnectivityRoute. # noqa: E501 + :rtype: TapiConnectivityRoute + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiConnectivityRoute. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiConnectivityRoute. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiConnectivityRoute. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiConnectivityRoute. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiConnectivityRoute. + + none # noqa: E501 + + :return: The local_id of this TapiConnectivityRoute. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiConnectivityRoute. + + none # noqa: E501 + + :param local_id: The local_id of this TapiConnectivityRoute. + :type local_id: str + """ + + self._local_id = local_id + + @property + def connection_end_point(self) -> List[TapiConnectivityConnectionEndPointRef]: + """Gets the connection_end_point of this TapiConnectivityRoute. + + none # noqa: E501 + + :return: The connection_end_point of this TapiConnectivityRoute. + :rtype: List[TapiConnectivityConnectionEndPointRef] + """ + return self._connection_end_point + + @connection_end_point.setter + def connection_end_point(self, connection_end_point: List[TapiConnectivityConnectionEndPointRef]): + """Sets the connection_end_point of this TapiConnectivityRoute. + + none # noqa: E501 + + :param connection_end_point: The connection_end_point of this TapiConnectivityRoute. + :type connection_end_point: List[TapiConnectivityConnectionEndPointRef] + """ + + self._connection_end_point = connection_end_point + + @property + def resilience_route_pac(self) -> TapiConnectivityResilienceRoute: + """Gets the resilience_route_pac of this TapiConnectivityRoute. + + + :return: The resilience_route_pac of this TapiConnectivityRoute. + :rtype: TapiConnectivityResilienceRoute + """ + return self._resilience_route_pac + + @resilience_route_pac.setter + def resilience_route_pac(self, resilience_route_pac: TapiConnectivityResilienceRoute): + """Sets the resilience_route_pac of this TapiConnectivityRoute. + + + :param resilience_route_pac: The resilience_route_pac of this TapiConnectivityRoute. + :type resilience_route_pac: TapiConnectivityResilienceRoute + """ + + self._resilience_route_pac = resilience_route_pac diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..3c8e794f10d6ab135daf8c5bec387408285afdf3 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route_ref.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection_ref import TapiConnectivityConnectionRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityRouteRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_uuid: str=None, route_local_id: str=None): # noqa: E501 + """TapiConnectivityRouteRef - a model defined in Swagger + + :param connection_uuid: The connection_uuid of this TapiConnectivityRouteRef. # noqa: E501 + :type connection_uuid: str + :param route_local_id: The route_local_id of this TapiConnectivityRouteRef. # noqa: E501 + :type route_local_id: str + """ + self.swagger_types = { + 'connection_uuid': str, + 'route_local_id': str + } + + self.attribute_map = { + 'connection_uuid': 'connection-uuid', + 'route_local_id': 'route-local-id' + } + self._connection_uuid = connection_uuid + self._route_local_id = route_local_id + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityRouteRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.RouteRef of this TapiConnectivityRouteRef. # noqa: E501 + :rtype: TapiConnectivityRouteRef + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_uuid(self) -> str: + """Gets the connection_uuid of this TapiConnectivityRouteRef. + + none # noqa: E501 + + :return: The connection_uuid of this TapiConnectivityRouteRef. + :rtype: str + """ + return self._connection_uuid + + @connection_uuid.setter + def connection_uuid(self, connection_uuid: str): + """Sets the connection_uuid of this TapiConnectivityRouteRef. + + none # noqa: E501 + + :param connection_uuid: The connection_uuid of this TapiConnectivityRouteRef. + :type connection_uuid: str + """ + + self._connection_uuid = connection_uuid + + @property + def route_local_id(self) -> str: + """Gets the route_local_id of this TapiConnectivityRouteRef. + + none # noqa: E501 + + :return: The route_local_id of this TapiConnectivityRouteRef. + :rtype: str + """ + return self._route_local_id + + @route_local_id.setter + def route_local_id(self, route_local_id: str): + """Sets the route_local_id of this TapiConnectivityRouteRef. + + none # noqa: E501 + + :param route_local_id: The route_local_id of this TapiConnectivityRouteRef. + :type route_local_id: str + """ + + self._route_local_id = route_local_id diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..32de337b97f5437d9a447ae03aa2705f94e82166 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_route_ref import TapiConnectivityRouteRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityRouteRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, selected_route: TapiConnectivityRouteRef=None): # noqa: E501 + """TapiConnectivityRouteRefWrapper - a model defined in Swagger + + :param selected_route: The selected_route of this TapiConnectivityRouteRefWrapper. # noqa: E501 + :type selected_route: TapiConnectivityRouteRef + """ + self.swagger_types = { + 'selected_route': TapiConnectivityRouteRef + } + + self.attribute_map = { + 'selected_route': 'selected-route' + } + self._selected_route = selected_route + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityRouteRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.RouteRefWrapper of this TapiConnectivityRouteRefWrapper. # noqa: E501 + :rtype: TapiConnectivityRouteRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def selected_route(self) -> TapiConnectivityRouteRef: + """Gets the selected_route of this TapiConnectivityRouteRefWrapper. + + + :return: The selected_route of this TapiConnectivityRouteRefWrapper. + :rtype: TapiConnectivityRouteRef + """ + return self._selected_route + + @selected_route.setter + def selected_route(self, selected_route: TapiConnectivityRouteRef): + """Sets the selected_route of this TapiConnectivityRouteRefWrapper. + + + :param selected_route: The selected_route of this TapiConnectivityRouteRefWrapper. + :type selected_route: TapiConnectivityRouteRef + """ + + self._selected_route = selected_route diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..846bb16c72cbaf0e4d13eb37849abff4cc0b8065 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_route_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_route import TapiConnectivityRoute # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityRouteWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, route: TapiConnectivityRoute=None): # noqa: E501 + """TapiConnectivityRouteWrapper - a model defined in Swagger + + :param route: The route of this TapiConnectivityRouteWrapper. # noqa: E501 + :type route: TapiConnectivityRoute + """ + self.swagger_types = { + 'route': TapiConnectivityRoute + } + + self.attribute_map = { + 'route': 'route' + } + self._route = route + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityRouteWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.RouteWrapper of this TapiConnectivityRouteWrapper. # noqa: E501 + :rtype: TapiConnectivityRouteWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def route(self) -> TapiConnectivityRoute: + """Gets the route of this TapiConnectivityRouteWrapper. + + + :return: The route of this TapiConnectivityRouteWrapper. + :rtype: TapiConnectivityRoute + """ + return self._route + + @route.setter + def route(self, route: TapiConnectivityRoute): + """Sets the route of this TapiConnectivityRouteWrapper. + + + :param route: The route of this TapiConnectivityRouteWrapper. + :type route: TapiConnectivityRoute + """ + + self._route = route diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_selection_control.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_selection_control.py new file mode 100644 index 0000000000000000000000000000000000000000..12a0cef5a396a0df41b9ae2fde20948fbb71353d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_selection_control.py @@ -0,0 +1,44 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivitySelectionControl(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + LOCK_OUT = "LOCK_OUT" + NORMAL = "NORMAL" + MANUAL = "MANUAL" + FORCED = "FORCED" + def __init__(self): # noqa: E501 + """TapiConnectivitySelectionControl - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivitySelectionControl': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.SelectionControl of this TapiConnectivitySelectionControl. # noqa: E501 + :rtype: TapiConnectivitySelectionControl + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_selection_reason.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_selection_reason.py new file mode 100644 index 0000000000000000000000000000000000000000..2c20d3577365fcc314e587b6c0dab95185e01212 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_selection_reason.py @@ -0,0 +1,47 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivitySelectionReason(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + LOCKOUT = "LOCKOUT" + NORMAL = "NORMAL" + MANUAL = "MANUAL" + FORCED = "FORCED" + WAIT_TO_REVERT = "WAIT_TO_REVERT" + SIGNAL_DEGRADE = "SIGNAL_DEGRADE" + SIGNAL_FAIL = "SIGNAL_FAIL" + def __init__(self): # noqa: E501 + """TapiConnectivitySelectionReason - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivitySelectionReason': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.SelectionReason of this TapiConnectivitySelectionReason. # noqa: E501 + :rtype: TapiConnectivitySelectionReason + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_service_type.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_service_type.py new file mode 100644 index 0000000000000000000000000000000000000000..ef342f8db50904a03f62b0b5340662107a78dd8a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_service_type.py @@ -0,0 +1,44 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiConnectivityServiceType(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + POINT_TO_POINT_CONNECTIVITY = "POINT_TO_POINT_CONNECTIVITY" + POINT_TO_MULTIPOINT_CONNECTIVITY = "POINT_TO_MULTIPOINT_CONNECTIVITY" + MULTIPOINT_CONNECTIVITY = "MULTIPOINT_CONNECTIVITY" + ROOTED_MULTIPOINT_CONNECTIVITY = "ROOTED_MULTIPOINT_CONNECTIVITY" + def __init__(self): # noqa: E501 + """TapiConnectivityServiceType - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityServiceType': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.ServiceType of this TapiConnectivityServiceType. # noqa: E501 + :rtype: TapiConnectivityServiceType + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch.py new file mode 100644 index 0000000000000000000000000000000000000000..564ef1b1931130cdc24b09f01a1c08d420800dee --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch.py @@ -0,0 +1,233 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_port_direction import TapiCommonPortDirection # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connection_end_point_ref import TapiConnectivityConnectionEndPointRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_route_ref import TapiConnectivityRouteRef # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_selection_control import TapiConnectivitySelectionControl # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_selection_reason import TapiConnectivitySelectionReason # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivitySwitch(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, selected_connection_end_point: List[TapiConnectivityConnectionEndPointRef]=None, selected_route: List[TapiConnectivityRouteRef]=None, selection_control: TapiConnectivitySelectionControl=None, selection_reason: TapiConnectivitySelectionReason=None, switch_direction: TapiCommonPortDirection=None): # noqa: E501 + """TapiConnectivitySwitch - a model defined in Swagger + + :param name: The name of this TapiConnectivitySwitch. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiConnectivitySwitch. # noqa: E501 + :type local_id: str + :param selected_connection_end_point: The selected_connection_end_point of this TapiConnectivitySwitch. # noqa: E501 + :type selected_connection_end_point: List[TapiConnectivityConnectionEndPointRef] + :param selected_route: The selected_route of this TapiConnectivitySwitch. # noqa: E501 + :type selected_route: List[TapiConnectivityRouteRef] + :param selection_control: The selection_control of this TapiConnectivitySwitch. # noqa: E501 + :type selection_control: TapiConnectivitySelectionControl + :param selection_reason: The selection_reason of this TapiConnectivitySwitch. # noqa: E501 + :type selection_reason: TapiConnectivitySelectionReason + :param switch_direction: The switch_direction of this TapiConnectivitySwitch. # noqa: E501 + :type switch_direction: TapiCommonPortDirection + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str, + 'selected_connection_end_point': List[TapiConnectivityConnectionEndPointRef], + 'selected_route': List[TapiConnectivityRouteRef], + 'selection_control': TapiConnectivitySelectionControl, + 'selection_reason': TapiConnectivitySelectionReason, + 'switch_direction': TapiCommonPortDirection + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id', + 'selected_connection_end_point': 'selected-connection-end-point', + 'selected_route': 'selected-route', + 'selection_control': 'selection-control', + 'selection_reason': 'selection-reason', + 'switch_direction': 'switch-direction' + } + self._name = name + self._local_id = local_id + self._selected_connection_end_point = selected_connection_end_point + self._selected_route = selected_route + self._selection_control = selection_control + self._selection_reason = selection_reason + self._switch_direction = switch_direction + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivitySwitch': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.Switch of this TapiConnectivitySwitch. # noqa: E501 + :rtype: TapiConnectivitySwitch + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiConnectivitySwitch. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiConnectivitySwitch. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiConnectivitySwitch. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiConnectivitySwitch. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiConnectivitySwitch. + + none # noqa: E501 + + :return: The local_id of this TapiConnectivitySwitch. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiConnectivitySwitch. + + none # noqa: E501 + + :param local_id: The local_id of this TapiConnectivitySwitch. + :type local_id: str + """ + + self._local_id = local_id + + @property + def selected_connection_end_point(self) -> List[TapiConnectivityConnectionEndPointRef]: + """Gets the selected_connection_end_point of this TapiConnectivitySwitch. + + none # noqa: E501 + + :return: The selected_connection_end_point of this TapiConnectivitySwitch. + :rtype: List[TapiConnectivityConnectionEndPointRef] + """ + return self._selected_connection_end_point + + @selected_connection_end_point.setter + def selected_connection_end_point(self, selected_connection_end_point: List[TapiConnectivityConnectionEndPointRef]): + """Sets the selected_connection_end_point of this TapiConnectivitySwitch. + + none # noqa: E501 + + :param selected_connection_end_point: The selected_connection_end_point of this TapiConnectivitySwitch. + :type selected_connection_end_point: List[TapiConnectivityConnectionEndPointRef] + """ + + self._selected_connection_end_point = selected_connection_end_point + + @property + def selected_route(self) -> List[TapiConnectivityRouteRef]: + """Gets the selected_route of this TapiConnectivitySwitch. + + none # noqa: E501 + + :return: The selected_route of this TapiConnectivitySwitch. + :rtype: List[TapiConnectivityRouteRef] + """ + return self._selected_route + + @selected_route.setter + def selected_route(self, selected_route: List[TapiConnectivityRouteRef]): + """Sets the selected_route of this TapiConnectivitySwitch. + + none # noqa: E501 + + :param selected_route: The selected_route of this TapiConnectivitySwitch. + :type selected_route: List[TapiConnectivityRouteRef] + """ + + self._selected_route = selected_route + + @property + def selection_control(self) -> TapiConnectivitySelectionControl: + """Gets the selection_control of this TapiConnectivitySwitch. + + + :return: The selection_control of this TapiConnectivitySwitch. + :rtype: TapiConnectivitySelectionControl + """ + return self._selection_control + + @selection_control.setter + def selection_control(self, selection_control: TapiConnectivitySelectionControl): + """Sets the selection_control of this TapiConnectivitySwitch. + + + :param selection_control: The selection_control of this TapiConnectivitySwitch. + :type selection_control: TapiConnectivitySelectionControl + """ + + self._selection_control = selection_control + + @property + def selection_reason(self) -> TapiConnectivitySelectionReason: + """Gets the selection_reason of this TapiConnectivitySwitch. + + + :return: The selection_reason of this TapiConnectivitySwitch. + :rtype: TapiConnectivitySelectionReason + """ + return self._selection_reason + + @selection_reason.setter + def selection_reason(self, selection_reason: TapiConnectivitySelectionReason): + """Sets the selection_reason of this TapiConnectivitySwitch. + + + :param selection_reason: The selection_reason of this TapiConnectivitySwitch. + :type selection_reason: TapiConnectivitySelectionReason + """ + + self._selection_reason = selection_reason + + @property + def switch_direction(self) -> TapiCommonPortDirection: + """Gets the switch_direction of this TapiConnectivitySwitch. + + + :return: The switch_direction of this TapiConnectivitySwitch. + :rtype: TapiCommonPortDirection + """ + return self._switch_direction + + @switch_direction.setter + def switch_direction(self, switch_direction: TapiCommonPortDirection): + """Sets the switch_direction of this TapiConnectivitySwitch. + + + :param switch_direction: The switch_direction of this TapiConnectivitySwitch. + :type switch_direction: TapiCommonPortDirection + """ + + self._switch_direction = switch_direction diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control.py new file mode 100644 index 0000000000000000000000000000000000000000..72150962af704593bb19d8a865cea2c14d955fda --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control.py @@ -0,0 +1,459 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_coordinate_type import TapiConnectivityCoordinateType # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_resilience_constraint import TapiConnectivityResilienceConstraint # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_reversion_mode import TapiConnectivityReversionMode # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_switch import TapiConnectivitySwitch # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_switch_control_ref import TapiConnectivitySwitchControlRef # noqa: F401,E501 +from tapi_server.models.tapi_topology_resilience_type import TapiTopologyResilienceType # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivitySwitchControl(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, is_lock_out: bool=False, max_switch_times: int=None, restoration_coordinate_type: TapiConnectivityCoordinateType=None, is_coordinated_switching_both_ends: bool=False, hold_off_time: int=None, is_frozen: bool=False, wait_to_revert_time: int=15, resilience_type: TapiTopologyResilienceType=None, preferred_restoration_layer: List[TapiCommonLayerProtocolName]=None, restore_priority: int=None, reversion_mode: TapiConnectivityReversionMode=None, name: List[TapiCommonNameAndValue]=None, uuid: str=None, sub_switch_control: List[TapiConnectivitySwitchControlRef]=None, switch: List[TapiConnectivitySwitch]=None): # noqa: E501 + """TapiConnectivitySwitchControl - a model defined in Swagger + + :param is_lock_out: The is_lock_out of this TapiConnectivitySwitchControl. # noqa: E501 + :type is_lock_out: bool + :param max_switch_times: The max_switch_times of this TapiConnectivitySwitchControl. # noqa: E501 + :type max_switch_times: int + :param restoration_coordinate_type: The restoration_coordinate_type of this TapiConnectivitySwitchControl. # noqa: E501 + :type restoration_coordinate_type: TapiConnectivityCoordinateType + :param is_coordinated_switching_both_ends: The is_coordinated_switching_both_ends of this TapiConnectivitySwitchControl. # noqa: E501 + :type is_coordinated_switching_both_ends: bool + :param hold_off_time: The hold_off_time of this TapiConnectivitySwitchControl. # noqa: E501 + :type hold_off_time: int + :param is_frozen: The is_frozen of this TapiConnectivitySwitchControl. # noqa: E501 + :type is_frozen: bool + :param wait_to_revert_time: The wait_to_revert_time of this TapiConnectivitySwitchControl. # noqa: E501 + :type wait_to_revert_time: int + :param resilience_type: The resilience_type of this TapiConnectivitySwitchControl. # noqa: E501 + :type resilience_type: TapiTopologyResilienceType + :param preferred_restoration_layer: The preferred_restoration_layer of this TapiConnectivitySwitchControl. # noqa: E501 + :type preferred_restoration_layer: List[TapiCommonLayerProtocolName] + :param restore_priority: The restore_priority of this TapiConnectivitySwitchControl. # noqa: E501 + :type restore_priority: int + :param reversion_mode: The reversion_mode of this TapiConnectivitySwitchControl. # noqa: E501 + :type reversion_mode: TapiConnectivityReversionMode + :param name: The name of this TapiConnectivitySwitchControl. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiConnectivitySwitchControl. # noqa: E501 + :type uuid: str + :param sub_switch_control: The sub_switch_control of this TapiConnectivitySwitchControl. # noqa: E501 + :type sub_switch_control: List[TapiConnectivitySwitchControlRef] + :param switch: The switch of this TapiConnectivitySwitchControl. # noqa: E501 + :type switch: List[TapiConnectivitySwitch] + """ + self.swagger_types = { + 'is_lock_out': bool, + 'max_switch_times': int, + 'restoration_coordinate_type': TapiConnectivityCoordinateType, + 'is_coordinated_switching_both_ends': bool, + 'hold_off_time': int, + 'is_frozen': bool, + 'wait_to_revert_time': int, + 'resilience_type': TapiTopologyResilienceType, + 'preferred_restoration_layer': List[TapiCommonLayerProtocolName], + 'restore_priority': int, + 'reversion_mode': TapiConnectivityReversionMode, + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'sub_switch_control': List[TapiConnectivitySwitchControlRef], + 'switch': List[TapiConnectivitySwitch] + } + + self.attribute_map = { + 'is_lock_out': 'is-lock-out', + 'max_switch_times': 'max-switch-times', + 'restoration_coordinate_type': 'restoration-coordinate-type', + 'is_coordinated_switching_both_ends': 'is-coordinated-switching-both-ends', + 'hold_off_time': 'hold-off-time', + 'is_frozen': 'is-frozen', + 'wait_to_revert_time': 'wait-to-revert-time', + 'resilience_type': 'resilience-type', + 'preferred_restoration_layer': 'preferred-restoration-layer', + 'restore_priority': 'restore-priority', + 'reversion_mode': 'reversion-mode', + 'name': 'name', + 'uuid': 'uuid', + 'sub_switch_control': 'sub-switch-control', + 'switch': 'switch' + } + self._is_lock_out = is_lock_out + self._max_switch_times = max_switch_times + self._restoration_coordinate_type = restoration_coordinate_type + self._is_coordinated_switching_both_ends = is_coordinated_switching_both_ends + self._hold_off_time = hold_off_time + self._is_frozen = is_frozen + self._wait_to_revert_time = wait_to_revert_time + self._resilience_type = resilience_type + self._preferred_restoration_layer = preferred_restoration_layer + self._restore_priority = restore_priority + self._reversion_mode = reversion_mode + self._name = name + self._uuid = uuid + self._sub_switch_control = sub_switch_control + self._switch = switch + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivitySwitchControl': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.SwitchControl of this TapiConnectivitySwitchControl. # noqa: E501 + :rtype: TapiConnectivitySwitchControl + """ + return util.deserialize_model(dikt, cls) + + @property + def is_lock_out(self) -> bool: + """Gets the is_lock_out of this TapiConnectivitySwitchControl. + + The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of. This overrides all other protection control states including forced. If the item is locked out then it cannot be used under any circumstances. Note: Only relevant when part of a protection scheme. # noqa: E501 + + :return: The is_lock_out of this TapiConnectivitySwitchControl. + :rtype: bool + """ + return self._is_lock_out + + @is_lock_out.setter + def is_lock_out(self, is_lock_out: bool): + """Sets the is_lock_out of this TapiConnectivitySwitchControl. + + The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of. This overrides all other protection control states including forced. If the item is locked out then it cannot be used under any circumstances. Note: Only relevant when part of a protection scheme. # noqa: E501 + + :param is_lock_out: The is_lock_out of this TapiConnectivitySwitchControl. + :type is_lock_out: bool + """ + + self._is_lock_out = is_lock_out + + @property + def max_switch_times(self) -> int: + """Gets the max_switch_times of this TapiConnectivitySwitchControl. + + Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset. # noqa: E501 + + :return: The max_switch_times of this TapiConnectivitySwitchControl. + :rtype: int + """ + return self._max_switch_times + + @max_switch_times.setter + def max_switch_times(self, max_switch_times: int): + """Sets the max_switch_times of this TapiConnectivitySwitchControl. + + Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset. # noqa: E501 + + :param max_switch_times: The max_switch_times of this TapiConnectivitySwitchControl. + :type max_switch_times: int + """ + + self._max_switch_times = max_switch_times + + @property + def restoration_coordinate_type(self) -> TapiConnectivityCoordinateType: + """Gets the restoration_coordinate_type of this TapiConnectivitySwitchControl. + + + :return: The restoration_coordinate_type of this TapiConnectivitySwitchControl. + :rtype: TapiConnectivityCoordinateType + """ + return self._restoration_coordinate_type + + @restoration_coordinate_type.setter + def restoration_coordinate_type(self, restoration_coordinate_type: TapiConnectivityCoordinateType): + """Sets the restoration_coordinate_type of this TapiConnectivitySwitchControl. + + + :param restoration_coordinate_type: The restoration_coordinate_type of this TapiConnectivitySwitchControl. + :type restoration_coordinate_type: TapiConnectivityCoordinateType + """ + + self._restoration_coordinate_type = restoration_coordinate_type + + @property + def is_coordinated_switching_both_ends(self) -> bool: + """Gets the is_coordinated_switching_both_ends of this TapiConnectivitySwitchControl. + + Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends. # noqa: E501 + + :return: The is_coordinated_switching_both_ends of this TapiConnectivitySwitchControl. + :rtype: bool + """ + return self._is_coordinated_switching_both_ends + + @is_coordinated_switching_both_ends.setter + def is_coordinated_switching_both_ends(self, is_coordinated_switching_both_ends: bool): + """Sets the is_coordinated_switching_both_ends of this TapiConnectivitySwitchControl. + + Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends. # noqa: E501 + + :param is_coordinated_switching_both_ends: The is_coordinated_switching_both_ends of this TapiConnectivitySwitchControl. + :type is_coordinated_switching_both_ends: bool + """ + + self._is_coordinated_switching_both_ends = is_coordinated_switching_both_ends + + @property + def hold_off_time(self) -> int: + """Gets the hold_off_time of this TapiConnectivitySwitchControl. + + This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm. # noqa: E501 + + :return: The hold_off_time of this TapiConnectivitySwitchControl. + :rtype: int + """ + return self._hold_off_time + + @hold_off_time.setter + def hold_off_time(self, hold_off_time: int): + """Sets the hold_off_time of this TapiConnectivitySwitchControl. + + This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm. # noqa: E501 + + :param hold_off_time: The hold_off_time of this TapiConnectivitySwitchControl. + :type hold_off_time: int + """ + + self._hold_off_time = hold_off_time + + @property + def is_frozen(self) -> bool: + """Gets the is_frozen of this TapiConnectivitySwitchControl. + + Temporarily prevents any switch action to be taken and, as such, freezes the current state. Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored. All administrative controls of any aspect of protection are rejected. # noqa: E501 + + :return: The is_frozen of this TapiConnectivitySwitchControl. + :rtype: bool + """ + return self._is_frozen + + @is_frozen.setter + def is_frozen(self, is_frozen: bool): + """Sets the is_frozen of this TapiConnectivitySwitchControl. + + Temporarily prevents any switch action to be taken and, as such, freezes the current state. Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored. All administrative controls of any aspect of protection are rejected. # noqa: E501 + + :param is_frozen: The is_frozen of this TapiConnectivitySwitchControl. + :type is_frozen: bool + """ + + self._is_frozen = is_frozen + + @property + def wait_to_revert_time(self) -> int: + """Gets the wait_to_revert_time of this TapiConnectivitySwitchControl. + + If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource. # noqa: E501 + + :return: The wait_to_revert_time of this TapiConnectivitySwitchControl. + :rtype: int + """ + return self._wait_to_revert_time + + @wait_to_revert_time.setter + def wait_to_revert_time(self, wait_to_revert_time: int): + """Sets the wait_to_revert_time of this TapiConnectivitySwitchControl. + + If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource. # noqa: E501 + + :param wait_to_revert_time: The wait_to_revert_time of this TapiConnectivitySwitchControl. + :type wait_to_revert_time: int + """ + + self._wait_to_revert_time = wait_to_revert_time + + @property + def resilience_type(self) -> TapiTopologyResilienceType: + """Gets the resilience_type of this TapiConnectivitySwitchControl. + + + :return: The resilience_type of this TapiConnectivitySwitchControl. + :rtype: TapiTopologyResilienceType + """ + return self._resilience_type + + @resilience_type.setter + def resilience_type(self, resilience_type: TapiTopologyResilienceType): + """Sets the resilience_type of this TapiConnectivitySwitchControl. + + + :param resilience_type: The resilience_type of this TapiConnectivitySwitchControl. + :type resilience_type: TapiTopologyResilienceType + """ + + self._resilience_type = resilience_type + + @property + def preferred_restoration_layer(self) -> List[TapiCommonLayerProtocolName]: + """Gets the preferred_restoration_layer of this TapiConnectivitySwitchControl. + + Indicate which layer this resilience parameters package configured for. # noqa: E501 + + :return: The preferred_restoration_layer of this TapiConnectivitySwitchControl. + :rtype: List[TapiCommonLayerProtocolName] + """ + return self._preferred_restoration_layer + + @preferred_restoration_layer.setter + def preferred_restoration_layer(self, preferred_restoration_layer: List[TapiCommonLayerProtocolName]): + """Sets the preferred_restoration_layer of this TapiConnectivitySwitchControl. + + Indicate which layer this resilience parameters package configured for. # noqa: E501 + + :param preferred_restoration_layer: The preferred_restoration_layer of this TapiConnectivitySwitchControl. + :type preferred_restoration_layer: List[TapiCommonLayerProtocolName] + """ + + self._preferred_restoration_layer = preferred_restoration_layer + + @property + def restore_priority(self) -> int: + """Gets the restore_priority of this TapiConnectivitySwitchControl. + + none # noqa: E501 + + :return: The restore_priority of this TapiConnectivitySwitchControl. + :rtype: int + """ + return self._restore_priority + + @restore_priority.setter + def restore_priority(self, restore_priority: int): + """Sets the restore_priority of this TapiConnectivitySwitchControl. + + none # noqa: E501 + + :param restore_priority: The restore_priority of this TapiConnectivitySwitchControl. + :type restore_priority: int + """ + + self._restore_priority = restore_priority + + @property + def reversion_mode(self) -> TapiConnectivityReversionMode: + """Gets the reversion_mode of this TapiConnectivitySwitchControl. + + + :return: The reversion_mode of this TapiConnectivitySwitchControl. + :rtype: TapiConnectivityReversionMode + """ + return self._reversion_mode + + @reversion_mode.setter + def reversion_mode(self, reversion_mode: TapiConnectivityReversionMode): + """Sets the reversion_mode of this TapiConnectivitySwitchControl. + + + :param reversion_mode: The reversion_mode of this TapiConnectivitySwitchControl. + :type reversion_mode: TapiConnectivityReversionMode + """ + + self._reversion_mode = reversion_mode + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiConnectivitySwitchControl. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiConnectivitySwitchControl. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiConnectivitySwitchControl. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiConnectivitySwitchControl. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiConnectivitySwitchControl. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiConnectivitySwitchControl. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiConnectivitySwitchControl. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiConnectivitySwitchControl. + :type uuid: str + """ + + self._uuid = uuid + + @property + def sub_switch_control(self) -> List[TapiConnectivitySwitchControlRef]: + """Gets the sub_switch_control of this TapiConnectivitySwitchControl. + + none # noqa: E501 + + :return: The sub_switch_control of this TapiConnectivitySwitchControl. + :rtype: List[TapiConnectivitySwitchControlRef] + """ + return self._sub_switch_control + + @sub_switch_control.setter + def sub_switch_control(self, sub_switch_control: List[TapiConnectivitySwitchControlRef]): + """Sets the sub_switch_control of this TapiConnectivitySwitchControl. + + none # noqa: E501 + + :param sub_switch_control: The sub_switch_control of this TapiConnectivitySwitchControl. + :type sub_switch_control: List[TapiConnectivitySwitchControlRef] + """ + + self._sub_switch_control = sub_switch_control + + @property + def switch(self) -> List[TapiConnectivitySwitch]: + """Gets the switch of this TapiConnectivitySwitchControl. + + none # noqa: E501 + + :return: The switch of this TapiConnectivitySwitchControl. + :rtype: List[TapiConnectivitySwitch] + """ + return self._switch + + @switch.setter + def switch(self, switch: List[TapiConnectivitySwitch]): + """Sets the switch of this TapiConnectivitySwitchControl. + + none # noqa: E501 + + :param switch: The switch of this TapiConnectivitySwitchControl. + :type switch: List[TapiConnectivitySwitch] + """ + + self._switch = switch diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..6167745852ce3c81c4818103d42d2a6271abb83b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control_ref.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connection_ref import TapiConnectivityConnectionRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivitySwitchControlRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_uuid: str=None, switch_control_uuid: str=None): # noqa: E501 + """TapiConnectivitySwitchControlRef - a model defined in Swagger + + :param connection_uuid: The connection_uuid of this TapiConnectivitySwitchControlRef. # noqa: E501 + :type connection_uuid: str + :param switch_control_uuid: The switch_control_uuid of this TapiConnectivitySwitchControlRef. # noqa: E501 + :type switch_control_uuid: str + """ + self.swagger_types = { + 'connection_uuid': str, + 'switch_control_uuid': str + } + + self.attribute_map = { + 'connection_uuid': 'connection-uuid', + 'switch_control_uuid': 'switch-control-uuid' + } + self._connection_uuid = connection_uuid + self._switch_control_uuid = switch_control_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivitySwitchControlRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.SwitchControlRef of this TapiConnectivitySwitchControlRef. # noqa: E501 + :rtype: TapiConnectivitySwitchControlRef + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_uuid(self) -> str: + """Gets the connection_uuid of this TapiConnectivitySwitchControlRef. + + none # noqa: E501 + + :return: The connection_uuid of this TapiConnectivitySwitchControlRef. + :rtype: str + """ + return self._connection_uuid + + @connection_uuid.setter + def connection_uuid(self, connection_uuid: str): + """Sets the connection_uuid of this TapiConnectivitySwitchControlRef. + + none # noqa: E501 + + :param connection_uuid: The connection_uuid of this TapiConnectivitySwitchControlRef. + :type connection_uuid: str + """ + + self._connection_uuid = connection_uuid + + @property + def switch_control_uuid(self) -> str: + """Gets the switch_control_uuid of this TapiConnectivitySwitchControlRef. + + none # noqa: E501 + + :return: The switch_control_uuid of this TapiConnectivitySwitchControlRef. + :rtype: str + """ + return self._switch_control_uuid + + @switch_control_uuid.setter + def switch_control_uuid(self, switch_control_uuid: str): + """Sets the switch_control_uuid of this TapiConnectivitySwitchControlRef. + + none # noqa: E501 + + :param switch_control_uuid: The switch_control_uuid of this TapiConnectivitySwitchControlRef. + :type switch_control_uuid: str + """ + + self._switch_control_uuid = switch_control_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..9e6f183b20f9bcedbd34bab0865d22d567d94536 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_switch_control_ref import TapiConnectivitySwitchControlRef # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivitySwitchControlRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, sub_switch_control: TapiConnectivitySwitchControlRef=None): # noqa: E501 + """TapiConnectivitySwitchControlRefWrapper - a model defined in Swagger + + :param sub_switch_control: The sub_switch_control of this TapiConnectivitySwitchControlRefWrapper. # noqa: E501 + :type sub_switch_control: TapiConnectivitySwitchControlRef + """ + self.swagger_types = { + 'sub_switch_control': TapiConnectivitySwitchControlRef + } + + self.attribute_map = { + 'sub_switch_control': 'sub-switch-control' + } + self._sub_switch_control = sub_switch_control + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivitySwitchControlRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.SwitchControlRefWrapper of this TapiConnectivitySwitchControlRefWrapper. # noqa: E501 + :rtype: TapiConnectivitySwitchControlRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def sub_switch_control(self) -> TapiConnectivitySwitchControlRef: + """Gets the sub_switch_control of this TapiConnectivitySwitchControlRefWrapper. + + + :return: The sub_switch_control of this TapiConnectivitySwitchControlRefWrapper. + :rtype: TapiConnectivitySwitchControlRef + """ + return self._sub_switch_control + + @sub_switch_control.setter + def sub_switch_control(self, sub_switch_control: TapiConnectivitySwitchControlRef): + """Sets the sub_switch_control of this TapiConnectivitySwitchControlRefWrapper. + + + :param sub_switch_control: The sub_switch_control of this TapiConnectivitySwitchControlRefWrapper. + :type sub_switch_control: TapiConnectivitySwitchControlRef + """ + + self._sub_switch_control = sub_switch_control diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..993504e2431dfe2c8bf4587767e842a85789acc8 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_control_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_switch_control import TapiConnectivitySwitchControl # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivitySwitchControlWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, switch_control: TapiConnectivitySwitchControl=None): # noqa: E501 + """TapiConnectivitySwitchControlWrapper - a model defined in Swagger + + :param switch_control: The switch_control of this TapiConnectivitySwitchControlWrapper. # noqa: E501 + :type switch_control: TapiConnectivitySwitchControl + """ + self.swagger_types = { + 'switch_control': TapiConnectivitySwitchControl + } + + self.attribute_map = { + 'switch_control': 'switch-control' + } + self._switch_control = switch_control + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivitySwitchControlWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.SwitchControlWrapper of this TapiConnectivitySwitchControlWrapper. # noqa: E501 + :rtype: TapiConnectivitySwitchControlWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def switch_control(self) -> TapiConnectivitySwitchControl: + """Gets the switch_control of this TapiConnectivitySwitchControlWrapper. + + + :return: The switch_control of this TapiConnectivitySwitchControlWrapper. + :rtype: TapiConnectivitySwitchControl + """ + return self._switch_control + + @switch_control.setter + def switch_control(self, switch_control: TapiConnectivitySwitchControl): + """Sets the switch_control of this TapiConnectivitySwitchControlWrapper. + + + :param switch_control: The switch_control of this TapiConnectivitySwitchControlWrapper. + :type switch_control: TapiConnectivitySwitchControl + """ + + self._switch_control = switch_control diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..52a2166bc8e4ceb0fe372ec40953c48c370ebc8a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_switch_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_switch import TapiConnectivitySwitch # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivitySwitchWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, switch: TapiConnectivitySwitch=None): # noqa: E501 + """TapiConnectivitySwitchWrapper - a model defined in Swagger + + :param switch: The switch of this TapiConnectivitySwitchWrapper. # noqa: E501 + :type switch: TapiConnectivitySwitch + """ + self.swagger_types = { + 'switch': TapiConnectivitySwitch + } + + self.attribute_map = { + 'switch': 'switch' + } + self._switch = switch + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivitySwitchWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.SwitchWrapper of this TapiConnectivitySwitchWrapper. # noqa: E501 + :rtype: TapiConnectivitySwitchWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def switch(self) -> TapiConnectivitySwitch: + """Gets the switch of this TapiConnectivitySwitchWrapper. + + + :return: The switch of this TapiConnectivitySwitchWrapper. + :rtype: TapiConnectivitySwitch + """ + return self._switch + + @switch.setter + def switch(self, switch: TapiConnectivitySwitch): + """Sets the switch of this TapiConnectivitySwitchWrapper. + + + :param switch: The switch of this TapiConnectivitySwitchWrapper. + :type switch: TapiConnectivitySwitch + """ + + self._switch = switch diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_update_connectivity_service.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_update_connectivity_service.py new file mode 100644 index 0000000000000000000000000000000000000000..3a80b938b4d68cf6d7de12c066f7e3ee50a862fe --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_update_connectivity_service.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_updateconnectivityservice_output import TapiConnectivityUpdateconnectivityserviceOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityUpdateConnectivityService(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiConnectivityUpdateconnectivityserviceOutput=None): # noqa: E501 + """TapiConnectivityUpdateConnectivityService - a model defined in Swagger + + :param output: The output of this TapiConnectivityUpdateConnectivityService. # noqa: E501 + :type output: TapiConnectivityUpdateconnectivityserviceOutput + """ + self.swagger_types = { + 'output': TapiConnectivityUpdateconnectivityserviceOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityUpdateConnectivityService': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.UpdateConnectivityService of this TapiConnectivityUpdateConnectivityService. # noqa: E501 + :rtype: TapiConnectivityUpdateConnectivityService + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiConnectivityUpdateconnectivityserviceOutput: + """Gets the output of this TapiConnectivityUpdateConnectivityService. + + + :return: The output of this TapiConnectivityUpdateConnectivityService. + :rtype: TapiConnectivityUpdateconnectivityserviceOutput + """ + return self._output + + @output.setter + def output(self, output: TapiConnectivityUpdateconnectivityserviceOutput): + """Sets the output of this TapiConnectivityUpdateConnectivityService. + + + :param output: The output of this TapiConnectivityUpdateConnectivityService. + :type output: TapiConnectivityUpdateconnectivityserviceOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_updateconnectivityservice_input.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_updateconnectivityservice_input.py new file mode 100644 index 0000000000000000000000000000000000000000..d871c9b8e20488b37de02be6d2ee0e441f26c5eb --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_updateconnectivityservice_input.py @@ -0,0 +1,229 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_constraint import TapiConnectivityConnectivityConstraint # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_connectivity_service_end_point import TapiConnectivityConnectivityServiceEndPoint # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_resilience_constraint import TapiConnectivityResilienceConstraint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_routing_constraint import TapiPathComputationRoutingConstraint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_topology_constraint import TapiPathComputationTopologyConstraint # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityUpdateconnectivityserviceInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service_id_or_name: str=None, topology_constraint: TapiPathComputationTopologyConstraint=None, end_point: List[TapiConnectivityConnectivityServiceEndPoint]=None, resilience_constraint: TapiConnectivityResilienceConstraint=None, routing_constraint: TapiPathComputationRoutingConstraint=None, state: str=None, connectivity_constraint: TapiConnectivityConnectivityConstraint=None): # noqa: E501 + """TapiConnectivityUpdateconnectivityserviceInput - a model defined in Swagger + + :param service_id_or_name: The service_id_or_name of this TapiConnectivityUpdateconnectivityserviceInput. # noqa: E501 + :type service_id_or_name: str + :param topology_constraint: The topology_constraint of this TapiConnectivityUpdateconnectivityserviceInput. # noqa: E501 + :type topology_constraint: TapiPathComputationTopologyConstraint + :param end_point: The end_point of this TapiConnectivityUpdateconnectivityserviceInput. # noqa: E501 + :type end_point: List[TapiConnectivityConnectivityServiceEndPoint] + :param resilience_constraint: The resilience_constraint of this TapiConnectivityUpdateconnectivityserviceInput. # noqa: E501 + :type resilience_constraint: TapiConnectivityResilienceConstraint + :param routing_constraint: The routing_constraint of this TapiConnectivityUpdateconnectivityserviceInput. # noqa: E501 + :type routing_constraint: TapiPathComputationRoutingConstraint + :param state: The state of this TapiConnectivityUpdateconnectivityserviceInput. # noqa: E501 + :type state: str + :param connectivity_constraint: The connectivity_constraint of this TapiConnectivityUpdateconnectivityserviceInput. # noqa: E501 + :type connectivity_constraint: TapiConnectivityConnectivityConstraint + """ + self.swagger_types = { + 'service_id_or_name': str, + 'topology_constraint': TapiPathComputationTopologyConstraint, + 'end_point': List[TapiConnectivityConnectivityServiceEndPoint], + 'resilience_constraint': TapiConnectivityResilienceConstraint, + 'routing_constraint': TapiPathComputationRoutingConstraint, + 'state': str, + 'connectivity_constraint': TapiConnectivityConnectivityConstraint + } + + self.attribute_map = { + 'service_id_or_name': 'service-id-or-name', + 'topology_constraint': 'topology-constraint', + 'end_point': 'end-point', + 'resilience_constraint': 'resilience-constraint', + 'routing_constraint': 'routing-constraint', + 'state': 'state', + 'connectivity_constraint': 'connectivity-constraint' + } + self._service_id_or_name = service_id_or_name + self._topology_constraint = topology_constraint + self._end_point = end_point + self._resilience_constraint = resilience_constraint + self._routing_constraint = routing_constraint + self._state = state + self._connectivity_constraint = connectivity_constraint + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityUpdateconnectivityserviceInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.updateconnectivityservice.Input of this TapiConnectivityUpdateconnectivityserviceInput. # noqa: E501 + :rtype: TapiConnectivityUpdateconnectivityserviceInput + """ + return util.deserialize_model(dikt, cls) + + @property + def service_id_or_name(self) -> str: + """Gets the service_id_or_name of this TapiConnectivityUpdateconnectivityserviceInput. + + none # noqa: E501 + + :return: The service_id_or_name of this TapiConnectivityUpdateconnectivityserviceInput. + :rtype: str + """ + return self._service_id_or_name + + @service_id_or_name.setter + def service_id_or_name(self, service_id_or_name: str): + """Sets the service_id_or_name of this TapiConnectivityUpdateconnectivityserviceInput. + + none # noqa: E501 + + :param service_id_or_name: The service_id_or_name of this TapiConnectivityUpdateconnectivityserviceInput. + :type service_id_or_name: str + """ + + self._service_id_or_name = service_id_or_name + + @property + def topology_constraint(self) -> TapiPathComputationTopologyConstraint: + """Gets the topology_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + + + :return: The topology_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + :rtype: TapiPathComputationTopologyConstraint + """ + return self._topology_constraint + + @topology_constraint.setter + def topology_constraint(self, topology_constraint: TapiPathComputationTopologyConstraint): + """Sets the topology_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + + + :param topology_constraint: The topology_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + :type topology_constraint: TapiPathComputationTopologyConstraint + """ + + self._topology_constraint = topology_constraint + + @property + def end_point(self) -> List[TapiConnectivityConnectivityServiceEndPoint]: + """Gets the end_point of this TapiConnectivityUpdateconnectivityserviceInput. + + none # noqa: E501 + + :return: The end_point of this TapiConnectivityUpdateconnectivityserviceInput. + :rtype: List[TapiConnectivityConnectivityServiceEndPoint] + """ + return self._end_point + + @end_point.setter + def end_point(self, end_point: List[TapiConnectivityConnectivityServiceEndPoint]): + """Sets the end_point of this TapiConnectivityUpdateconnectivityserviceInput. + + none # noqa: E501 + + :param end_point: The end_point of this TapiConnectivityUpdateconnectivityserviceInput. + :type end_point: List[TapiConnectivityConnectivityServiceEndPoint] + """ + + self._end_point = end_point + + @property + def resilience_constraint(self) -> TapiConnectivityResilienceConstraint: + """Gets the resilience_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + + + :return: The resilience_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + :rtype: TapiConnectivityResilienceConstraint + """ + return self._resilience_constraint + + @resilience_constraint.setter + def resilience_constraint(self, resilience_constraint: TapiConnectivityResilienceConstraint): + """Sets the resilience_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + + + :param resilience_constraint: The resilience_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + :type resilience_constraint: TapiConnectivityResilienceConstraint + """ + + self._resilience_constraint = resilience_constraint + + @property + def routing_constraint(self) -> TapiPathComputationRoutingConstraint: + """Gets the routing_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + + + :return: The routing_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + :rtype: TapiPathComputationRoutingConstraint + """ + return self._routing_constraint + + @routing_constraint.setter + def routing_constraint(self, routing_constraint: TapiPathComputationRoutingConstraint): + """Sets the routing_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + + + :param routing_constraint: The routing_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + :type routing_constraint: TapiPathComputationRoutingConstraint + """ + + self._routing_constraint = routing_constraint + + @property + def state(self) -> str: + """Gets the state of this TapiConnectivityUpdateconnectivityserviceInput. + + none # noqa: E501 + + :return: The state of this TapiConnectivityUpdateconnectivityserviceInput. + :rtype: str + """ + return self._state + + @state.setter + def state(self, state: str): + """Sets the state of this TapiConnectivityUpdateconnectivityserviceInput. + + none # noqa: E501 + + :param state: The state of this TapiConnectivityUpdateconnectivityserviceInput. + :type state: str + """ + + self._state = state + + @property + def connectivity_constraint(self) -> TapiConnectivityConnectivityConstraint: + """Gets the connectivity_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + + + :return: The connectivity_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + :rtype: TapiConnectivityConnectivityConstraint + """ + return self._connectivity_constraint + + @connectivity_constraint.setter + def connectivity_constraint(self, connectivity_constraint: TapiConnectivityConnectivityConstraint): + """Sets the connectivity_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + + + :param connectivity_constraint: The connectivity_constraint of this TapiConnectivityUpdateconnectivityserviceInput. + :type connectivity_constraint: TapiConnectivityConnectivityConstraint + """ + + self._connectivity_constraint = connectivity_constraint diff --git a/hackfest/tapi/server/tapi_server/models/tapi_connectivity_updateconnectivityservice_output.py b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_updateconnectivityservice_output.py new file mode 100644 index 0000000000000000000000000000000000000000..a9d2d85b4f5153176e3d91dd4074b1490a409d6e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_connectivity_updateconnectivityservice_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_connectivity_connectivity_service import TapiConnectivityConnectivityService # noqa: F401,E501 +from tapi_server import util + + +class TapiConnectivityUpdateconnectivityserviceOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service: TapiConnectivityConnectivityService=None): # noqa: E501 + """TapiConnectivityUpdateconnectivityserviceOutput - a model defined in Swagger + + :param service: The service of this TapiConnectivityUpdateconnectivityserviceOutput. # noqa: E501 + :type service: TapiConnectivityConnectivityService + """ + self.swagger_types = { + 'service': TapiConnectivityConnectivityService + } + + self.attribute_map = { + 'service': 'service' + } + self._service = service + + @classmethod + def from_dict(cls, dikt) -> 'TapiConnectivityUpdateconnectivityserviceOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.connectivity.updateconnectivityservice.Output of this TapiConnectivityUpdateconnectivityserviceOutput. # noqa: E501 + :rtype: TapiConnectivityUpdateconnectivityserviceOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def service(self) -> TapiConnectivityConnectivityService: + """Gets the service of this TapiConnectivityUpdateconnectivityserviceOutput. + + + :return: The service of this TapiConnectivityUpdateconnectivityserviceOutput. + :rtype: TapiConnectivityConnectivityService + """ + return self._service + + @service.setter + def service(self, service: TapiConnectivityConnectivityService): + """Sets the service of this TapiConnectivityUpdateconnectivityserviceOutput. + + + :param service: The service of this TapiConnectivityUpdateconnectivityserviceOutput. + :type service: TapiConnectivityConnectivityService + """ + + self._service = service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_alarm_info.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_alarm_info.py new file mode 100644 index 0000000000000000000000000000000000000000..51a759100a9cb0e447d620b51db4f5fa42dbbb5c --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_alarm_info.py @@ -0,0 +1,146 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_perceived_severity_type import TapiNotificationPerceivedSeverityType # noqa: F401,E501 +from tapi_server.models.tapi_notification_service_affecting import TapiNotificationServiceAffecting # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationAlarmInfo(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, perceived_severity: TapiNotificationPerceivedSeverityType=None, probable_cause: str=None, service_affecting: TapiNotificationServiceAffecting=None, is_transient: bool=False): # noqa: E501 + """TapiNotificationAlarmInfo - a model defined in Swagger + + :param perceived_severity: The perceived_severity of this TapiNotificationAlarmInfo. # noqa: E501 + :type perceived_severity: TapiNotificationPerceivedSeverityType + :param probable_cause: The probable_cause of this TapiNotificationAlarmInfo. # noqa: E501 + :type probable_cause: str + :param service_affecting: The service_affecting of this TapiNotificationAlarmInfo. # noqa: E501 + :type service_affecting: TapiNotificationServiceAffecting + :param is_transient: The is_transient of this TapiNotificationAlarmInfo. # noqa: E501 + :type is_transient: bool + """ + self.swagger_types = { + 'perceived_severity': TapiNotificationPerceivedSeverityType, + 'probable_cause': str, + 'service_affecting': TapiNotificationServiceAffecting, + 'is_transient': bool + } + + self.attribute_map = { + 'perceived_severity': 'perceived-severity', + 'probable_cause': 'probable-cause', + 'service_affecting': 'service-affecting', + 'is_transient': 'is-transient' + } + self._perceived_severity = perceived_severity + self._probable_cause = probable_cause + self._service_affecting = service_affecting + self._is_transient = is_transient + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationAlarmInfo': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.AlarmInfo of this TapiNotificationAlarmInfo. # noqa: E501 + :rtype: TapiNotificationAlarmInfo + """ + return util.deserialize_model(dikt, cls) + + @property + def perceived_severity(self) -> TapiNotificationPerceivedSeverityType: + """Gets the perceived_severity of this TapiNotificationAlarmInfo. + + + :return: The perceived_severity of this TapiNotificationAlarmInfo. + :rtype: TapiNotificationPerceivedSeverityType + """ + return self._perceived_severity + + @perceived_severity.setter + def perceived_severity(self, perceived_severity: TapiNotificationPerceivedSeverityType): + """Sets the perceived_severity of this TapiNotificationAlarmInfo. + + + :param perceived_severity: The perceived_severity of this TapiNotificationAlarmInfo. + :type perceived_severity: TapiNotificationPerceivedSeverityType + """ + + self._perceived_severity = perceived_severity + + @property + def probable_cause(self) -> str: + """Gets the probable_cause of this TapiNotificationAlarmInfo. + + none # noqa: E501 + + :return: The probable_cause of this TapiNotificationAlarmInfo. + :rtype: str + """ + return self._probable_cause + + @probable_cause.setter + def probable_cause(self, probable_cause: str): + """Sets the probable_cause of this TapiNotificationAlarmInfo. + + none # noqa: E501 + + :param probable_cause: The probable_cause of this TapiNotificationAlarmInfo. + :type probable_cause: str + """ + + self._probable_cause = probable_cause + + @property + def service_affecting(self) -> TapiNotificationServiceAffecting: + """Gets the service_affecting of this TapiNotificationAlarmInfo. + + + :return: The service_affecting of this TapiNotificationAlarmInfo. + :rtype: TapiNotificationServiceAffecting + """ + return self._service_affecting + + @service_affecting.setter + def service_affecting(self, service_affecting: TapiNotificationServiceAffecting): + """Sets the service_affecting of this TapiNotificationAlarmInfo. + + + :param service_affecting: The service_affecting of this TapiNotificationAlarmInfo. + :type service_affecting: TapiNotificationServiceAffecting + """ + + self._service_affecting = service_affecting + + @property + def is_transient(self) -> bool: + """Gets the is_transient of this TapiNotificationAlarmInfo. + + none # noqa: E501 + + :return: The is_transient of this TapiNotificationAlarmInfo. + :rtype: bool + """ + return self._is_transient + + @is_transient.setter + def is_transient(self, is_transient: bool): + """Sets the is_transient of this TapiNotificationAlarmInfo. + + none # noqa: E501 + + :param is_transient: The is_transient of this TapiNotificationAlarmInfo. + :type is_transient: bool + """ + + self._is_transient = is_transient diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_alarm_info_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_alarm_info_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..d0ac0bcb010d16c1fb3429ad9864662fce4e8bda --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_alarm_info_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_alarm_info import TapiNotificationAlarmInfo # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationAlarmInfoWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, alarm_info: TapiNotificationAlarmInfo=None): # noqa: E501 + """TapiNotificationAlarmInfoWrapper - a model defined in Swagger + + :param alarm_info: The alarm_info of this TapiNotificationAlarmInfoWrapper. # noqa: E501 + :type alarm_info: TapiNotificationAlarmInfo + """ + self.swagger_types = { + 'alarm_info': TapiNotificationAlarmInfo + } + + self.attribute_map = { + 'alarm_info': 'alarm-info' + } + self._alarm_info = alarm_info + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationAlarmInfoWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.AlarmInfoWrapper of this TapiNotificationAlarmInfoWrapper. # noqa: E501 + :rtype: TapiNotificationAlarmInfoWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def alarm_info(self) -> TapiNotificationAlarmInfo: + """Gets the alarm_info of this TapiNotificationAlarmInfoWrapper. + + + :return: The alarm_info of this TapiNotificationAlarmInfoWrapper. + :rtype: TapiNotificationAlarmInfo + """ + return self._alarm_info + + @alarm_info.setter + def alarm_info(self, alarm_info: TapiNotificationAlarmInfo): + """Sets the alarm_info of this TapiNotificationAlarmInfoWrapper. + + + :param alarm_info: The alarm_info of this TapiNotificationAlarmInfoWrapper. + :type alarm_info: TapiNotificationAlarmInfo + """ + + self._alarm_info = alarm_info diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_context_augmentation1.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_context_augmentation1.py new file mode 100644 index 0000000000000000000000000000000000000000..8d363452e9ab3ba9c564a0e77791c119be44276e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_context_augmentation1.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification_context import TapiNotificationNotificationContext # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationContextAugmentation1(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, notification_context: TapiNotificationNotificationContext=None): # noqa: E501 + """TapiNotificationContextAugmentation1 - a model defined in Swagger + + :param notification_context: The notification_context of this TapiNotificationContextAugmentation1. # noqa: E501 + :type notification_context: TapiNotificationNotificationContext + """ + self.swagger_types = { + 'notification_context': TapiNotificationNotificationContext + } + + self.attribute_map = { + 'notification_context': 'notification-context' + } + self._notification_context = notification_context + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationContextAugmentation1': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.ContextAugmentation1 of this TapiNotificationContextAugmentation1. # noqa: E501 + :rtype: TapiNotificationContextAugmentation1 + """ + return util.deserialize_model(dikt, cls) + + @property + def notification_context(self) -> TapiNotificationNotificationContext: + """Gets the notification_context of this TapiNotificationContextAugmentation1. + + + :return: The notification_context of this TapiNotificationContextAugmentation1. + :rtype: TapiNotificationNotificationContext + """ + return self._notification_context + + @notification_context.setter + def notification_context(self, notification_context: TapiNotificationNotificationContext): + """Sets the notification_context of this TapiNotificationContextAugmentation1. + + + :param notification_context: The notification_context of this TapiNotificationContextAugmentation1. + :type notification_context: TapiNotificationNotificationContext + """ + + self._notification_context = notification_context diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_create_notification_subscription_service.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_create_notification_subscription_service.py new file mode 100644 index 0000000000000000000000000000000000000000..93518225c0bb60ce41386242cf81c86725956260 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_create_notification_subscription_service.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_createnotificationsubscriptionservice_output import TapiNotificationCreatenotificationsubscriptionserviceOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationCreateNotificationSubscriptionService(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiNotificationCreatenotificationsubscriptionserviceOutput=None): # noqa: E501 + """TapiNotificationCreateNotificationSubscriptionService - a model defined in Swagger + + :param output: The output of this TapiNotificationCreateNotificationSubscriptionService. # noqa: E501 + :type output: TapiNotificationCreatenotificationsubscriptionserviceOutput + """ + self.swagger_types = { + 'output': TapiNotificationCreatenotificationsubscriptionserviceOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationCreateNotificationSubscriptionService': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.CreateNotificationSubscriptionService of this TapiNotificationCreateNotificationSubscriptionService. # noqa: E501 + :rtype: TapiNotificationCreateNotificationSubscriptionService + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiNotificationCreatenotificationsubscriptionserviceOutput: + """Gets the output of this TapiNotificationCreateNotificationSubscriptionService. + + + :return: The output of this TapiNotificationCreateNotificationSubscriptionService. + :rtype: TapiNotificationCreatenotificationsubscriptionserviceOutput + """ + return self._output + + @output.setter + def output(self, output: TapiNotificationCreatenotificationsubscriptionserviceOutput): + """Sets the output of this TapiNotificationCreateNotificationSubscriptionService. + + + :param output: The output of this TapiNotificationCreateNotificationSubscriptionService. + :type output: TapiNotificationCreatenotificationsubscriptionserviceOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_createnotificationsubscriptionservice_input.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_createnotificationsubscriptionservice_input.py new file mode 100644 index 0000000000000000000000000000000000000000..8b0572aa9da9d16e4a7dbe3816c5d2ac672146e4 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_createnotificationsubscriptionservice_input.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_subscription_filter import TapiNotificationSubscriptionFilter # noqa: F401,E501 +from tapi_server.models.tapi_notification_subscription_state import TapiNotificationSubscriptionState # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationCreatenotificationsubscriptionserviceInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, subscription_state: TapiNotificationSubscriptionState=None, subscription_filter: TapiNotificationSubscriptionFilter=None): # noqa: E501 + """TapiNotificationCreatenotificationsubscriptionserviceInput - a model defined in Swagger + + :param subscription_state: The subscription_state of this TapiNotificationCreatenotificationsubscriptionserviceInput. # noqa: E501 + :type subscription_state: TapiNotificationSubscriptionState + :param subscription_filter: The subscription_filter of this TapiNotificationCreatenotificationsubscriptionserviceInput. # noqa: E501 + :type subscription_filter: TapiNotificationSubscriptionFilter + """ + self.swagger_types = { + 'subscription_state': TapiNotificationSubscriptionState, + 'subscription_filter': TapiNotificationSubscriptionFilter + } + + self.attribute_map = { + 'subscription_state': 'subscription-state', + 'subscription_filter': 'subscription-filter' + } + self._subscription_state = subscription_state + self._subscription_filter = subscription_filter + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationCreatenotificationsubscriptionserviceInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.createnotificationsubscriptionservice.Input of this TapiNotificationCreatenotificationsubscriptionserviceInput. # noqa: E501 + :rtype: TapiNotificationCreatenotificationsubscriptionserviceInput + """ + return util.deserialize_model(dikt, cls) + + @property + def subscription_state(self) -> TapiNotificationSubscriptionState: + """Gets the subscription_state of this TapiNotificationCreatenotificationsubscriptionserviceInput. + + + :return: The subscription_state of this TapiNotificationCreatenotificationsubscriptionserviceInput. + :rtype: TapiNotificationSubscriptionState + """ + return self._subscription_state + + @subscription_state.setter + def subscription_state(self, subscription_state: TapiNotificationSubscriptionState): + """Sets the subscription_state of this TapiNotificationCreatenotificationsubscriptionserviceInput. + + + :param subscription_state: The subscription_state of this TapiNotificationCreatenotificationsubscriptionserviceInput. + :type subscription_state: TapiNotificationSubscriptionState + """ + + self._subscription_state = subscription_state + + @property + def subscription_filter(self) -> TapiNotificationSubscriptionFilter: + """Gets the subscription_filter of this TapiNotificationCreatenotificationsubscriptionserviceInput. + + + :return: The subscription_filter of this TapiNotificationCreatenotificationsubscriptionserviceInput. + :rtype: TapiNotificationSubscriptionFilter + """ + return self._subscription_filter + + @subscription_filter.setter + def subscription_filter(self, subscription_filter: TapiNotificationSubscriptionFilter): + """Sets the subscription_filter of this TapiNotificationCreatenotificationsubscriptionserviceInput. + + + :param subscription_filter: The subscription_filter of this TapiNotificationCreatenotificationsubscriptionserviceInput. + :type subscription_filter: TapiNotificationSubscriptionFilter + """ + + self._subscription_filter = subscription_filter diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_createnotificationsubscriptionservice_output.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_createnotificationsubscriptionservice_output.py new file mode 100644 index 0000000000000000000000000000000000000000..52426ffab3c436b1a436e9fde9f9634e75a6e0a6 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_createnotificationsubscriptionservice_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification_subscription_service import TapiNotificationNotificationSubscriptionService # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationCreatenotificationsubscriptionserviceOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, subscription_service: TapiNotificationNotificationSubscriptionService=None): # noqa: E501 + """TapiNotificationCreatenotificationsubscriptionserviceOutput - a model defined in Swagger + + :param subscription_service: The subscription_service of this TapiNotificationCreatenotificationsubscriptionserviceOutput. # noqa: E501 + :type subscription_service: TapiNotificationNotificationSubscriptionService + """ + self.swagger_types = { + 'subscription_service': TapiNotificationNotificationSubscriptionService + } + + self.attribute_map = { + 'subscription_service': 'subscription-service' + } + self._subscription_service = subscription_service + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationCreatenotificationsubscriptionserviceOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.createnotificationsubscriptionservice.Output of this TapiNotificationCreatenotificationsubscriptionserviceOutput. # noqa: E501 + :rtype: TapiNotificationCreatenotificationsubscriptionserviceOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def subscription_service(self) -> TapiNotificationNotificationSubscriptionService: + """Gets the subscription_service of this TapiNotificationCreatenotificationsubscriptionserviceOutput. + + + :return: The subscription_service of this TapiNotificationCreatenotificationsubscriptionserviceOutput. + :rtype: TapiNotificationNotificationSubscriptionService + """ + return self._subscription_service + + @subscription_service.setter + def subscription_service(self, subscription_service: TapiNotificationNotificationSubscriptionService): + """Sets the subscription_service of this TapiNotificationCreatenotificationsubscriptionserviceOutput. + + + :param subscription_service: The subscription_service of this TapiNotificationCreatenotificationsubscriptionserviceOutput. + :type subscription_service: TapiNotificationNotificationSubscriptionService + """ + + self._subscription_service = subscription_service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_delete_notification_subscription_service.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_delete_notification_subscription_service.py new file mode 100644 index 0000000000000000000000000000000000000000..c38cfa685afa1c54befcc85c2e0a046070ce79b3 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_delete_notification_subscription_service.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_deletenotificationsubscriptionservice_output import TapiNotificationDeletenotificationsubscriptionserviceOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationDeleteNotificationSubscriptionService(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiNotificationDeletenotificationsubscriptionserviceOutput=None): # noqa: E501 + """TapiNotificationDeleteNotificationSubscriptionService - a model defined in Swagger + + :param output: The output of this TapiNotificationDeleteNotificationSubscriptionService. # noqa: E501 + :type output: TapiNotificationDeletenotificationsubscriptionserviceOutput + """ + self.swagger_types = { + 'output': TapiNotificationDeletenotificationsubscriptionserviceOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationDeleteNotificationSubscriptionService': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.DeleteNotificationSubscriptionService of this TapiNotificationDeleteNotificationSubscriptionService. # noqa: E501 + :rtype: TapiNotificationDeleteNotificationSubscriptionService + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiNotificationDeletenotificationsubscriptionserviceOutput: + """Gets the output of this TapiNotificationDeleteNotificationSubscriptionService. + + + :return: The output of this TapiNotificationDeleteNotificationSubscriptionService. + :rtype: TapiNotificationDeletenotificationsubscriptionserviceOutput + """ + return self._output + + @output.setter + def output(self, output: TapiNotificationDeletenotificationsubscriptionserviceOutput): + """Sets the output of this TapiNotificationDeleteNotificationSubscriptionService. + + + :param output: The output of this TapiNotificationDeleteNotificationSubscriptionService. + :type output: TapiNotificationDeletenotificationsubscriptionserviceOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_deletenotificationsubscriptionservice_input.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_deletenotificationsubscriptionservice_input.py new file mode 100644 index 0000000000000000000000000000000000000000..c1c2ca6aa21fa142024d9c385ce5ad133c969f97 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_deletenotificationsubscriptionservice_input.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationDeletenotificationsubscriptionserviceInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, subscription_id_or_name: str=None): # noqa: E501 + """TapiNotificationDeletenotificationsubscriptionserviceInput - a model defined in Swagger + + :param subscription_id_or_name: The subscription_id_or_name of this TapiNotificationDeletenotificationsubscriptionserviceInput. # noqa: E501 + :type subscription_id_or_name: str + """ + self.swagger_types = { + 'subscription_id_or_name': str + } + + self.attribute_map = { + 'subscription_id_or_name': 'subscription-id-or-name' + } + self._subscription_id_or_name = subscription_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationDeletenotificationsubscriptionserviceInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.deletenotificationsubscriptionservice.Input of this TapiNotificationDeletenotificationsubscriptionserviceInput. # noqa: E501 + :rtype: TapiNotificationDeletenotificationsubscriptionserviceInput + """ + return util.deserialize_model(dikt, cls) + + @property + def subscription_id_or_name(self) -> str: + """Gets the subscription_id_or_name of this TapiNotificationDeletenotificationsubscriptionserviceInput. + + none # noqa: E501 + + :return: The subscription_id_or_name of this TapiNotificationDeletenotificationsubscriptionserviceInput. + :rtype: str + """ + return self._subscription_id_or_name + + @subscription_id_or_name.setter + def subscription_id_or_name(self, subscription_id_or_name: str): + """Sets the subscription_id_or_name of this TapiNotificationDeletenotificationsubscriptionserviceInput. + + none # noqa: E501 + + :param subscription_id_or_name: The subscription_id_or_name of this TapiNotificationDeletenotificationsubscriptionserviceInput. + :type subscription_id_or_name: str + """ + + self._subscription_id_or_name = subscription_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_deletenotificationsubscriptionservice_output.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_deletenotificationsubscriptionservice_output.py new file mode 100644 index 0000000000000000000000000000000000000000..9746d00f257b5bf879c03b8e3c05a55f961e89a3 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_deletenotificationsubscriptionservice_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification_subscription_service import TapiNotificationNotificationSubscriptionService # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationDeletenotificationsubscriptionserviceOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, subscription_service: TapiNotificationNotificationSubscriptionService=None): # noqa: E501 + """TapiNotificationDeletenotificationsubscriptionserviceOutput - a model defined in Swagger + + :param subscription_service: The subscription_service of this TapiNotificationDeletenotificationsubscriptionserviceOutput. # noqa: E501 + :type subscription_service: TapiNotificationNotificationSubscriptionService + """ + self.swagger_types = { + 'subscription_service': TapiNotificationNotificationSubscriptionService + } + + self.attribute_map = { + 'subscription_service': 'subscription-service' + } + self._subscription_service = subscription_service + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationDeletenotificationsubscriptionserviceOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.deletenotificationsubscriptionservice.Output of this TapiNotificationDeletenotificationsubscriptionserviceOutput. # noqa: E501 + :rtype: TapiNotificationDeletenotificationsubscriptionserviceOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def subscription_service(self) -> TapiNotificationNotificationSubscriptionService: + """Gets the subscription_service of this TapiNotificationDeletenotificationsubscriptionserviceOutput. + + + :return: The subscription_service of this TapiNotificationDeletenotificationsubscriptionserviceOutput. + :rtype: TapiNotificationNotificationSubscriptionService + """ + return self._subscription_service + + @subscription_service.setter + def subscription_service(self, subscription_service: TapiNotificationNotificationSubscriptionService): + """Sets the subscription_service of this TapiNotificationDeletenotificationsubscriptionserviceOutput. + + + :param subscription_service: The subscription_service of this TapiNotificationDeletenotificationsubscriptionserviceOutput. + :type subscription_service: TapiNotificationNotificationSubscriptionService + """ + + self._subscription_service = subscription_service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_get_notification_list.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_get_notification_list.py new file mode 100644 index 0000000000000000000000000000000000000000..3b6ca4fd656c470eb45525c725b0d215244af505 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_get_notification_list.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_getnotificationlist_output import TapiNotificationGetnotificationlistOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationGetNotificationList(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiNotificationGetnotificationlistOutput=None): # noqa: E501 + """TapiNotificationGetNotificationList - a model defined in Swagger + + :param output: The output of this TapiNotificationGetNotificationList. # noqa: E501 + :type output: TapiNotificationGetnotificationlistOutput + """ + self.swagger_types = { + 'output': TapiNotificationGetnotificationlistOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationGetNotificationList': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.GetNotificationList of this TapiNotificationGetNotificationList. # noqa: E501 + :rtype: TapiNotificationGetNotificationList + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiNotificationGetnotificationlistOutput: + """Gets the output of this TapiNotificationGetNotificationList. + + + :return: The output of this TapiNotificationGetNotificationList. + :rtype: TapiNotificationGetnotificationlistOutput + """ + return self._output + + @output.setter + def output(self, output: TapiNotificationGetnotificationlistOutput): + """Sets the output of this TapiNotificationGetNotificationList. + + + :param output: The output of this TapiNotificationGetNotificationList. + :type output: TapiNotificationGetnotificationlistOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_get_notification_subscription_service_details.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_get_notification_subscription_service_details.py new file mode 100644 index 0000000000000000000000000000000000000000..50bf3f6a896cef26e68a6ed4c79563214ac26530 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_get_notification_subscription_service_details.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_getnotificationsubscriptionservicedetails_output import TapiNotificationGetnotificationsubscriptionservicedetailsOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationGetNotificationSubscriptionServiceDetails(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiNotificationGetnotificationsubscriptionservicedetailsOutput=None): # noqa: E501 + """TapiNotificationGetNotificationSubscriptionServiceDetails - a model defined in Swagger + + :param output: The output of this TapiNotificationGetNotificationSubscriptionServiceDetails. # noqa: E501 + :type output: TapiNotificationGetnotificationsubscriptionservicedetailsOutput + """ + self.swagger_types = { + 'output': TapiNotificationGetnotificationsubscriptionservicedetailsOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationGetNotificationSubscriptionServiceDetails': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.GetNotificationSubscriptionServiceDetails of this TapiNotificationGetNotificationSubscriptionServiceDetails. # noqa: E501 + :rtype: TapiNotificationGetNotificationSubscriptionServiceDetails + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiNotificationGetnotificationsubscriptionservicedetailsOutput: + """Gets the output of this TapiNotificationGetNotificationSubscriptionServiceDetails. + + + :return: The output of this TapiNotificationGetNotificationSubscriptionServiceDetails. + :rtype: TapiNotificationGetnotificationsubscriptionservicedetailsOutput + """ + return self._output + + @output.setter + def output(self, output: TapiNotificationGetnotificationsubscriptionservicedetailsOutput): + """Sets the output of this TapiNotificationGetNotificationSubscriptionServiceDetails. + + + :param output: The output of this TapiNotificationGetNotificationSubscriptionServiceDetails. + :type output: TapiNotificationGetnotificationsubscriptionservicedetailsOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_get_notification_subscription_service_list.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_get_notification_subscription_service_list.py new file mode 100644 index 0000000000000000000000000000000000000000..580435c0cf76cc3fa6e4616d1969d6466e8f0931 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_get_notification_subscription_service_list.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_getnotificationsubscriptionservicelist_output import TapiNotificationGetnotificationsubscriptionservicelistOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationGetNotificationSubscriptionServiceList(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiNotificationGetnotificationsubscriptionservicelistOutput=None): # noqa: E501 + """TapiNotificationGetNotificationSubscriptionServiceList - a model defined in Swagger + + :param output: The output of this TapiNotificationGetNotificationSubscriptionServiceList. # noqa: E501 + :type output: TapiNotificationGetnotificationsubscriptionservicelistOutput + """ + self.swagger_types = { + 'output': TapiNotificationGetnotificationsubscriptionservicelistOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationGetNotificationSubscriptionServiceList': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.GetNotificationSubscriptionServiceList of this TapiNotificationGetNotificationSubscriptionServiceList. # noqa: E501 + :rtype: TapiNotificationGetNotificationSubscriptionServiceList + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiNotificationGetnotificationsubscriptionservicelistOutput: + """Gets the output of this TapiNotificationGetNotificationSubscriptionServiceList. + + + :return: The output of this TapiNotificationGetNotificationSubscriptionServiceList. + :rtype: TapiNotificationGetnotificationsubscriptionservicelistOutput + """ + return self._output + + @output.setter + def output(self, output: TapiNotificationGetnotificationsubscriptionservicelistOutput): + """Sets the output of this TapiNotificationGetNotificationSubscriptionServiceList. + + + :param output: The output of this TapiNotificationGetNotificationSubscriptionServiceList. + :type output: TapiNotificationGetnotificationsubscriptionservicelistOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_get_supported_notification_types.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_get_supported_notification_types.py new file mode 100644 index 0000000000000000000000000000000000000000..3b93d784817c938b93162f984cfa78b25ce3f566 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_get_supported_notification_types.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_getsupportednotificationtypes_output import TapiNotificationGetsupportednotificationtypesOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationGetSupportedNotificationTypes(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiNotificationGetsupportednotificationtypesOutput=None): # noqa: E501 + """TapiNotificationGetSupportedNotificationTypes - a model defined in Swagger + + :param output: The output of this TapiNotificationGetSupportedNotificationTypes. # noqa: E501 + :type output: TapiNotificationGetsupportednotificationtypesOutput + """ + self.swagger_types = { + 'output': TapiNotificationGetsupportednotificationtypesOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationGetSupportedNotificationTypes': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.GetSupportedNotificationTypes of this TapiNotificationGetSupportedNotificationTypes. # noqa: E501 + :rtype: TapiNotificationGetSupportedNotificationTypes + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiNotificationGetsupportednotificationtypesOutput: + """Gets the output of this TapiNotificationGetSupportedNotificationTypes. + + + :return: The output of this TapiNotificationGetSupportedNotificationTypes. + :rtype: TapiNotificationGetsupportednotificationtypesOutput + """ + return self._output + + @output.setter + def output(self, output: TapiNotificationGetsupportednotificationtypesOutput): + """Sets the output of this TapiNotificationGetSupportedNotificationTypes. + + + :param output: The output of this TapiNotificationGetSupportedNotificationTypes. + :type output: TapiNotificationGetsupportednotificationtypesOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationlist_input.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationlist_input.py new file mode 100644 index 0000000000000000000000000000000000000000..f2fe7c6f4e3ad837e97a9b0de1b4a5e998a6805b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationlist_input.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationGetnotificationlistInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, time_period: str=None, subscription_id_or_name: str=None): # noqa: E501 + """TapiNotificationGetnotificationlistInput - a model defined in Swagger + + :param time_period: The time_period of this TapiNotificationGetnotificationlistInput. # noqa: E501 + :type time_period: str + :param subscription_id_or_name: The subscription_id_or_name of this TapiNotificationGetnotificationlistInput. # noqa: E501 + :type subscription_id_or_name: str + """ + self.swagger_types = { + 'time_period': str, + 'subscription_id_or_name': str + } + + self.attribute_map = { + 'time_period': 'time-period', + 'subscription_id_or_name': 'subscription-id-or-name' + } + self._time_period = time_period + self._subscription_id_or_name = subscription_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationGetnotificationlistInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.getnotificationlist.Input of this TapiNotificationGetnotificationlistInput. # noqa: E501 + :rtype: TapiNotificationGetnotificationlistInput + """ + return util.deserialize_model(dikt, cls) + + @property + def time_period(self) -> str: + """Gets the time_period of this TapiNotificationGetnotificationlistInput. + + none # noqa: E501 + + :return: The time_period of this TapiNotificationGetnotificationlistInput. + :rtype: str + """ + return self._time_period + + @time_period.setter + def time_period(self, time_period: str): + """Sets the time_period of this TapiNotificationGetnotificationlistInput. + + none # noqa: E501 + + :param time_period: The time_period of this TapiNotificationGetnotificationlistInput. + :type time_period: str + """ + + self._time_period = time_period + + @property + def subscription_id_or_name(self) -> str: + """Gets the subscription_id_or_name of this TapiNotificationGetnotificationlistInput. + + none # noqa: E501 + + :return: The subscription_id_or_name of this TapiNotificationGetnotificationlistInput. + :rtype: str + """ + return self._subscription_id_or_name + + @subscription_id_or_name.setter + def subscription_id_or_name(self, subscription_id_or_name: str): + """Sets the subscription_id_or_name of this TapiNotificationGetnotificationlistInput. + + none # noqa: E501 + + :param subscription_id_or_name: The subscription_id_or_name of this TapiNotificationGetnotificationlistInput. + :type subscription_id_or_name: str + """ + + self._subscription_id_or_name = subscription_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationlist_output.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationlist_output.py new file mode 100644 index 0000000000000000000000000000000000000000..b2af0be12f49cc6f71795863b8cdc135192ba165 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationlist_output.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification import TapiNotificationNotification # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationGetnotificationlistOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, notification: List[TapiNotificationNotification]=None): # noqa: E501 + """TapiNotificationGetnotificationlistOutput - a model defined in Swagger + + :param notification: The notification of this TapiNotificationGetnotificationlistOutput. # noqa: E501 + :type notification: List[TapiNotificationNotification] + """ + self.swagger_types = { + 'notification': List[TapiNotificationNotification] + } + + self.attribute_map = { + 'notification': 'notification' + } + self._notification = notification + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationGetnotificationlistOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.getnotificationlist.Output of this TapiNotificationGetnotificationlistOutput. # noqa: E501 + :rtype: TapiNotificationGetnotificationlistOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def notification(self) -> List[TapiNotificationNotification]: + """Gets the notification of this TapiNotificationGetnotificationlistOutput. + + none # noqa: E501 + + :return: The notification of this TapiNotificationGetnotificationlistOutput. + :rtype: List[TapiNotificationNotification] + """ + return self._notification + + @notification.setter + def notification(self, notification: List[TapiNotificationNotification]): + """Sets the notification of this TapiNotificationGetnotificationlistOutput. + + none # noqa: E501 + + :param notification: The notification of this TapiNotificationGetnotificationlistOutput. + :type notification: List[TapiNotificationNotification] + """ + + self._notification = notification diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationsubscriptionservicedetails_input.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationsubscriptionservicedetails_input.py new file mode 100644 index 0000000000000000000000000000000000000000..acf36fec45e6fe483464b5b243bed97c8ebc5036 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationsubscriptionservicedetails_input.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationGetnotificationsubscriptionservicedetailsInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, subscription_id_or_name: str=None): # noqa: E501 + """TapiNotificationGetnotificationsubscriptionservicedetailsInput - a model defined in Swagger + + :param subscription_id_or_name: The subscription_id_or_name of this TapiNotificationGetnotificationsubscriptionservicedetailsInput. # noqa: E501 + :type subscription_id_or_name: str + """ + self.swagger_types = { + 'subscription_id_or_name': str + } + + self.attribute_map = { + 'subscription_id_or_name': 'subscription-id-or-name' + } + self._subscription_id_or_name = subscription_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationGetnotificationsubscriptionservicedetailsInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.getnotificationsubscriptionservicedetails.Input of this TapiNotificationGetnotificationsubscriptionservicedetailsInput. # noqa: E501 + :rtype: TapiNotificationGetnotificationsubscriptionservicedetailsInput + """ + return util.deserialize_model(dikt, cls) + + @property + def subscription_id_or_name(self) -> str: + """Gets the subscription_id_or_name of this TapiNotificationGetnotificationsubscriptionservicedetailsInput. + + none # noqa: E501 + + :return: The subscription_id_or_name of this TapiNotificationGetnotificationsubscriptionservicedetailsInput. + :rtype: str + """ + return self._subscription_id_or_name + + @subscription_id_or_name.setter + def subscription_id_or_name(self, subscription_id_or_name: str): + """Sets the subscription_id_or_name of this TapiNotificationGetnotificationsubscriptionservicedetailsInput. + + none # noqa: E501 + + :param subscription_id_or_name: The subscription_id_or_name of this TapiNotificationGetnotificationsubscriptionservicedetailsInput. + :type subscription_id_or_name: str + """ + + self._subscription_id_or_name = subscription_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationsubscriptionservicedetails_output.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationsubscriptionservicedetails_output.py new file mode 100644 index 0000000000000000000000000000000000000000..35148ee279d118f4d96ca578053950e10afefa15 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationsubscriptionservicedetails_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification_subscription_service import TapiNotificationNotificationSubscriptionService # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationGetnotificationsubscriptionservicedetailsOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, subscription_service: TapiNotificationNotificationSubscriptionService=None): # noqa: E501 + """TapiNotificationGetnotificationsubscriptionservicedetailsOutput - a model defined in Swagger + + :param subscription_service: The subscription_service of this TapiNotificationGetnotificationsubscriptionservicedetailsOutput. # noqa: E501 + :type subscription_service: TapiNotificationNotificationSubscriptionService + """ + self.swagger_types = { + 'subscription_service': TapiNotificationNotificationSubscriptionService + } + + self.attribute_map = { + 'subscription_service': 'subscription-service' + } + self._subscription_service = subscription_service + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationGetnotificationsubscriptionservicedetailsOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.getnotificationsubscriptionservicedetails.Output of this TapiNotificationGetnotificationsubscriptionservicedetailsOutput. # noqa: E501 + :rtype: TapiNotificationGetnotificationsubscriptionservicedetailsOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def subscription_service(self) -> TapiNotificationNotificationSubscriptionService: + """Gets the subscription_service of this TapiNotificationGetnotificationsubscriptionservicedetailsOutput. + + + :return: The subscription_service of this TapiNotificationGetnotificationsubscriptionservicedetailsOutput. + :rtype: TapiNotificationNotificationSubscriptionService + """ + return self._subscription_service + + @subscription_service.setter + def subscription_service(self, subscription_service: TapiNotificationNotificationSubscriptionService): + """Sets the subscription_service of this TapiNotificationGetnotificationsubscriptionservicedetailsOutput. + + + :param subscription_service: The subscription_service of this TapiNotificationGetnotificationsubscriptionservicedetailsOutput. + :type subscription_service: TapiNotificationNotificationSubscriptionService + """ + + self._subscription_service = subscription_service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationsubscriptionservicelist_output.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationsubscriptionservicelist_output.py new file mode 100644 index 0000000000000000000000000000000000000000..1a6511724fcd939df13231d7bb537e75f32c6a93 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_getnotificationsubscriptionservicelist_output.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification_subscription_service import TapiNotificationNotificationSubscriptionService # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationGetnotificationsubscriptionservicelistOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, subscription_service: List[TapiNotificationNotificationSubscriptionService]=None): # noqa: E501 + """TapiNotificationGetnotificationsubscriptionservicelistOutput - a model defined in Swagger + + :param subscription_service: The subscription_service of this TapiNotificationGetnotificationsubscriptionservicelistOutput. # noqa: E501 + :type subscription_service: List[TapiNotificationNotificationSubscriptionService] + """ + self.swagger_types = { + 'subscription_service': List[TapiNotificationNotificationSubscriptionService] + } + + self.attribute_map = { + 'subscription_service': 'subscription-service' + } + self._subscription_service = subscription_service + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationGetnotificationsubscriptionservicelistOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.getnotificationsubscriptionservicelist.Output of this TapiNotificationGetnotificationsubscriptionservicelistOutput. # noqa: E501 + :rtype: TapiNotificationGetnotificationsubscriptionservicelistOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def subscription_service(self) -> List[TapiNotificationNotificationSubscriptionService]: + """Gets the subscription_service of this TapiNotificationGetnotificationsubscriptionservicelistOutput. + + none # noqa: E501 + + :return: The subscription_service of this TapiNotificationGetnotificationsubscriptionservicelistOutput. + :rtype: List[TapiNotificationNotificationSubscriptionService] + """ + return self._subscription_service + + @subscription_service.setter + def subscription_service(self, subscription_service: List[TapiNotificationNotificationSubscriptionService]): + """Sets the subscription_service of this TapiNotificationGetnotificationsubscriptionservicelistOutput. + + none # noqa: E501 + + :param subscription_service: The subscription_service of this TapiNotificationGetnotificationsubscriptionservicelistOutput. + :type subscription_service: List[TapiNotificationNotificationSubscriptionService] + """ + + self._subscription_service = subscription_service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_getsupportednotificationtypes_output.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_getsupportednotificationtypes_output.py new file mode 100644 index 0000000000000000000000000000000000000000..e1138dc8eb6704a7cf02d708ff9dfd9caa7c1bb7 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_getsupportednotificationtypes_output.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification_type import TapiNotificationNotificationType # noqa: F401,E501 +from tapi_server.models.tapi_notification_object_type import TapiNotificationObjectType # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationGetsupportednotificationtypesOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, supported_object_types: List[TapiNotificationObjectType]=None, supported_notification_types: List[TapiNotificationNotificationType]=None): # noqa: E501 + """TapiNotificationGetsupportednotificationtypesOutput - a model defined in Swagger + + :param supported_object_types: The supported_object_types of this TapiNotificationGetsupportednotificationtypesOutput. # noqa: E501 + :type supported_object_types: List[TapiNotificationObjectType] + :param supported_notification_types: The supported_notification_types of this TapiNotificationGetsupportednotificationtypesOutput. # noqa: E501 + :type supported_notification_types: List[TapiNotificationNotificationType] + """ + self.swagger_types = { + 'supported_object_types': List[TapiNotificationObjectType], + 'supported_notification_types': List[TapiNotificationNotificationType] + } + + self.attribute_map = { + 'supported_object_types': 'supported-object-types', + 'supported_notification_types': 'supported-notification-types' + } + self._supported_object_types = supported_object_types + self._supported_notification_types = supported_notification_types + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationGetsupportednotificationtypesOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.getsupportednotificationtypes.Output of this TapiNotificationGetsupportednotificationtypesOutput. # noqa: E501 + :rtype: TapiNotificationGetsupportednotificationtypesOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def supported_object_types(self) -> List[TapiNotificationObjectType]: + """Gets the supported_object_types of this TapiNotificationGetsupportednotificationtypesOutput. + + none # noqa: E501 + + :return: The supported_object_types of this TapiNotificationGetsupportednotificationtypesOutput. + :rtype: List[TapiNotificationObjectType] + """ + return self._supported_object_types + + @supported_object_types.setter + def supported_object_types(self, supported_object_types: List[TapiNotificationObjectType]): + """Sets the supported_object_types of this TapiNotificationGetsupportednotificationtypesOutput. + + none # noqa: E501 + + :param supported_object_types: The supported_object_types of this TapiNotificationGetsupportednotificationtypesOutput. + :type supported_object_types: List[TapiNotificationObjectType] + """ + + self._supported_object_types = supported_object_types + + @property + def supported_notification_types(self) -> List[TapiNotificationNotificationType]: + """Gets the supported_notification_types of this TapiNotificationGetsupportednotificationtypesOutput. + + none # noqa: E501 + + :return: The supported_notification_types of this TapiNotificationGetsupportednotificationtypesOutput. + :rtype: List[TapiNotificationNotificationType] + """ + return self._supported_notification_types + + @supported_notification_types.setter + def supported_notification_types(self, supported_notification_types: List[TapiNotificationNotificationType]): + """Sets the supported_notification_types of this TapiNotificationGetsupportednotificationtypesOutput. + + none # noqa: E501 + + :param supported_notification_types: The supported_notification_types of this TapiNotificationGetsupportednotificationtypesOutput. + :type supported_notification_types: List[TapiNotificationNotificationType] + """ + + self._supported_notification_types = supported_notification_types diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_name_and_value_change.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_name_and_value_change.py new file mode 100644 index 0000000000000000000000000000000000000000..b73a13f13cf5a1a2db45656a5badf63bac3edfb1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_name_and_value_change.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationNameAndValueChange(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, value_name: str=None, old_value: str=None, new_value: str=None): # noqa: E501 + """TapiNotificationNameAndValueChange - a model defined in Swagger + + :param value_name: The value_name of this TapiNotificationNameAndValueChange. # noqa: E501 + :type value_name: str + :param old_value: The old_value of this TapiNotificationNameAndValueChange. # noqa: E501 + :type old_value: str + :param new_value: The new_value of this TapiNotificationNameAndValueChange. # noqa: E501 + :type new_value: str + """ + self.swagger_types = { + 'value_name': str, + 'old_value': str, + 'new_value': str + } + + self.attribute_map = { + 'value_name': 'value-name', + 'old_value': 'old-value', + 'new_value': 'new-value' + } + self._value_name = value_name + self._old_value = old_value + self._new_value = new_value + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNameAndValueChange': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.NameAndValueChange of this TapiNotificationNameAndValueChange. # noqa: E501 + :rtype: TapiNotificationNameAndValueChange + """ + return util.deserialize_model(dikt, cls) + + @property + def value_name(self) -> str: + """Gets the value_name of this TapiNotificationNameAndValueChange. + + The name of the value. The value need not have a name. # noqa: E501 + + :return: The value_name of this TapiNotificationNameAndValueChange. + :rtype: str + """ + return self._value_name + + @value_name.setter + def value_name(self, value_name: str): + """Sets the value_name of this TapiNotificationNameAndValueChange. + + The name of the value. The value need not have a name. # noqa: E501 + + :param value_name: The value_name of this TapiNotificationNameAndValueChange. + :type value_name: str + """ + + self._value_name = value_name + + @property + def old_value(self) -> str: + """Gets the old_value of this TapiNotificationNameAndValueChange. + + The value # noqa: E501 + + :return: The old_value of this TapiNotificationNameAndValueChange. + :rtype: str + """ + return self._old_value + + @old_value.setter + def old_value(self, old_value: str): + """Sets the old_value of this TapiNotificationNameAndValueChange. + + The value # noqa: E501 + + :param old_value: The old_value of this TapiNotificationNameAndValueChange. + :type old_value: str + """ + + self._old_value = old_value + + @property + def new_value(self) -> str: + """Gets the new_value of this TapiNotificationNameAndValueChange. + + The value # noqa: E501 + + :return: The new_value of this TapiNotificationNameAndValueChange. + :rtype: str + """ + return self._new_value + + @new_value.setter + def new_value(self, new_value: str): + """Sets the new_value of this TapiNotificationNameAndValueChange. + + The value # noqa: E501 + + :param new_value: The new_value of this TapiNotificationNameAndValueChange. + :type new_value: str + """ + + self._new_value = new_value diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_name_and_value_change_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_name_and_value_change_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..3911ae8b9deb9df8b2116a8bf88657b8a30b0b73 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_name_and_value_change_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_name_and_value_change import TapiNotificationNameAndValueChange # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationNameAndValueChangeWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, changed_attributes: TapiNotificationNameAndValueChange=None): # noqa: E501 + """TapiNotificationNameAndValueChangeWrapper - a model defined in Swagger + + :param changed_attributes: The changed_attributes of this TapiNotificationNameAndValueChangeWrapper. # noqa: E501 + :type changed_attributes: TapiNotificationNameAndValueChange + """ + self.swagger_types = { + 'changed_attributes': TapiNotificationNameAndValueChange + } + + self.attribute_map = { + 'changed_attributes': 'changed-attributes' + } + self._changed_attributes = changed_attributes + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNameAndValueChangeWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.NameAndValueChangeWrapper of this TapiNotificationNameAndValueChangeWrapper. # noqa: E501 + :rtype: TapiNotificationNameAndValueChangeWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def changed_attributes(self) -> TapiNotificationNameAndValueChange: + """Gets the changed_attributes of this TapiNotificationNameAndValueChangeWrapper. + + + :return: The changed_attributes of this TapiNotificationNameAndValueChangeWrapper. + :rtype: TapiNotificationNameAndValueChange + """ + return self._changed_attributes + + @changed_attributes.setter + def changed_attributes(self, changed_attributes: TapiNotificationNameAndValueChange): + """Sets the changed_attributes of this TapiNotificationNameAndValueChangeWrapper. + + + :param changed_attributes: The changed_attributes of this TapiNotificationNameAndValueChangeWrapper. + :type changed_attributes: TapiNotificationNameAndValueChange + """ + + self._changed_attributes = changed_attributes diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_notification.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification.py new file mode 100644 index 0000000000000000000000000000000000000000..df83fd5889de69dfe5774363d25caa0be0053784 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification.py @@ -0,0 +1,453 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_notification_alarm_info import TapiNotificationAlarmInfo # noqa: F401,E501 +from tapi_server.models.tapi_notification_name_and_value_change import TapiNotificationNameAndValueChange # noqa: F401,E501 +from tapi_server.models.tapi_notification_notification_type import TapiNotificationNotificationType # noqa: F401,E501 +from tapi_server.models.tapi_notification_object_type import TapiNotificationObjectType # noqa: F401,E501 +from tapi_server.models.tapi_notification_source_indicator import TapiNotificationSourceIndicator # noqa: F401,E501 +from tapi_server.models.tapi_notification_tca_info import TapiNotificationTcaInfo # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationNotification(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None, target_object_type: TapiNotificationObjectType=None, additional_text: str=None, event_time_stamp: str=None, additional_info: List[TapiCommonNameAndValue]=None, sequence_number: int=None, tca_info: TapiNotificationTcaInfo=None, target_object_identifier: str=None, notification_type: TapiNotificationNotificationType=None, target_object_name: List[TapiCommonNameAndValue]=None, layer_protocol_name: TapiCommonLayerProtocolName=None, source_indicator: TapiNotificationSourceIndicator=None, alarm_info: TapiNotificationAlarmInfo=None, changed_attributes: List[TapiNotificationNameAndValueChange]=None): # noqa: E501 + """TapiNotificationNotification - a model defined in Swagger + + :param name: The name of this TapiNotificationNotification. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiNotificationNotification. # noqa: E501 + :type uuid: str + :param target_object_type: The target_object_type of this TapiNotificationNotification. # noqa: E501 + :type target_object_type: TapiNotificationObjectType + :param additional_text: The additional_text of this TapiNotificationNotification. # noqa: E501 + :type additional_text: str + :param event_time_stamp: The event_time_stamp of this TapiNotificationNotification. # noqa: E501 + :type event_time_stamp: str + :param additional_info: The additional_info of this TapiNotificationNotification. # noqa: E501 + :type additional_info: List[TapiCommonNameAndValue] + :param sequence_number: The sequence_number of this TapiNotificationNotification. # noqa: E501 + :type sequence_number: int + :param tca_info: The tca_info of this TapiNotificationNotification. # noqa: E501 + :type tca_info: TapiNotificationTcaInfo + :param target_object_identifier: The target_object_identifier of this TapiNotificationNotification. # noqa: E501 + :type target_object_identifier: str + :param notification_type: The notification_type of this TapiNotificationNotification. # noqa: E501 + :type notification_type: TapiNotificationNotificationType + :param target_object_name: The target_object_name of this TapiNotificationNotification. # noqa: E501 + :type target_object_name: List[TapiCommonNameAndValue] + :param layer_protocol_name: The layer_protocol_name of this TapiNotificationNotification. # noqa: E501 + :type layer_protocol_name: TapiCommonLayerProtocolName + :param source_indicator: The source_indicator of this TapiNotificationNotification. # noqa: E501 + :type source_indicator: TapiNotificationSourceIndicator + :param alarm_info: The alarm_info of this TapiNotificationNotification. # noqa: E501 + :type alarm_info: TapiNotificationAlarmInfo + :param changed_attributes: The changed_attributes of this TapiNotificationNotification. # noqa: E501 + :type changed_attributes: List[TapiNotificationNameAndValueChange] + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'target_object_type': TapiNotificationObjectType, + 'additional_text': str, + 'event_time_stamp': str, + 'additional_info': List[TapiCommonNameAndValue], + 'sequence_number': int, + 'tca_info': TapiNotificationTcaInfo, + 'target_object_identifier': str, + 'notification_type': TapiNotificationNotificationType, + 'target_object_name': List[TapiCommonNameAndValue], + 'layer_protocol_name': TapiCommonLayerProtocolName, + 'source_indicator': TapiNotificationSourceIndicator, + 'alarm_info': TapiNotificationAlarmInfo, + 'changed_attributes': List[TapiNotificationNameAndValueChange] + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid', + 'target_object_type': 'target-object-type', + 'additional_text': 'additional-text', + 'event_time_stamp': 'event-time-stamp', + 'additional_info': 'additional-info', + 'sequence_number': 'sequence-number', + 'tca_info': 'tca-info', + 'target_object_identifier': 'target-object-identifier', + 'notification_type': 'notification-type', + 'target_object_name': 'target-object-name', + 'layer_protocol_name': 'layer-protocol-name', + 'source_indicator': 'source-indicator', + 'alarm_info': 'alarm-info', + 'changed_attributes': 'changed-attributes' + } + self._name = name + self._uuid = uuid + self._target_object_type = target_object_type + self._additional_text = additional_text + self._event_time_stamp = event_time_stamp + self._additional_info = additional_info + self._sequence_number = sequence_number + self._tca_info = tca_info + self._target_object_identifier = target_object_identifier + self._notification_type = notification_type + self._target_object_name = target_object_name + self._layer_protocol_name = layer_protocol_name + self._source_indicator = source_indicator + self._alarm_info = alarm_info + self._changed_attributes = changed_attributes + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNotification': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.Notification of this TapiNotificationNotification. # noqa: E501 + :rtype: TapiNotificationNotification + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiNotificationNotification. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiNotificationNotification. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiNotificationNotification. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiNotificationNotification. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiNotificationNotification. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiNotificationNotification. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiNotificationNotification. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiNotificationNotification. + :type uuid: str + """ + + self._uuid = uuid + + @property + def target_object_type(self) -> TapiNotificationObjectType: + """Gets the target_object_type of this TapiNotificationNotification. + + + :return: The target_object_type of this TapiNotificationNotification. + :rtype: TapiNotificationObjectType + """ + return self._target_object_type + + @target_object_type.setter + def target_object_type(self, target_object_type: TapiNotificationObjectType): + """Sets the target_object_type of this TapiNotificationNotification. + + + :param target_object_type: The target_object_type of this TapiNotificationNotification. + :type target_object_type: TapiNotificationObjectType + """ + + self._target_object_type = target_object_type + + @property + def additional_text(self) -> str: + """Gets the additional_text of this TapiNotificationNotification. + + none # noqa: E501 + + :return: The additional_text of this TapiNotificationNotification. + :rtype: str + """ + return self._additional_text + + @additional_text.setter + def additional_text(self, additional_text: str): + """Sets the additional_text of this TapiNotificationNotification. + + none # noqa: E501 + + :param additional_text: The additional_text of this TapiNotificationNotification. + :type additional_text: str + """ + + self._additional_text = additional_text + + @property + def event_time_stamp(self) -> str: + """Gets the event_time_stamp of this TapiNotificationNotification. + + none # noqa: E501 + + :return: The event_time_stamp of this TapiNotificationNotification. + :rtype: str + """ + return self._event_time_stamp + + @event_time_stamp.setter + def event_time_stamp(self, event_time_stamp: str): + """Sets the event_time_stamp of this TapiNotificationNotification. + + none # noqa: E501 + + :param event_time_stamp: The event_time_stamp of this TapiNotificationNotification. + :type event_time_stamp: str + """ + + self._event_time_stamp = event_time_stamp + + @property + def additional_info(self) -> List[TapiCommonNameAndValue]: + """Gets the additional_info of this TapiNotificationNotification. + + none # noqa: E501 + + :return: The additional_info of this TapiNotificationNotification. + :rtype: List[TapiCommonNameAndValue] + """ + return self._additional_info + + @additional_info.setter + def additional_info(self, additional_info: List[TapiCommonNameAndValue]): + """Sets the additional_info of this TapiNotificationNotification. + + none # noqa: E501 + + :param additional_info: The additional_info of this TapiNotificationNotification. + :type additional_info: List[TapiCommonNameAndValue] + """ + + self._additional_info = additional_info + + @property + def sequence_number(self) -> int: + """Gets the sequence_number of this TapiNotificationNotification. + + A monotonous increasing sequence number associated with the notification. The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined. # noqa: E501 + + :return: The sequence_number of this TapiNotificationNotification. + :rtype: int + """ + return self._sequence_number + + @sequence_number.setter + def sequence_number(self, sequence_number: int): + """Sets the sequence_number of this TapiNotificationNotification. + + A monotonous increasing sequence number associated with the notification. The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined. # noqa: E501 + + :param sequence_number: The sequence_number of this TapiNotificationNotification. + :type sequence_number: int + """ + + self._sequence_number = sequence_number + + @property + def tca_info(self) -> TapiNotificationTcaInfo: + """Gets the tca_info of this TapiNotificationNotification. + + + :return: The tca_info of this TapiNotificationNotification. + :rtype: TapiNotificationTcaInfo + """ + return self._tca_info + + @tca_info.setter + def tca_info(self, tca_info: TapiNotificationTcaInfo): + """Sets the tca_info of this TapiNotificationNotification. + + + :param tca_info: The tca_info of this TapiNotificationNotification. + :type tca_info: TapiNotificationTcaInfo + """ + + self._tca_info = tca_info + + @property + def target_object_identifier(self) -> str: + """Gets the target_object_identifier of this TapiNotificationNotification. + + none # noqa: E501 + + :return: The target_object_identifier of this TapiNotificationNotification. + :rtype: str + """ + return self._target_object_identifier + + @target_object_identifier.setter + def target_object_identifier(self, target_object_identifier: str): + """Sets the target_object_identifier of this TapiNotificationNotification. + + none # noqa: E501 + + :param target_object_identifier: The target_object_identifier of this TapiNotificationNotification. + :type target_object_identifier: str + """ + + self._target_object_identifier = target_object_identifier + + @property + def notification_type(self) -> TapiNotificationNotificationType: + """Gets the notification_type of this TapiNotificationNotification. + + + :return: The notification_type of this TapiNotificationNotification. + :rtype: TapiNotificationNotificationType + """ + return self._notification_type + + @notification_type.setter + def notification_type(self, notification_type: TapiNotificationNotificationType): + """Sets the notification_type of this TapiNotificationNotification. + + + :param notification_type: The notification_type of this TapiNotificationNotification. + :type notification_type: TapiNotificationNotificationType + """ + + self._notification_type = notification_type + + @property + def target_object_name(self) -> List[TapiCommonNameAndValue]: + """Gets the target_object_name of this TapiNotificationNotification. + + none # noqa: E501 + + :return: The target_object_name of this TapiNotificationNotification. + :rtype: List[TapiCommonNameAndValue] + """ + return self._target_object_name + + @target_object_name.setter + def target_object_name(self, target_object_name: List[TapiCommonNameAndValue]): + """Sets the target_object_name of this TapiNotificationNotification. + + none # noqa: E501 + + :param target_object_name: The target_object_name of this TapiNotificationNotification. + :type target_object_name: List[TapiCommonNameAndValue] + """ + + self._target_object_name = target_object_name + + @property + def layer_protocol_name(self) -> TapiCommonLayerProtocolName: + """Gets the layer_protocol_name of this TapiNotificationNotification. + + + :return: The layer_protocol_name of this TapiNotificationNotification. + :rtype: TapiCommonLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TapiCommonLayerProtocolName): + """Sets the layer_protocol_name of this TapiNotificationNotification. + + + :param layer_protocol_name: The layer_protocol_name of this TapiNotificationNotification. + :type layer_protocol_name: TapiCommonLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def source_indicator(self) -> TapiNotificationSourceIndicator: + """Gets the source_indicator of this TapiNotificationNotification. + + + :return: The source_indicator of this TapiNotificationNotification. + :rtype: TapiNotificationSourceIndicator + """ + return self._source_indicator + + @source_indicator.setter + def source_indicator(self, source_indicator: TapiNotificationSourceIndicator): + """Sets the source_indicator of this TapiNotificationNotification. + + + :param source_indicator: The source_indicator of this TapiNotificationNotification. + :type source_indicator: TapiNotificationSourceIndicator + """ + + self._source_indicator = source_indicator + + @property + def alarm_info(self) -> TapiNotificationAlarmInfo: + """Gets the alarm_info of this TapiNotificationNotification. + + + :return: The alarm_info of this TapiNotificationNotification. + :rtype: TapiNotificationAlarmInfo + """ + return self._alarm_info + + @alarm_info.setter + def alarm_info(self, alarm_info: TapiNotificationAlarmInfo): + """Sets the alarm_info of this TapiNotificationNotification. + + + :param alarm_info: The alarm_info of this TapiNotificationNotification. + :type alarm_info: TapiNotificationAlarmInfo + """ + + self._alarm_info = alarm_info + + @property + def changed_attributes(self) -> List[TapiNotificationNameAndValueChange]: + """Gets the changed_attributes of this TapiNotificationNotification. + + none # noqa: E501 + + :return: The changed_attributes of this TapiNotificationNotification. + :rtype: List[TapiNotificationNameAndValueChange] + """ + return self._changed_attributes + + @changed_attributes.setter + def changed_attributes(self, changed_attributes: List[TapiNotificationNameAndValueChange]): + """Sets the changed_attributes of this TapiNotificationNotification. + + none # noqa: E501 + + :param changed_attributes: The changed_attributes of this TapiNotificationNotification. + :type changed_attributes: List[TapiNotificationNameAndValueChange] + """ + + self._changed_attributes = changed_attributes diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_channel.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_channel.py new file mode 100644 index 0000000000000000000000000000000000000000..c5d7bb6a11f7015ca6cdc224d359a3c43ddb09d3 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_channel.py @@ -0,0 +1,150 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationNotificationChannel(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, next_sequence_no: int=None, stream_address: str=None): # noqa: E501 + """TapiNotificationNotificationChannel - a model defined in Swagger + + :param name: The name of this TapiNotificationNotificationChannel. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiNotificationNotificationChannel. # noqa: E501 + :type local_id: str + :param next_sequence_no: The next_sequence_no of this TapiNotificationNotificationChannel. # noqa: E501 + :type next_sequence_no: int + :param stream_address: The stream_address of this TapiNotificationNotificationChannel. # noqa: E501 + :type stream_address: str + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str, + 'next_sequence_no': int, + 'stream_address': str + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id', + 'next_sequence_no': 'next-sequence-no', + 'stream_address': 'stream-address' + } + self._name = name + self._local_id = local_id + self._next_sequence_no = next_sequence_no + self._stream_address = stream_address + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNotificationChannel': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.NotificationChannel of this TapiNotificationNotificationChannel. # noqa: E501 + :rtype: TapiNotificationNotificationChannel + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiNotificationNotificationChannel. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiNotificationNotificationChannel. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiNotificationNotificationChannel. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiNotificationNotificationChannel. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiNotificationNotificationChannel. + + none # noqa: E501 + + :return: The local_id of this TapiNotificationNotificationChannel. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiNotificationNotificationChannel. + + none # noqa: E501 + + :param local_id: The local_id of this TapiNotificationNotificationChannel. + :type local_id: str + """ + + self._local_id = local_id + + @property + def next_sequence_no(self) -> int: + """Gets the next_sequence_no of this TapiNotificationNotificationChannel. + + The sequence number of the next notification that will be published on the channel # noqa: E501 + + :return: The next_sequence_no of this TapiNotificationNotificationChannel. + :rtype: int + """ + return self._next_sequence_no + + @next_sequence_no.setter + def next_sequence_no(self, next_sequence_no: int): + """Sets the next_sequence_no of this TapiNotificationNotificationChannel. + + The sequence number of the next notification that will be published on the channel # noqa: E501 + + :param next_sequence_no: The next_sequence_no of this TapiNotificationNotificationChannel. + :type next_sequence_no: int + """ + + self._next_sequence_no = next_sequence_no + + @property + def stream_address(self) -> str: + """Gets the stream_address of this TapiNotificationNotificationChannel. + + The address/location/URI of the channel/stream to which the subscribed notifications are published. This specifics of this is typically dependent on the implementation protocol & mechanism and hence is typed as a string. # noqa: E501 + + :return: The stream_address of this TapiNotificationNotificationChannel. + :rtype: str + """ + return self._stream_address + + @stream_address.setter + def stream_address(self, stream_address: str): + """Sets the stream_address of this TapiNotificationNotificationChannel. + + The address/location/URI of the channel/stream to which the subscribed notifications are published. This specifics of this is typically dependent on the implementation protocol & mechanism and hence is typed as a string. # noqa: E501 + + :param stream_address: The stream_address of this TapiNotificationNotificationChannel. + :type stream_address: str + """ + + self._stream_address = stream_address diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_channel_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_channel_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..1176a018926ae06c53d76ceaa6b62e22822866b2 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_channel_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification_channel import TapiNotificationNotificationChannel # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationNotificationChannelWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, notification_channel: TapiNotificationNotificationChannel=None): # noqa: E501 + """TapiNotificationNotificationChannelWrapper - a model defined in Swagger + + :param notification_channel: The notification_channel of this TapiNotificationNotificationChannelWrapper. # noqa: E501 + :type notification_channel: TapiNotificationNotificationChannel + """ + self.swagger_types = { + 'notification_channel': TapiNotificationNotificationChannel + } + + self.attribute_map = { + 'notification_channel': 'notification-channel' + } + self._notification_channel = notification_channel + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNotificationChannelWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.NotificationChannelWrapper of this TapiNotificationNotificationChannelWrapper. # noqa: E501 + :rtype: TapiNotificationNotificationChannelWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def notification_channel(self) -> TapiNotificationNotificationChannel: + """Gets the notification_channel of this TapiNotificationNotificationChannelWrapper. + + + :return: The notification_channel of this TapiNotificationNotificationChannelWrapper. + :rtype: TapiNotificationNotificationChannel + """ + return self._notification_channel + + @notification_channel.setter + def notification_channel(self, notification_channel: TapiNotificationNotificationChannel): + """Sets the notification_channel of this TapiNotificationNotificationChannelWrapper. + + + :param notification_channel: The notification_channel of this TapiNotificationNotificationChannelWrapper. + :type notification_channel: TapiNotificationNotificationChannel + """ + + self._notification_channel = notification_channel diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_context.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_context.py new file mode 100644 index 0000000000000000000000000000000000000000..595ddd8312eb2fe6cf28cfccf5853759d1419ada --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_context.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification import TapiNotificationNotification # noqa: F401,E501 +from tapi_server.models.tapi_notification_notification_subscription_service import TapiNotificationNotificationSubscriptionService # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationNotificationContext(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, notif_subscription: List[TapiNotificationNotificationSubscriptionService]=None, notification: List[TapiNotificationNotification]=None): # noqa: E501 + """TapiNotificationNotificationContext - a model defined in Swagger + + :param notif_subscription: The notif_subscription of this TapiNotificationNotificationContext. # noqa: E501 + :type notif_subscription: List[TapiNotificationNotificationSubscriptionService] + :param notification: The notification of this TapiNotificationNotificationContext. # noqa: E501 + :type notification: List[TapiNotificationNotification] + """ + self.swagger_types = { + 'notif_subscription': List[TapiNotificationNotificationSubscriptionService], + 'notification': List[TapiNotificationNotification] + } + + self.attribute_map = { + 'notif_subscription': 'notif-subscription', + 'notification': 'notification' + } + self._notif_subscription = notif_subscription + self._notification = notification + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNotificationContext': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.NotificationContext of this TapiNotificationNotificationContext. # noqa: E501 + :rtype: TapiNotificationNotificationContext + """ + return util.deserialize_model(dikt, cls) + + @property + def notif_subscription(self) -> List[TapiNotificationNotificationSubscriptionService]: + """Gets the notif_subscription of this TapiNotificationNotificationContext. + + none # noqa: E501 + + :return: The notif_subscription of this TapiNotificationNotificationContext. + :rtype: List[TapiNotificationNotificationSubscriptionService] + """ + return self._notif_subscription + + @notif_subscription.setter + def notif_subscription(self, notif_subscription: List[TapiNotificationNotificationSubscriptionService]): + """Sets the notif_subscription of this TapiNotificationNotificationContext. + + none # noqa: E501 + + :param notif_subscription: The notif_subscription of this TapiNotificationNotificationContext. + :type notif_subscription: List[TapiNotificationNotificationSubscriptionService] + """ + + self._notif_subscription = notif_subscription + + @property + def notification(self) -> List[TapiNotificationNotification]: + """Gets the notification of this TapiNotificationNotificationContext. + + none # noqa: E501 + + :return: The notification of this TapiNotificationNotificationContext. + :rtype: List[TapiNotificationNotification] + """ + return self._notification + + @notification.setter + def notification(self, notification: List[TapiNotificationNotification]): + """Sets the notification of this TapiNotificationNotificationContext. + + none # noqa: E501 + + :param notification: The notification of this TapiNotificationNotificationContext. + :type notification: List[TapiNotificationNotification] + """ + + self._notification = notification diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_context_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_context_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..fb0bf9abb2397c121f005757e5da48701132bdfe --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_context_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification_context import TapiNotificationNotificationContext # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationNotificationContextWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, tapi_notificationnotification_context: TapiNotificationNotificationContext=None): # noqa: E501 + """TapiNotificationNotificationContextWrapper - a model defined in Swagger + + :param tapi_notificationnotification_context: The tapi_notificationnotification_context of this TapiNotificationNotificationContextWrapper. # noqa: E501 + :type tapi_notificationnotification_context: TapiNotificationNotificationContext + """ + self.swagger_types = { + 'tapi_notificationnotification_context': TapiNotificationNotificationContext + } + + self.attribute_map = { + 'tapi_notificationnotification_context': 'tapi-notification:notification-context' + } + self._tapi_notificationnotification_context = tapi_notificationnotification_context + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNotificationContextWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.NotificationContextWrapper of this TapiNotificationNotificationContextWrapper. # noqa: E501 + :rtype: TapiNotificationNotificationContextWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def tapi_notificationnotification_context(self) -> TapiNotificationNotificationContext: + """Gets the tapi_notificationnotification_context of this TapiNotificationNotificationContextWrapper. + + + :return: The tapi_notificationnotification_context of this TapiNotificationNotificationContextWrapper. + :rtype: TapiNotificationNotificationContext + """ + return self._tapi_notificationnotification_context + + @tapi_notificationnotification_context.setter + def tapi_notificationnotification_context(self, tapi_notificationnotification_context: TapiNotificationNotificationContext): + """Sets the tapi_notificationnotification_context of this TapiNotificationNotificationContextWrapper. + + + :param tapi_notificationnotification_context: The tapi_notificationnotification_context of this TapiNotificationNotificationContextWrapper. + :type tapi_notificationnotification_context: TapiNotificationNotificationContext + """ + + self._tapi_notificationnotification_context = tapi_notificationnotification_context diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_subscription_service.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_subscription_service.py new file mode 100644 index 0000000000000000000000000000000000000000..10e6128e52392a42a3472c82a6ca2894c6820ad1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_subscription_service.py @@ -0,0 +1,262 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_notification_notification import TapiNotificationNotification # noqa: F401,E501 +from tapi_server.models.tapi_notification_notification_channel import TapiNotificationNotificationChannel # noqa: F401,E501 +from tapi_server.models.tapi_notification_notification_type import TapiNotificationNotificationType # noqa: F401,E501 +from tapi_server.models.tapi_notification_object_type import TapiNotificationObjectType # noqa: F401,E501 +from tapi_server.models.tapi_notification_subscription_filter import TapiNotificationSubscriptionFilter # noqa: F401,E501 +from tapi_server.models.tapi_notification_subscription_state import TapiNotificationSubscriptionState # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationNotificationSubscriptionService(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None, notification: List[TapiNotificationNotification]=None, notification_channel: TapiNotificationNotificationChannel=None, subscription_state: TapiNotificationSubscriptionState=None, supported_object_types: List[TapiNotificationObjectType]=None, supported_notification_types: List[TapiNotificationNotificationType]=None, subscription_filter: TapiNotificationSubscriptionFilter=None): # noqa: E501 + """TapiNotificationNotificationSubscriptionService - a model defined in Swagger + + :param name: The name of this TapiNotificationNotificationSubscriptionService. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiNotificationNotificationSubscriptionService. # noqa: E501 + :type uuid: str + :param notification: The notification of this TapiNotificationNotificationSubscriptionService. # noqa: E501 + :type notification: List[TapiNotificationNotification] + :param notification_channel: The notification_channel of this TapiNotificationNotificationSubscriptionService. # noqa: E501 + :type notification_channel: TapiNotificationNotificationChannel + :param subscription_state: The subscription_state of this TapiNotificationNotificationSubscriptionService. # noqa: E501 + :type subscription_state: TapiNotificationSubscriptionState + :param supported_object_types: The supported_object_types of this TapiNotificationNotificationSubscriptionService. # noqa: E501 + :type supported_object_types: List[TapiNotificationObjectType] + :param supported_notification_types: The supported_notification_types of this TapiNotificationNotificationSubscriptionService. # noqa: E501 + :type supported_notification_types: List[TapiNotificationNotificationType] + :param subscription_filter: The subscription_filter of this TapiNotificationNotificationSubscriptionService. # noqa: E501 + :type subscription_filter: TapiNotificationSubscriptionFilter + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'notification': List[TapiNotificationNotification], + 'notification_channel': TapiNotificationNotificationChannel, + 'subscription_state': TapiNotificationSubscriptionState, + 'supported_object_types': List[TapiNotificationObjectType], + 'supported_notification_types': List[TapiNotificationNotificationType], + 'subscription_filter': TapiNotificationSubscriptionFilter + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid', + 'notification': 'notification', + 'notification_channel': 'notification-channel', + 'subscription_state': 'subscription-state', + 'supported_object_types': 'supported-object-types', + 'supported_notification_types': 'supported-notification-types', + 'subscription_filter': 'subscription-filter' + } + self._name = name + self._uuid = uuid + self._notification = notification + self._notification_channel = notification_channel + self._subscription_state = subscription_state + self._supported_object_types = supported_object_types + self._supported_notification_types = supported_notification_types + self._subscription_filter = subscription_filter + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNotificationSubscriptionService': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.NotificationSubscriptionService of this TapiNotificationNotificationSubscriptionService. # noqa: E501 + :rtype: TapiNotificationNotificationSubscriptionService + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiNotificationNotificationSubscriptionService. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiNotificationNotificationSubscriptionService. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiNotificationNotificationSubscriptionService. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiNotificationNotificationSubscriptionService. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiNotificationNotificationSubscriptionService. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiNotificationNotificationSubscriptionService. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiNotificationNotificationSubscriptionService. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiNotificationNotificationSubscriptionService. + :type uuid: str + """ + + self._uuid = uuid + + @property + def notification(self) -> List[TapiNotificationNotification]: + """Gets the notification of this TapiNotificationNotificationSubscriptionService. + + none # noqa: E501 + + :return: The notification of this TapiNotificationNotificationSubscriptionService. + :rtype: List[TapiNotificationNotification] + """ + return self._notification + + @notification.setter + def notification(self, notification: List[TapiNotificationNotification]): + """Sets the notification of this TapiNotificationNotificationSubscriptionService. + + none # noqa: E501 + + :param notification: The notification of this TapiNotificationNotificationSubscriptionService. + :type notification: List[TapiNotificationNotification] + """ + + self._notification = notification + + @property + def notification_channel(self) -> TapiNotificationNotificationChannel: + """Gets the notification_channel of this TapiNotificationNotificationSubscriptionService. + + + :return: The notification_channel of this TapiNotificationNotificationSubscriptionService. + :rtype: TapiNotificationNotificationChannel + """ + return self._notification_channel + + @notification_channel.setter + def notification_channel(self, notification_channel: TapiNotificationNotificationChannel): + """Sets the notification_channel of this TapiNotificationNotificationSubscriptionService. + + + :param notification_channel: The notification_channel of this TapiNotificationNotificationSubscriptionService. + :type notification_channel: TapiNotificationNotificationChannel + """ + + self._notification_channel = notification_channel + + @property + def subscription_state(self) -> TapiNotificationSubscriptionState: + """Gets the subscription_state of this TapiNotificationNotificationSubscriptionService. + + + :return: The subscription_state of this TapiNotificationNotificationSubscriptionService. + :rtype: TapiNotificationSubscriptionState + """ + return self._subscription_state + + @subscription_state.setter + def subscription_state(self, subscription_state: TapiNotificationSubscriptionState): + """Sets the subscription_state of this TapiNotificationNotificationSubscriptionService. + + + :param subscription_state: The subscription_state of this TapiNotificationNotificationSubscriptionService. + :type subscription_state: TapiNotificationSubscriptionState + """ + + self._subscription_state = subscription_state + + @property + def supported_object_types(self) -> List[TapiNotificationObjectType]: + """Gets the supported_object_types of this TapiNotificationNotificationSubscriptionService. + + none # noqa: E501 + + :return: The supported_object_types of this TapiNotificationNotificationSubscriptionService. + :rtype: List[TapiNotificationObjectType] + """ + return self._supported_object_types + + @supported_object_types.setter + def supported_object_types(self, supported_object_types: List[TapiNotificationObjectType]): + """Sets the supported_object_types of this TapiNotificationNotificationSubscriptionService. + + none # noqa: E501 + + :param supported_object_types: The supported_object_types of this TapiNotificationNotificationSubscriptionService. + :type supported_object_types: List[TapiNotificationObjectType] + """ + + self._supported_object_types = supported_object_types + + @property + def supported_notification_types(self) -> List[TapiNotificationNotificationType]: + """Gets the supported_notification_types of this TapiNotificationNotificationSubscriptionService. + + none # noqa: E501 + + :return: The supported_notification_types of this TapiNotificationNotificationSubscriptionService. + :rtype: List[TapiNotificationNotificationType] + """ + return self._supported_notification_types + + @supported_notification_types.setter + def supported_notification_types(self, supported_notification_types: List[TapiNotificationNotificationType]): + """Sets the supported_notification_types of this TapiNotificationNotificationSubscriptionService. + + none # noqa: E501 + + :param supported_notification_types: The supported_notification_types of this TapiNotificationNotificationSubscriptionService. + :type supported_notification_types: List[TapiNotificationNotificationType] + """ + + self._supported_notification_types = supported_notification_types + + @property + def subscription_filter(self) -> TapiNotificationSubscriptionFilter: + """Gets the subscription_filter of this TapiNotificationNotificationSubscriptionService. + + + :return: The subscription_filter of this TapiNotificationNotificationSubscriptionService. + :rtype: TapiNotificationSubscriptionFilter + """ + return self._subscription_filter + + @subscription_filter.setter + def subscription_filter(self, subscription_filter: TapiNotificationSubscriptionFilter): + """Sets the subscription_filter of this TapiNotificationNotificationSubscriptionService. + + + :param subscription_filter: The subscription_filter of this TapiNotificationNotificationSubscriptionService. + :type subscription_filter: TapiNotificationSubscriptionFilter + """ + + self._subscription_filter = subscription_filter diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_subscription_service_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_subscription_service_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..ec809bd51070beb022d5f089a5d1826af4f15ad9 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_subscription_service_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification_subscription_service import TapiNotificationNotificationSubscriptionService # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationNotificationSubscriptionServiceWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, notif_subscription: TapiNotificationNotificationSubscriptionService=None): # noqa: E501 + """TapiNotificationNotificationSubscriptionServiceWrapper - a model defined in Swagger + + :param notif_subscription: The notif_subscription of this TapiNotificationNotificationSubscriptionServiceWrapper. # noqa: E501 + :type notif_subscription: TapiNotificationNotificationSubscriptionService + """ + self.swagger_types = { + 'notif_subscription': TapiNotificationNotificationSubscriptionService + } + + self.attribute_map = { + 'notif_subscription': 'notif-subscription' + } + self._notif_subscription = notif_subscription + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNotificationSubscriptionServiceWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.NotificationSubscriptionServiceWrapper of this TapiNotificationNotificationSubscriptionServiceWrapper. # noqa: E501 + :rtype: TapiNotificationNotificationSubscriptionServiceWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def notif_subscription(self) -> TapiNotificationNotificationSubscriptionService: + """Gets the notif_subscription of this TapiNotificationNotificationSubscriptionServiceWrapper. + + + :return: The notif_subscription of this TapiNotificationNotificationSubscriptionServiceWrapper. + :rtype: TapiNotificationNotificationSubscriptionService + """ + return self._notif_subscription + + @notif_subscription.setter + def notif_subscription(self, notif_subscription: TapiNotificationNotificationSubscriptionService): + """Sets the notif_subscription of this TapiNotificationNotificationSubscriptionServiceWrapper. + + + :param notif_subscription: The notif_subscription of this TapiNotificationNotificationSubscriptionServiceWrapper. + :type notif_subscription: TapiNotificationNotificationSubscriptionService + """ + + self._notif_subscription = notif_subscription diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_type.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_type.py new file mode 100644 index 0000000000000000000000000000000000000000..176f3661feded5e423c2fddb5346602eab9f5692 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_type.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationNotificationType(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + OBJECT_CREATION = "OBJECT_CREATION" + OBJECT_DELETION = "OBJECT_DELETION" + ATTRIBUTE_VALUE_CHANGE = "ATTRIBUTE_VALUE_CHANGE" + ALARM_EVENT = "ALARM_EVENT" + THRESHOLD_CROSSING_ALERT = "THRESHOLD_CROSSING_ALERT" + def __init__(self): # noqa: E501 + """TapiNotificationNotificationType - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNotificationType': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.NotificationType of this TapiNotificationNotificationType. # noqa: E501 + :rtype: TapiNotificationNotificationType + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..eb2d9a1ed6dad8fa90c0ef097e40d80d1c4e6e67 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_notification_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification import TapiNotificationNotification # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationNotificationWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, notification: TapiNotificationNotification=None): # noqa: E501 + """TapiNotificationNotificationWrapper - a model defined in Swagger + + :param notification: The notification of this TapiNotificationNotificationWrapper. # noqa: E501 + :type notification: TapiNotificationNotification + """ + self.swagger_types = { + 'notification': TapiNotificationNotification + } + + self.attribute_map = { + 'notification': 'notification' + } + self._notification = notification + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationNotificationWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.NotificationWrapper of this TapiNotificationNotificationWrapper. # noqa: E501 + :rtype: TapiNotificationNotificationWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def notification(self) -> TapiNotificationNotification: + """Gets the notification of this TapiNotificationNotificationWrapper. + + + :return: The notification of this TapiNotificationNotificationWrapper. + :rtype: TapiNotificationNotification + """ + return self._notification + + @notification.setter + def notification(self, notification: TapiNotificationNotification): + """Sets the notification of this TapiNotificationNotificationWrapper. + + + :param notification: The notification of this TapiNotificationNotificationWrapper. + :type notification: TapiNotificationNotification + """ + + self._notification = notification diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_object_type.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_object_type.py new file mode 100644 index 0000000000000000000000000000000000000000..973801635db2cfe8682a4d04cd38d928f33895f9 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_object_type.py @@ -0,0 +1,68 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationObjectType(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + TOPOLOGY = "TOPOLOGY" + NODE = "NODE" + LINK = "LINK" + CONNECTION = "CONNECTION" + PATH = "PATH" + CONNECTIVITY_SERVICE = "CONNECTIVITY_SERVICE" + VIRTUAL_NETWORK_SERVICE = "VIRTUAL_NETWORK_SERVICE" + PATH_COMPUTATION_SERVICE = "PATH_COMPUTATION_SERVICE" + NODE_EDGE_POINT = "NODE_EDGE_POINT" + SERVICE_INTERFACE_POINT = "SERVICE_INTERFACE_POINT" + CONNECTION_END_POINT = "CONNECTION_END_POINT" + MAINTENANCE_ENTITY_GROUP = "MAINTENANCE_ENTITY_GROUP" + MAINTENANCE_ENTITY = "MAINTENANCE_ENTITY" + MEG_END_POINT = "MEG_END_POINT" + MEG_INTERMEDIATE_POINT = "MEG_INTERMEDIATE_POINT" + SWITCH_CONTROL = "SWITCH_CONTROL" + SWITCH = "SWITCH" + ROUTE = "ROUTE" + NODE_RULE_GROUP = "NODE_RULE_GROUP" + INTER_RULE_GROUP = "INTER_RULE_GROUP" + RULE = "RULE" + OAM_JOB = "OAM_JOB" + ACCESS_PORT = "ACCESS_PORT" + EQUIPMENT = "EQUIPMENT" + HOLDER = "HOLDER" + PHYSICAL_SPAN = "PHYSICAL_SPAN" + ABSTRACT_STRAND = "ABSTRACT_STRAND" + DEVICE = "DEVICE" + def __init__(self): # noqa: E501 + """TapiNotificationObjectType - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationObjectType': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.ObjectType of this TapiNotificationObjectType. # noqa: E501 + :rtype: TapiNotificationObjectType + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_perceived_severity_type.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_perceived_severity_type.py new file mode 100644 index 0000000000000000000000000000000000000000..fb852664e1016543af88543c85e1103ee9e64959 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_perceived_severity_type.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationPerceivedSeverityType(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + CRITICAL = "CRITICAL" + MAJOR = "MAJOR" + MINOR = "MINOR" + WARNING = "WARNING" + CLEARED = "CLEARED" + def __init__(self): # noqa: E501 + """TapiNotificationPerceivedSeverityType - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationPerceivedSeverityType': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.PerceivedSeverityType of this TapiNotificationPerceivedSeverityType. # noqa: E501 + :rtype: TapiNotificationPerceivedSeverityType + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_perceived_tca_severity.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_perceived_tca_severity.py new file mode 100644 index 0000000000000000000000000000000000000000..0dc2e13a4765af8537b95728cb630396b2c8ba01 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_perceived_tca_severity.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationPerceivedTcaSeverity(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + WARNING = "WARNING" + CLEAR = "CLEAR" + def __init__(self): # noqa: E501 + """TapiNotificationPerceivedTcaSeverity - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationPerceivedTcaSeverity': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.PerceivedTcaSeverity of this TapiNotificationPerceivedTcaSeverity. # noqa: E501 + :rtype: TapiNotificationPerceivedTcaSeverity + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_service_affecting.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_service_affecting.py new file mode 100644 index 0000000000000000000000000000000000000000..fb2253894af156e17ede625ae8c703e9fb3e5521 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_service_affecting.py @@ -0,0 +1,43 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationServiceAffecting(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + SERVICE_AFFECTING = "SERVICE_AFFECTING" + NOT_SERVICE_AFFECTING = "NOT_SERVICE_AFFECTING" + UNKNOWN = "UNKNOWN" + def __init__(self): # noqa: E501 + """TapiNotificationServiceAffecting - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationServiceAffecting': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.ServiceAffecting of this TapiNotificationServiceAffecting. # noqa: E501 + :rtype: TapiNotificationServiceAffecting + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_source_indicator.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_source_indicator.py new file mode 100644 index 0000000000000000000000000000000000000000..5f0bcedbfd814966fe5dbdc9063f4c65e68da66e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_source_indicator.py @@ -0,0 +1,43 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationSourceIndicator(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + RESOURCE_OPERATION = "RESOURCE_OPERATION" + MANAGEMENT_OPERATION = "MANAGEMENT_OPERATION" + UNKNOWN = "UNKNOWN" + def __init__(self): # noqa: E501 + """TapiNotificationSourceIndicator - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationSourceIndicator': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.SourceIndicator of this TapiNotificationSourceIndicator. # noqa: E501 + :rtype: TapiNotificationSourceIndicator + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_subscription_filter.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_subscription_filter.py new file mode 100644 index 0000000000000000000000000000000000000000..e26921ceffedf65344e70c477fcc5d998c14fcf5 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_subscription_filter.py @@ -0,0 +1,237 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_notification_notification_type import TapiNotificationNotificationType # noqa: F401,E501 +from tapi_server.models.tapi_notification_object_type import TapiNotificationObjectType # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationSubscriptionFilter(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, requested_notification_types: List[TapiNotificationNotificationType]=None, requested_object_identifier: List[str]=None, requested_layer_protocols: List[TapiCommonLayerProtocolName]=None, include_content: bool=False, requested_object_types: List[TapiNotificationObjectType]=None): # noqa: E501 + """TapiNotificationSubscriptionFilter - a model defined in Swagger + + :param name: The name of this TapiNotificationSubscriptionFilter. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiNotificationSubscriptionFilter. # noqa: E501 + :type local_id: str + :param requested_notification_types: The requested_notification_types of this TapiNotificationSubscriptionFilter. # noqa: E501 + :type requested_notification_types: List[TapiNotificationNotificationType] + :param requested_object_identifier: The requested_object_identifier of this TapiNotificationSubscriptionFilter. # noqa: E501 + :type requested_object_identifier: List[str] + :param requested_layer_protocols: The requested_layer_protocols of this TapiNotificationSubscriptionFilter. # noqa: E501 + :type requested_layer_protocols: List[TapiCommonLayerProtocolName] + :param include_content: The include_content of this TapiNotificationSubscriptionFilter. # noqa: E501 + :type include_content: bool + :param requested_object_types: The requested_object_types of this TapiNotificationSubscriptionFilter. # noqa: E501 + :type requested_object_types: List[TapiNotificationObjectType] + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str, + 'requested_notification_types': List[TapiNotificationNotificationType], + 'requested_object_identifier': List[str], + 'requested_layer_protocols': List[TapiCommonLayerProtocolName], + 'include_content': bool, + 'requested_object_types': List[TapiNotificationObjectType] + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id', + 'requested_notification_types': 'requested-notification-types', + 'requested_object_identifier': 'requested-object-identifier', + 'requested_layer_protocols': 'requested-layer-protocols', + 'include_content': 'include-content', + 'requested_object_types': 'requested-object-types' + } + self._name = name + self._local_id = local_id + self._requested_notification_types = requested_notification_types + self._requested_object_identifier = requested_object_identifier + self._requested_layer_protocols = requested_layer_protocols + self._include_content = include_content + self._requested_object_types = requested_object_types + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationSubscriptionFilter': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.SubscriptionFilter of this TapiNotificationSubscriptionFilter. # noqa: E501 + :rtype: TapiNotificationSubscriptionFilter + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiNotificationSubscriptionFilter. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiNotificationSubscriptionFilter. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiNotificationSubscriptionFilter. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiNotificationSubscriptionFilter. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiNotificationSubscriptionFilter. + + none # noqa: E501 + + :return: The local_id of this TapiNotificationSubscriptionFilter. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiNotificationSubscriptionFilter. + + none # noqa: E501 + + :param local_id: The local_id of this TapiNotificationSubscriptionFilter. + :type local_id: str + """ + + self._local_id = local_id + + @property + def requested_notification_types(self) -> List[TapiNotificationNotificationType]: + """Gets the requested_notification_types of this TapiNotificationSubscriptionFilter. + + none # noqa: E501 + + :return: The requested_notification_types of this TapiNotificationSubscriptionFilter. + :rtype: List[TapiNotificationNotificationType] + """ + return self._requested_notification_types + + @requested_notification_types.setter + def requested_notification_types(self, requested_notification_types: List[TapiNotificationNotificationType]): + """Sets the requested_notification_types of this TapiNotificationSubscriptionFilter. + + none # noqa: E501 + + :param requested_notification_types: The requested_notification_types of this TapiNotificationSubscriptionFilter. + :type requested_notification_types: List[TapiNotificationNotificationType] + """ + + self._requested_notification_types = requested_notification_types + + @property + def requested_object_identifier(self) -> List[str]: + """Gets the requested_object_identifier of this TapiNotificationSubscriptionFilter. + + none # noqa: E501 + + :return: The requested_object_identifier of this TapiNotificationSubscriptionFilter. + :rtype: List[str] + """ + return self._requested_object_identifier + + @requested_object_identifier.setter + def requested_object_identifier(self, requested_object_identifier: List[str]): + """Sets the requested_object_identifier of this TapiNotificationSubscriptionFilter. + + none # noqa: E501 + + :param requested_object_identifier: The requested_object_identifier of this TapiNotificationSubscriptionFilter. + :type requested_object_identifier: List[str] + """ + + self._requested_object_identifier = requested_object_identifier + + @property + def requested_layer_protocols(self) -> List[TapiCommonLayerProtocolName]: + """Gets the requested_layer_protocols of this TapiNotificationSubscriptionFilter. + + none # noqa: E501 + + :return: The requested_layer_protocols of this TapiNotificationSubscriptionFilter. + :rtype: List[TapiCommonLayerProtocolName] + """ + return self._requested_layer_protocols + + @requested_layer_protocols.setter + def requested_layer_protocols(self, requested_layer_protocols: List[TapiCommonLayerProtocolName]): + """Sets the requested_layer_protocols of this TapiNotificationSubscriptionFilter. + + none # noqa: E501 + + :param requested_layer_protocols: The requested_layer_protocols of this TapiNotificationSubscriptionFilter. + :type requested_layer_protocols: List[TapiCommonLayerProtocolName] + """ + + self._requested_layer_protocols = requested_layer_protocols + + @property + def include_content(self) -> bool: + """Gets the include_content of this TapiNotificationSubscriptionFilter. + + Indicates whether the published Notification includes content or just the Notification Id (which enables retrieval of the notification at the later stage) # noqa: E501 + + :return: The include_content of this TapiNotificationSubscriptionFilter. + :rtype: bool + """ + return self._include_content + + @include_content.setter + def include_content(self, include_content: bool): + """Sets the include_content of this TapiNotificationSubscriptionFilter. + + Indicates whether the published Notification includes content or just the Notification Id (which enables retrieval of the notification at the later stage) # noqa: E501 + + :param include_content: The include_content of this TapiNotificationSubscriptionFilter. + :type include_content: bool + """ + + self._include_content = include_content + + @property + def requested_object_types(self) -> List[TapiNotificationObjectType]: + """Gets the requested_object_types of this TapiNotificationSubscriptionFilter. + + none # noqa: E501 + + :return: The requested_object_types of this TapiNotificationSubscriptionFilter. + :rtype: List[TapiNotificationObjectType] + """ + return self._requested_object_types + + @requested_object_types.setter + def requested_object_types(self, requested_object_types: List[TapiNotificationObjectType]): + """Sets the requested_object_types of this TapiNotificationSubscriptionFilter. + + none # noqa: E501 + + :param requested_object_types: The requested_object_types of this TapiNotificationSubscriptionFilter. + :type requested_object_types: List[TapiNotificationObjectType] + """ + + self._requested_object_types = requested_object_types diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_subscription_filter_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_subscription_filter_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..4320001ca23ebb84f774f3c9e634523439f90423 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_subscription_filter_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_subscription_filter import TapiNotificationSubscriptionFilter # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationSubscriptionFilterWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, subscription_filter: TapiNotificationSubscriptionFilter=None): # noqa: E501 + """TapiNotificationSubscriptionFilterWrapper - a model defined in Swagger + + :param subscription_filter: The subscription_filter of this TapiNotificationSubscriptionFilterWrapper. # noqa: E501 + :type subscription_filter: TapiNotificationSubscriptionFilter + """ + self.swagger_types = { + 'subscription_filter': TapiNotificationSubscriptionFilter + } + + self.attribute_map = { + 'subscription_filter': 'subscription-filter' + } + self._subscription_filter = subscription_filter + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationSubscriptionFilterWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.SubscriptionFilterWrapper of this TapiNotificationSubscriptionFilterWrapper. # noqa: E501 + :rtype: TapiNotificationSubscriptionFilterWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def subscription_filter(self) -> TapiNotificationSubscriptionFilter: + """Gets the subscription_filter of this TapiNotificationSubscriptionFilterWrapper. + + + :return: The subscription_filter of this TapiNotificationSubscriptionFilterWrapper. + :rtype: TapiNotificationSubscriptionFilter + """ + return self._subscription_filter + + @subscription_filter.setter + def subscription_filter(self, subscription_filter: TapiNotificationSubscriptionFilter): + """Sets the subscription_filter of this TapiNotificationSubscriptionFilterWrapper. + + + :param subscription_filter: The subscription_filter of this TapiNotificationSubscriptionFilterWrapper. + :type subscription_filter: TapiNotificationSubscriptionFilter + """ + + self._subscription_filter = subscription_filter diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_subscription_state.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_subscription_state.py new file mode 100644 index 0000000000000000000000000000000000000000..80f69c5f51085ca4512a622ca253dd634ac2360f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_subscription_state.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationSubscriptionState(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + SUSPENDED = "SUSPENDED" + ACTIVE = "ACTIVE" + def __init__(self): # noqa: E501 + """TapiNotificationSubscriptionState - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationSubscriptionState': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.SubscriptionState of this TapiNotificationSubscriptionState. # noqa: E501 + :rtype: TapiNotificationSubscriptionState + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_tca_info.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_tca_info.py new file mode 100644 index 0000000000000000000000000000000000000000..9043ceee54d8c6c18dc58ef10f77fa1e1efd5b4b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_tca_info.py @@ -0,0 +1,230 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_perceived_tca_severity import TapiNotificationPerceivedTcaSeverity # noqa: F401,E501 +from tapi_server.models.tapi_notification_threshold_crossing_type import TapiNotificationThresholdCrossingType # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationTcaInfo(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, threshold_crossing: TapiNotificationThresholdCrossingType=None, threshold_parameter: str=None, is_transient: bool=False, threshold_value: int=None, perceived_severity: TapiNotificationPerceivedTcaSeverity=None, suspect_interval_flag: bool=False, measurement_interval: str=None): # noqa: E501 + """TapiNotificationTcaInfo - a model defined in Swagger + + :param threshold_crossing: The threshold_crossing of this TapiNotificationTcaInfo. # noqa: E501 + :type threshold_crossing: TapiNotificationThresholdCrossingType + :param threshold_parameter: The threshold_parameter of this TapiNotificationTcaInfo. # noqa: E501 + :type threshold_parameter: str + :param is_transient: The is_transient of this TapiNotificationTcaInfo. # noqa: E501 + :type is_transient: bool + :param threshold_value: The threshold_value of this TapiNotificationTcaInfo. # noqa: E501 + :type threshold_value: int + :param perceived_severity: The perceived_severity of this TapiNotificationTcaInfo. # noqa: E501 + :type perceived_severity: TapiNotificationPerceivedTcaSeverity + :param suspect_interval_flag: The suspect_interval_flag of this TapiNotificationTcaInfo. # noqa: E501 + :type suspect_interval_flag: bool + :param measurement_interval: The measurement_interval of this TapiNotificationTcaInfo. # noqa: E501 + :type measurement_interval: str + """ + self.swagger_types = { + 'threshold_crossing': TapiNotificationThresholdCrossingType, + 'threshold_parameter': str, + 'is_transient': bool, + 'threshold_value': int, + 'perceived_severity': TapiNotificationPerceivedTcaSeverity, + 'suspect_interval_flag': bool, + 'measurement_interval': str + } + + self.attribute_map = { + 'threshold_crossing': 'threshold-crossing', + 'threshold_parameter': 'threshold-parameter', + 'is_transient': 'is-transient', + 'threshold_value': 'threshold-value', + 'perceived_severity': 'perceived-severity', + 'suspect_interval_flag': 'suspect-interval-flag', + 'measurement_interval': 'measurement-interval' + } + self._threshold_crossing = threshold_crossing + self._threshold_parameter = threshold_parameter + self._is_transient = is_transient + self._threshold_value = threshold_value + self._perceived_severity = perceived_severity + self._suspect_interval_flag = suspect_interval_flag + self._measurement_interval = measurement_interval + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationTcaInfo': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.TcaInfo of this TapiNotificationTcaInfo. # noqa: E501 + :rtype: TapiNotificationTcaInfo + """ + return util.deserialize_model(dikt, cls) + + @property + def threshold_crossing(self) -> TapiNotificationThresholdCrossingType: + """Gets the threshold_crossing of this TapiNotificationTcaInfo. + + + :return: The threshold_crossing of this TapiNotificationTcaInfo. + :rtype: TapiNotificationThresholdCrossingType + """ + return self._threshold_crossing + + @threshold_crossing.setter + def threshold_crossing(self, threshold_crossing: TapiNotificationThresholdCrossingType): + """Sets the threshold_crossing of this TapiNotificationTcaInfo. + + + :param threshold_crossing: The threshold_crossing of this TapiNotificationTcaInfo. + :type threshold_crossing: TapiNotificationThresholdCrossingType + """ + + self._threshold_crossing = threshold_crossing + + @property + def threshold_parameter(self) -> str: + """Gets the threshold_parameter of this TapiNotificationTcaInfo. + + none # noqa: E501 + + :return: The threshold_parameter of this TapiNotificationTcaInfo. + :rtype: str + """ + return self._threshold_parameter + + @threshold_parameter.setter + def threshold_parameter(self, threshold_parameter: str): + """Sets the threshold_parameter of this TapiNotificationTcaInfo. + + none # noqa: E501 + + :param threshold_parameter: The threshold_parameter of this TapiNotificationTcaInfo. + :type threshold_parameter: str + """ + + self._threshold_parameter = threshold_parameter + + @property + def is_transient(self) -> bool: + """Gets the is_transient of this TapiNotificationTcaInfo. + + none # noqa: E501 + + :return: The is_transient of this TapiNotificationTcaInfo. + :rtype: bool + """ + return self._is_transient + + @is_transient.setter + def is_transient(self, is_transient: bool): + """Sets the is_transient of this TapiNotificationTcaInfo. + + none # noqa: E501 + + :param is_transient: The is_transient of this TapiNotificationTcaInfo. + :type is_transient: bool + """ + + self._is_transient = is_transient + + @property + def threshold_value(self) -> int: + """Gets the threshold_value of this TapiNotificationTcaInfo. + + none # noqa: E501 + + :return: The threshold_value of this TapiNotificationTcaInfo. + :rtype: int + """ + return self._threshold_value + + @threshold_value.setter + def threshold_value(self, threshold_value: int): + """Sets the threshold_value of this TapiNotificationTcaInfo. + + none # noqa: E501 + + :param threshold_value: The threshold_value of this TapiNotificationTcaInfo. + :type threshold_value: int + """ + + self._threshold_value = threshold_value + + @property + def perceived_severity(self) -> TapiNotificationPerceivedTcaSeverity: + """Gets the perceived_severity of this TapiNotificationTcaInfo. + + + :return: The perceived_severity of this TapiNotificationTcaInfo. + :rtype: TapiNotificationPerceivedTcaSeverity + """ + return self._perceived_severity + + @perceived_severity.setter + def perceived_severity(self, perceived_severity: TapiNotificationPerceivedTcaSeverity): + """Sets the perceived_severity of this TapiNotificationTcaInfo. + + + :param perceived_severity: The perceived_severity of this TapiNotificationTcaInfo. + :type perceived_severity: TapiNotificationPerceivedTcaSeverity + """ + + self._perceived_severity = perceived_severity + + @property + def suspect_interval_flag(self) -> bool: + """Gets the suspect_interval_flag of this TapiNotificationTcaInfo. + + none # noqa: E501 + + :return: The suspect_interval_flag of this TapiNotificationTcaInfo. + :rtype: bool + """ + return self._suspect_interval_flag + + @suspect_interval_flag.setter + def suspect_interval_flag(self, suspect_interval_flag: bool): + """Sets the suspect_interval_flag of this TapiNotificationTcaInfo. + + none # noqa: E501 + + :param suspect_interval_flag: The suspect_interval_flag of this TapiNotificationTcaInfo. + :type suspect_interval_flag: bool + """ + + self._suspect_interval_flag = suspect_interval_flag + + @property + def measurement_interval(self) -> str: + """Gets the measurement_interval of this TapiNotificationTcaInfo. + + none # noqa: E501 + + :return: The measurement_interval of this TapiNotificationTcaInfo. + :rtype: str + """ + return self._measurement_interval + + @measurement_interval.setter + def measurement_interval(self, measurement_interval: str): + """Sets the measurement_interval of this TapiNotificationTcaInfo. + + none # noqa: E501 + + :param measurement_interval: The measurement_interval of this TapiNotificationTcaInfo. + :type measurement_interval: str + """ + + self._measurement_interval = measurement_interval diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_tca_info_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_tca_info_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..b607e088d46fd14cbb5deb37df8f9f02a0bfc22b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_tca_info_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_tca_info import TapiNotificationTcaInfo # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationTcaInfoWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, tca_info: TapiNotificationTcaInfo=None): # noqa: E501 + """TapiNotificationTcaInfoWrapper - a model defined in Swagger + + :param tca_info: The tca_info of this TapiNotificationTcaInfoWrapper. # noqa: E501 + :type tca_info: TapiNotificationTcaInfo + """ + self.swagger_types = { + 'tca_info': TapiNotificationTcaInfo + } + + self.attribute_map = { + 'tca_info': 'tca-info' + } + self._tca_info = tca_info + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationTcaInfoWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.TcaInfoWrapper of this TapiNotificationTcaInfoWrapper. # noqa: E501 + :rtype: TapiNotificationTcaInfoWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def tca_info(self) -> TapiNotificationTcaInfo: + """Gets the tca_info of this TapiNotificationTcaInfoWrapper. + + + :return: The tca_info of this TapiNotificationTcaInfoWrapper. + :rtype: TapiNotificationTcaInfo + """ + return self._tca_info + + @tca_info.setter + def tca_info(self, tca_info: TapiNotificationTcaInfo): + """Sets the tca_info of this TapiNotificationTcaInfoWrapper. + + + :param tca_info: The tca_info of this TapiNotificationTcaInfoWrapper. + :type tca_info: TapiNotificationTcaInfo + """ + + self._tca_info = tca_info diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_threshold_crossing_type.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_threshold_crossing_type.py new file mode 100644 index 0000000000000000000000000000000000000000..7082427638817227cbdb964d0c7d55459376938e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_threshold_crossing_type.py @@ -0,0 +1,43 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiNotificationThresholdCrossingType(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + THRESHOLD_ABOVE = "THRESHOLD_ABOVE" + THRESHOLD_BELOW = "THRESHOLD_BELOW" + CLEARED = "CLEARED" + def __init__(self): # noqa: E501 + """TapiNotificationThresholdCrossingType - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationThresholdCrossingType': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.ThresholdCrossingType of this TapiNotificationThresholdCrossingType. # noqa: E501 + :rtype: TapiNotificationThresholdCrossingType + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_update_notification_subscription_service.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_update_notification_subscription_service.py new file mode 100644 index 0000000000000000000000000000000000000000..a784b067a36151c912470b2c234b31cdc33e4762 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_update_notification_subscription_service.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_updatenotificationsubscriptionservice_output import TapiNotificationUpdatenotificationsubscriptionserviceOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationUpdateNotificationSubscriptionService(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiNotificationUpdatenotificationsubscriptionserviceOutput=None): # noqa: E501 + """TapiNotificationUpdateNotificationSubscriptionService - a model defined in Swagger + + :param output: The output of this TapiNotificationUpdateNotificationSubscriptionService. # noqa: E501 + :type output: TapiNotificationUpdatenotificationsubscriptionserviceOutput + """ + self.swagger_types = { + 'output': TapiNotificationUpdatenotificationsubscriptionserviceOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationUpdateNotificationSubscriptionService': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.UpdateNotificationSubscriptionService of this TapiNotificationUpdateNotificationSubscriptionService. # noqa: E501 + :rtype: TapiNotificationUpdateNotificationSubscriptionService + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiNotificationUpdatenotificationsubscriptionserviceOutput: + """Gets the output of this TapiNotificationUpdateNotificationSubscriptionService. + + + :return: The output of this TapiNotificationUpdateNotificationSubscriptionService. + :rtype: TapiNotificationUpdatenotificationsubscriptionserviceOutput + """ + return self._output + + @output.setter + def output(self, output: TapiNotificationUpdatenotificationsubscriptionserviceOutput): + """Sets the output of this TapiNotificationUpdateNotificationSubscriptionService. + + + :param output: The output of this TapiNotificationUpdateNotificationSubscriptionService. + :type output: TapiNotificationUpdatenotificationsubscriptionserviceOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_updatenotificationsubscriptionservice_input.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_updatenotificationsubscriptionservice_input.py new file mode 100644 index 0000000000000000000000000000000000000000..c6a1b1e4e980157be32a71692fe6a40b2e098bfd --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_updatenotificationsubscriptionservice_input.py @@ -0,0 +1,118 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_subscription_filter import TapiNotificationSubscriptionFilter # noqa: F401,E501 +from tapi_server.models.tapi_notification_subscription_state import TapiNotificationSubscriptionState # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationUpdatenotificationsubscriptionserviceInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, subscription_state: TapiNotificationSubscriptionState=None, subscription_filter: TapiNotificationSubscriptionFilter=None, subscription_id_or_name: str=None): # noqa: E501 + """TapiNotificationUpdatenotificationsubscriptionserviceInput - a model defined in Swagger + + :param subscription_state: The subscription_state of this TapiNotificationUpdatenotificationsubscriptionserviceInput. # noqa: E501 + :type subscription_state: TapiNotificationSubscriptionState + :param subscription_filter: The subscription_filter of this TapiNotificationUpdatenotificationsubscriptionserviceInput. # noqa: E501 + :type subscription_filter: TapiNotificationSubscriptionFilter + :param subscription_id_or_name: The subscription_id_or_name of this TapiNotificationUpdatenotificationsubscriptionserviceInput. # noqa: E501 + :type subscription_id_or_name: str + """ + self.swagger_types = { + 'subscription_state': TapiNotificationSubscriptionState, + 'subscription_filter': TapiNotificationSubscriptionFilter, + 'subscription_id_or_name': str + } + + self.attribute_map = { + 'subscription_state': 'subscription-state', + 'subscription_filter': 'subscription-filter', + 'subscription_id_or_name': 'subscription-id-or-name' + } + self._subscription_state = subscription_state + self._subscription_filter = subscription_filter + self._subscription_id_or_name = subscription_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationUpdatenotificationsubscriptionserviceInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.updatenotificationsubscriptionservice.Input of this TapiNotificationUpdatenotificationsubscriptionserviceInput. # noqa: E501 + :rtype: TapiNotificationUpdatenotificationsubscriptionserviceInput + """ + return util.deserialize_model(dikt, cls) + + @property + def subscription_state(self) -> TapiNotificationSubscriptionState: + """Gets the subscription_state of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + + + :return: The subscription_state of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + :rtype: TapiNotificationSubscriptionState + """ + return self._subscription_state + + @subscription_state.setter + def subscription_state(self, subscription_state: TapiNotificationSubscriptionState): + """Sets the subscription_state of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + + + :param subscription_state: The subscription_state of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + :type subscription_state: TapiNotificationSubscriptionState + """ + + self._subscription_state = subscription_state + + @property + def subscription_filter(self) -> TapiNotificationSubscriptionFilter: + """Gets the subscription_filter of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + + + :return: The subscription_filter of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + :rtype: TapiNotificationSubscriptionFilter + """ + return self._subscription_filter + + @subscription_filter.setter + def subscription_filter(self, subscription_filter: TapiNotificationSubscriptionFilter): + """Sets the subscription_filter of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + + + :param subscription_filter: The subscription_filter of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + :type subscription_filter: TapiNotificationSubscriptionFilter + """ + + self._subscription_filter = subscription_filter + + @property + def subscription_id_or_name(self) -> str: + """Gets the subscription_id_or_name of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + + none # noqa: E501 + + :return: The subscription_id_or_name of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + :rtype: str + """ + return self._subscription_id_or_name + + @subscription_id_or_name.setter + def subscription_id_or_name(self, subscription_id_or_name: str): + """Sets the subscription_id_or_name of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + + none # noqa: E501 + + :param subscription_id_or_name: The subscription_id_or_name of this TapiNotificationUpdatenotificationsubscriptionserviceInput. + :type subscription_id_or_name: str + """ + + self._subscription_id_or_name = subscription_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_notification_updatenotificationsubscriptionservice_output.py b/hackfest/tapi/server/tapi_server/models/tapi_notification_updatenotificationsubscriptionservice_output.py new file mode 100644 index 0000000000000000000000000000000000000000..fc0ba68399d51b381faa2adcb6a2899fcc0a8554 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_notification_updatenotificationsubscriptionservice_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_notification_notification_subscription_service import TapiNotificationNotificationSubscriptionService # noqa: F401,E501 +from tapi_server import util + + +class TapiNotificationUpdatenotificationsubscriptionserviceOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, subscription_service: TapiNotificationNotificationSubscriptionService=None): # noqa: E501 + """TapiNotificationUpdatenotificationsubscriptionserviceOutput - a model defined in Swagger + + :param subscription_service: The subscription_service of this TapiNotificationUpdatenotificationsubscriptionserviceOutput. # noqa: E501 + :type subscription_service: TapiNotificationNotificationSubscriptionService + """ + self.swagger_types = { + 'subscription_service': TapiNotificationNotificationSubscriptionService + } + + self.attribute_map = { + 'subscription_service': 'subscription-service' + } + self._subscription_service = subscription_service + + @classmethod + def from_dict(cls, dikt) -> 'TapiNotificationUpdatenotificationsubscriptionserviceOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.notification.updatenotificationsubscriptionservice.Output of this TapiNotificationUpdatenotificationsubscriptionserviceOutput. # noqa: E501 + :rtype: TapiNotificationUpdatenotificationsubscriptionserviceOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def subscription_service(self) -> TapiNotificationNotificationSubscriptionService: + """Gets the subscription_service of this TapiNotificationUpdatenotificationsubscriptionserviceOutput. + + + :return: The subscription_service of this TapiNotificationUpdatenotificationsubscriptionserviceOutput. + :rtype: TapiNotificationNotificationSubscriptionService + """ + return self._subscription_service + + @subscription_service.setter + def subscription_service(self, subscription_service: TapiNotificationNotificationSubscriptionService): + """Sets the subscription_service of this TapiNotificationUpdatenotificationsubscriptionserviceOutput. + + + :param subscription_service: The subscription_service of this TapiNotificationUpdatenotificationsubscriptionserviceOutput. + :type subscription_service: TapiNotificationNotificationSubscriptionService + """ + + self._subscription_service = subscription_service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_compute_p2_p_path.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_compute_p2_p_path.py new file mode 100644 index 0000000000000000000000000000000000000000..a3630b3b370eda154618831f0e399d9f2df8cde1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_compute_p2_p_path.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_computep2ppath_output import TapiPathComputationComputep2ppathOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationComputeP2PPath(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiPathComputationComputep2ppathOutput=None): # noqa: E501 + """TapiPathComputationComputeP2PPath - a model defined in Swagger + + :param output: The output of this TapiPathComputationComputeP2PPath. # noqa: E501 + :type output: TapiPathComputationComputep2ppathOutput + """ + self.swagger_types = { + 'output': TapiPathComputationComputep2ppathOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationComputeP2PPath': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.ComputeP2PPath of this TapiPathComputationComputeP2PPath. # noqa: E501 + :rtype: TapiPathComputationComputeP2PPath + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiPathComputationComputep2ppathOutput: + """Gets the output of this TapiPathComputationComputeP2PPath. + + + :return: The output of this TapiPathComputationComputeP2PPath. + :rtype: TapiPathComputationComputep2ppathOutput + """ + return self._output + + @output.setter + def output(self, output: TapiPathComputationComputep2ppathOutput): + """Sets the output of this TapiPathComputationComputeP2PPath. + + + :param output: The output of this TapiPathComputationComputeP2PPath. + :type output: TapiPathComputationComputep2ppathOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_computep2ppath_input.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_computep2ppath_input.py new file mode 100644 index 0000000000000000000000000000000000000000..1e934cbdca0d23f23ef282da4e0863f14badc972 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_computep2ppath_input.py @@ -0,0 +1,146 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_objective_function import TapiPathComputationPathObjectiveFunction # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_path_service_end_point import TapiPathComputationPathServiceEndPoint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_routing_constraint import TapiPathComputationRoutingConstraint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_topology_constraint import TapiPathComputationTopologyConstraint # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationComputep2ppathInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology_constraint: TapiPathComputationTopologyConstraint=None, routing_constraint: TapiPathComputationRoutingConstraint=None, objective_function: TapiPathComputationPathObjectiveFunction=None, sep: List[TapiPathComputationPathServiceEndPoint]=None): # noqa: E501 + """TapiPathComputationComputep2ppathInput - a model defined in Swagger + + :param topology_constraint: The topology_constraint of this TapiPathComputationComputep2ppathInput. # noqa: E501 + :type topology_constraint: TapiPathComputationTopologyConstraint + :param routing_constraint: The routing_constraint of this TapiPathComputationComputep2ppathInput. # noqa: E501 + :type routing_constraint: TapiPathComputationRoutingConstraint + :param objective_function: The objective_function of this TapiPathComputationComputep2ppathInput. # noqa: E501 + :type objective_function: TapiPathComputationPathObjectiveFunction + :param sep: The sep of this TapiPathComputationComputep2ppathInput. # noqa: E501 + :type sep: List[TapiPathComputationPathServiceEndPoint] + """ + self.swagger_types = { + 'topology_constraint': TapiPathComputationTopologyConstraint, + 'routing_constraint': TapiPathComputationRoutingConstraint, + 'objective_function': TapiPathComputationPathObjectiveFunction, + 'sep': List[TapiPathComputationPathServiceEndPoint] + } + + self.attribute_map = { + 'topology_constraint': 'topology-constraint', + 'routing_constraint': 'routing-constraint', + 'objective_function': 'objective-function', + 'sep': 'sep' + } + self._topology_constraint = topology_constraint + self._routing_constraint = routing_constraint + self._objective_function = objective_function + self._sep = sep + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationComputep2ppathInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.computep2ppath.Input of this TapiPathComputationComputep2ppathInput. # noqa: E501 + :rtype: TapiPathComputationComputep2ppathInput + """ + return util.deserialize_model(dikt, cls) + + @property + def topology_constraint(self) -> TapiPathComputationTopologyConstraint: + """Gets the topology_constraint of this TapiPathComputationComputep2ppathInput. + + + :return: The topology_constraint of this TapiPathComputationComputep2ppathInput. + :rtype: TapiPathComputationTopologyConstraint + """ + return self._topology_constraint + + @topology_constraint.setter + def topology_constraint(self, topology_constraint: TapiPathComputationTopologyConstraint): + """Sets the topology_constraint of this TapiPathComputationComputep2ppathInput. + + + :param topology_constraint: The topology_constraint of this TapiPathComputationComputep2ppathInput. + :type topology_constraint: TapiPathComputationTopologyConstraint + """ + + self._topology_constraint = topology_constraint + + @property + def routing_constraint(self) -> TapiPathComputationRoutingConstraint: + """Gets the routing_constraint of this TapiPathComputationComputep2ppathInput. + + + :return: The routing_constraint of this TapiPathComputationComputep2ppathInput. + :rtype: TapiPathComputationRoutingConstraint + """ + return self._routing_constraint + + @routing_constraint.setter + def routing_constraint(self, routing_constraint: TapiPathComputationRoutingConstraint): + """Sets the routing_constraint of this TapiPathComputationComputep2ppathInput. + + + :param routing_constraint: The routing_constraint of this TapiPathComputationComputep2ppathInput. + :type routing_constraint: TapiPathComputationRoutingConstraint + """ + + self._routing_constraint = routing_constraint + + @property + def objective_function(self) -> TapiPathComputationPathObjectiveFunction: + """Gets the objective_function of this TapiPathComputationComputep2ppathInput. + + + :return: The objective_function of this TapiPathComputationComputep2ppathInput. + :rtype: TapiPathComputationPathObjectiveFunction + """ + return self._objective_function + + @objective_function.setter + def objective_function(self, objective_function: TapiPathComputationPathObjectiveFunction): + """Sets the objective_function of this TapiPathComputationComputep2ppathInput. + + + :param objective_function: The objective_function of this TapiPathComputationComputep2ppathInput. + :type objective_function: TapiPathComputationPathObjectiveFunction + """ + + self._objective_function = objective_function + + @property + def sep(self) -> List[TapiPathComputationPathServiceEndPoint]: + """Gets the sep of this TapiPathComputationComputep2ppathInput. + + none # noqa: E501 + + :return: The sep of this TapiPathComputationComputep2ppathInput. + :rtype: List[TapiPathComputationPathServiceEndPoint] + """ + return self._sep + + @sep.setter + def sep(self, sep: List[TapiPathComputationPathServiceEndPoint]): + """Sets the sep of this TapiPathComputationComputep2ppathInput. + + none # noqa: E501 + + :param sep: The sep of this TapiPathComputationComputep2ppathInput. + :type sep: List[TapiPathComputationPathServiceEndPoint] + """ + + self._sep = sep diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_computep2ppath_output.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_computep2ppath_output.py new file mode 100644 index 0000000000000000000000000000000000000000..a89dc2657d6b17d654cead1a40e5d7d46a2b420d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_computep2ppath_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_computation_service import TapiPathComputationPathComputationService # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationComputep2ppathOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service: TapiPathComputationPathComputationService=None): # noqa: E501 + """TapiPathComputationComputep2ppathOutput - a model defined in Swagger + + :param service: The service of this TapiPathComputationComputep2ppathOutput. # noqa: E501 + :type service: TapiPathComputationPathComputationService + """ + self.swagger_types = { + 'service': TapiPathComputationPathComputationService + } + + self.attribute_map = { + 'service': 'service' + } + self._service = service + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationComputep2ppathOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.computep2ppath.Output of this TapiPathComputationComputep2ppathOutput. # noqa: E501 + :rtype: TapiPathComputationComputep2ppathOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def service(self) -> TapiPathComputationPathComputationService: + """Gets the service of this TapiPathComputationComputep2ppathOutput. + + + :return: The service of this TapiPathComputationComputep2ppathOutput. + :rtype: TapiPathComputationPathComputationService + """ + return self._service + + @service.setter + def service(self, service: TapiPathComputationPathComputationService): + """Sets the service of this TapiPathComputationComputep2ppathOutput. + + + :param service: The service of this TapiPathComputationComputep2ppathOutput. + :type service: TapiPathComputationPathComputationService + """ + + self._service = service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_context_augmentation2.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_context_augmentation2.py new file mode 100644 index 0000000000000000000000000000000000000000..846fd8190406e4e88a9a7151f50200a8caf3059f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_context_augmentation2.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_computation_context import TapiPathComputationPathComputationContext # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationContextAugmentation2(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, path_computation_context: TapiPathComputationPathComputationContext=None): # noqa: E501 + """TapiPathComputationContextAugmentation2 - a model defined in Swagger + + :param path_computation_context: The path_computation_context of this TapiPathComputationContextAugmentation2. # noqa: E501 + :type path_computation_context: TapiPathComputationPathComputationContext + """ + self.swagger_types = { + 'path_computation_context': TapiPathComputationPathComputationContext + } + + self.attribute_map = { + 'path_computation_context': 'path-computation-context' + } + self._path_computation_context = path_computation_context + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationContextAugmentation2': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.ContextAugmentation2 of this TapiPathComputationContextAugmentation2. # noqa: E501 + :rtype: TapiPathComputationContextAugmentation2 + """ + return util.deserialize_model(dikt, cls) + + @property + def path_computation_context(self) -> TapiPathComputationPathComputationContext: + """Gets the path_computation_context of this TapiPathComputationContextAugmentation2. + + + :return: The path_computation_context of this TapiPathComputationContextAugmentation2. + :rtype: TapiPathComputationPathComputationContext + """ + return self._path_computation_context + + @path_computation_context.setter + def path_computation_context(self, path_computation_context: TapiPathComputationPathComputationContext): + """Sets the path_computation_context of this TapiPathComputationContextAugmentation2. + + + :param path_computation_context: The path_computation_context of this TapiPathComputationContextAugmentation2. + :type path_computation_context: TapiPathComputationPathComputationContext + """ + + self._path_computation_context = path_computation_context diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_delete_p2_p_path.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_delete_p2_p_path.py new file mode 100644 index 0000000000000000000000000000000000000000..5af4467a2927cde5085f14bb97270b1b962fa105 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_delete_p2_p_path.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_deletep2ppath_output import TapiPathComputationDeletep2ppathOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationDeleteP2PPath(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiPathComputationDeletep2ppathOutput=None): # noqa: E501 + """TapiPathComputationDeleteP2PPath - a model defined in Swagger + + :param output: The output of this TapiPathComputationDeleteP2PPath. # noqa: E501 + :type output: TapiPathComputationDeletep2ppathOutput + """ + self.swagger_types = { + 'output': TapiPathComputationDeletep2ppathOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationDeleteP2PPath': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.DeleteP2PPath of this TapiPathComputationDeleteP2PPath. # noqa: E501 + :rtype: TapiPathComputationDeleteP2PPath + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiPathComputationDeletep2ppathOutput: + """Gets the output of this TapiPathComputationDeleteP2PPath. + + + :return: The output of this TapiPathComputationDeleteP2PPath. + :rtype: TapiPathComputationDeletep2ppathOutput + """ + return self._output + + @output.setter + def output(self, output: TapiPathComputationDeletep2ppathOutput): + """Sets the output of this TapiPathComputationDeleteP2PPath. + + + :param output: The output of this TapiPathComputationDeleteP2PPath. + :type output: TapiPathComputationDeletep2ppathOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_deletep2ppath_input.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_deletep2ppath_input.py new file mode 100644 index 0000000000000000000000000000000000000000..e09c60312cd29b8005ad7dcc1cc2c2b526ab478e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_deletep2ppath_input.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiPathComputationDeletep2ppathInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, path_id_or_name: str=None): # noqa: E501 + """TapiPathComputationDeletep2ppathInput - a model defined in Swagger + + :param path_id_or_name: The path_id_or_name of this TapiPathComputationDeletep2ppathInput. # noqa: E501 + :type path_id_or_name: str + """ + self.swagger_types = { + 'path_id_or_name': str + } + + self.attribute_map = { + 'path_id_or_name': 'path-id-or-name' + } + self._path_id_or_name = path_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationDeletep2ppathInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.deletep2ppath.Input of this TapiPathComputationDeletep2ppathInput. # noqa: E501 + :rtype: TapiPathComputationDeletep2ppathInput + """ + return util.deserialize_model(dikt, cls) + + @property + def path_id_or_name(self) -> str: + """Gets the path_id_or_name of this TapiPathComputationDeletep2ppathInput. + + none # noqa: E501 + + :return: The path_id_or_name of this TapiPathComputationDeletep2ppathInput. + :rtype: str + """ + return self._path_id_or_name + + @path_id_or_name.setter + def path_id_or_name(self, path_id_or_name: str): + """Sets the path_id_or_name of this TapiPathComputationDeletep2ppathInput. + + none # noqa: E501 + + :param path_id_or_name: The path_id_or_name of this TapiPathComputationDeletep2ppathInput. + :type path_id_or_name: str + """ + + self._path_id_or_name = path_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_deletep2ppath_output.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_deletep2ppath_output.py new file mode 100644 index 0000000000000000000000000000000000000000..fab025bea92a859f23fe917e3bead9101b7b45a1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_deletep2ppath_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_computation_service import TapiPathComputationPathComputationService # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationDeletep2ppathOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service: TapiPathComputationPathComputationService=None): # noqa: E501 + """TapiPathComputationDeletep2ppathOutput - a model defined in Swagger + + :param service: The service of this TapiPathComputationDeletep2ppathOutput. # noqa: E501 + :type service: TapiPathComputationPathComputationService + """ + self.swagger_types = { + 'service': TapiPathComputationPathComputationService + } + + self.attribute_map = { + 'service': 'service' + } + self._service = service + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationDeletep2ppathOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.deletep2ppath.Output of this TapiPathComputationDeletep2ppathOutput. # noqa: E501 + :rtype: TapiPathComputationDeletep2ppathOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def service(self) -> TapiPathComputationPathComputationService: + """Gets the service of this TapiPathComputationDeletep2ppathOutput. + + + :return: The service of this TapiPathComputationDeletep2ppathOutput. + :rtype: TapiPathComputationPathComputationService + """ + return self._service + + @service.setter + def service(self, service: TapiPathComputationPathComputationService): + """Sets the service of this TapiPathComputationDeletep2ppathOutput. + + + :param service: The service of this TapiPathComputationDeletep2ppathOutput. + :type service: TapiPathComputationPathComputationService + """ + + self._service = service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_diversity_policy.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_diversity_policy.py new file mode 100644 index 0000000000000000000000000000000000000000..fb26c95763424c8168c33752246365696d331175 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_diversity_policy.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiPathComputationDiversityPolicy(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + SRLG = "SRLG" + SRNG = "SRNG" + SNG = "SNG" + NODE = "NODE" + LINK = "LINK" + def __init__(self): # noqa: E501 + """TapiPathComputationDiversityPolicy - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationDiversityPolicy': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.DiversityPolicy of this TapiPathComputationDiversityPolicy. # noqa: E501 + :rtype: TapiPathComputationDiversityPolicy + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_optimize_p2_ppath.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_optimize_p2_ppath.py new file mode 100644 index 0000000000000000000000000000000000000000..33673e284aa5574a1fd4285a2ac3e947c58e3027 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_optimize_p2_ppath.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_optimizep2ppath_output import TapiPathComputationOptimizep2ppathOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationOptimizeP2Ppath(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiPathComputationOptimizep2ppathOutput=None): # noqa: E501 + """TapiPathComputationOptimizeP2Ppath - a model defined in Swagger + + :param output: The output of this TapiPathComputationOptimizeP2Ppath. # noqa: E501 + :type output: TapiPathComputationOptimizep2ppathOutput + """ + self.swagger_types = { + 'output': TapiPathComputationOptimizep2ppathOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationOptimizeP2Ppath': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.OptimizeP2Ppath of this TapiPathComputationOptimizeP2Ppath. # noqa: E501 + :rtype: TapiPathComputationOptimizeP2Ppath + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiPathComputationOptimizep2ppathOutput: + """Gets the output of this TapiPathComputationOptimizeP2Ppath. + + + :return: The output of this TapiPathComputationOptimizeP2Ppath. + :rtype: TapiPathComputationOptimizep2ppathOutput + """ + return self._output + + @output.setter + def output(self, output: TapiPathComputationOptimizep2ppathOutput): + """Sets the output of this TapiPathComputationOptimizeP2Ppath. + + + :param output: The output of this TapiPathComputationOptimizeP2Ppath. + :type output: TapiPathComputationOptimizep2ppathOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_optimizep2ppath_input.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_optimizep2ppath_input.py new file mode 100644 index 0000000000000000000000000000000000000000..8d156745236d27b6d9a96514f6c463f009096d11 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_optimizep2ppath_input.py @@ -0,0 +1,145 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_objective_function import TapiPathComputationPathObjectiveFunction # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_path_optimization_constraint import TapiPathComputationPathOptimizationConstraint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_routing_constraint import TapiPathComputationRoutingConstraint # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationOptimizep2ppathInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, routing_constraint: TapiPathComputationRoutingConstraint=None, path_id_or_name: str=None, optimization_constraint: TapiPathComputationPathOptimizationConstraint=None, objective_function: TapiPathComputationPathObjectiveFunction=None): # noqa: E501 + """TapiPathComputationOptimizep2ppathInput - a model defined in Swagger + + :param routing_constraint: The routing_constraint of this TapiPathComputationOptimizep2ppathInput. # noqa: E501 + :type routing_constraint: TapiPathComputationRoutingConstraint + :param path_id_or_name: The path_id_or_name of this TapiPathComputationOptimizep2ppathInput. # noqa: E501 + :type path_id_or_name: str + :param optimization_constraint: The optimization_constraint of this TapiPathComputationOptimizep2ppathInput. # noqa: E501 + :type optimization_constraint: TapiPathComputationPathOptimizationConstraint + :param objective_function: The objective_function of this TapiPathComputationOptimizep2ppathInput. # noqa: E501 + :type objective_function: TapiPathComputationPathObjectiveFunction + """ + self.swagger_types = { + 'routing_constraint': TapiPathComputationRoutingConstraint, + 'path_id_or_name': str, + 'optimization_constraint': TapiPathComputationPathOptimizationConstraint, + 'objective_function': TapiPathComputationPathObjectiveFunction + } + + self.attribute_map = { + 'routing_constraint': 'routing-constraint', + 'path_id_or_name': 'path-id-or-name', + 'optimization_constraint': 'optimization-constraint', + 'objective_function': 'objective-function' + } + self._routing_constraint = routing_constraint + self._path_id_or_name = path_id_or_name + self._optimization_constraint = optimization_constraint + self._objective_function = objective_function + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationOptimizep2ppathInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.optimizep2ppath.Input of this TapiPathComputationOptimizep2ppathInput. # noqa: E501 + :rtype: TapiPathComputationOptimizep2ppathInput + """ + return util.deserialize_model(dikt, cls) + + @property + def routing_constraint(self) -> TapiPathComputationRoutingConstraint: + """Gets the routing_constraint of this TapiPathComputationOptimizep2ppathInput. + + + :return: The routing_constraint of this TapiPathComputationOptimizep2ppathInput. + :rtype: TapiPathComputationRoutingConstraint + """ + return self._routing_constraint + + @routing_constraint.setter + def routing_constraint(self, routing_constraint: TapiPathComputationRoutingConstraint): + """Sets the routing_constraint of this TapiPathComputationOptimizep2ppathInput. + + + :param routing_constraint: The routing_constraint of this TapiPathComputationOptimizep2ppathInput. + :type routing_constraint: TapiPathComputationRoutingConstraint + """ + + self._routing_constraint = routing_constraint + + @property + def path_id_or_name(self) -> str: + """Gets the path_id_or_name of this TapiPathComputationOptimizep2ppathInput. + + none # noqa: E501 + + :return: The path_id_or_name of this TapiPathComputationOptimizep2ppathInput. + :rtype: str + """ + return self._path_id_or_name + + @path_id_or_name.setter + def path_id_or_name(self, path_id_or_name: str): + """Sets the path_id_or_name of this TapiPathComputationOptimizep2ppathInput. + + none # noqa: E501 + + :param path_id_or_name: The path_id_or_name of this TapiPathComputationOptimizep2ppathInput. + :type path_id_or_name: str + """ + + self._path_id_or_name = path_id_or_name + + @property + def optimization_constraint(self) -> TapiPathComputationPathOptimizationConstraint: + """Gets the optimization_constraint of this TapiPathComputationOptimizep2ppathInput. + + + :return: The optimization_constraint of this TapiPathComputationOptimizep2ppathInput. + :rtype: TapiPathComputationPathOptimizationConstraint + """ + return self._optimization_constraint + + @optimization_constraint.setter + def optimization_constraint(self, optimization_constraint: TapiPathComputationPathOptimizationConstraint): + """Sets the optimization_constraint of this TapiPathComputationOptimizep2ppathInput. + + + :param optimization_constraint: The optimization_constraint of this TapiPathComputationOptimizep2ppathInput. + :type optimization_constraint: TapiPathComputationPathOptimizationConstraint + """ + + self._optimization_constraint = optimization_constraint + + @property + def objective_function(self) -> TapiPathComputationPathObjectiveFunction: + """Gets the objective_function of this TapiPathComputationOptimizep2ppathInput. + + + :return: The objective_function of this TapiPathComputationOptimizep2ppathInput. + :rtype: TapiPathComputationPathObjectiveFunction + """ + return self._objective_function + + @objective_function.setter + def objective_function(self, objective_function: TapiPathComputationPathObjectiveFunction): + """Sets the objective_function of this TapiPathComputationOptimizep2ppathInput. + + + :param objective_function: The objective_function of this TapiPathComputationOptimizep2ppathInput. + :type objective_function: TapiPathComputationPathObjectiveFunction + """ + + self._objective_function = objective_function diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_optimizep2ppath_output.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_optimizep2ppath_output.py new file mode 100644 index 0000000000000000000000000000000000000000..70447a61f7d388f7c9c755bdd09ba922a64aa4f3 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_optimizep2ppath_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_computation_service import TapiPathComputationPathComputationService # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationOptimizep2ppathOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, service: TapiPathComputationPathComputationService=None): # noqa: E501 + """TapiPathComputationOptimizep2ppathOutput - a model defined in Swagger + + :param service: The service of this TapiPathComputationOptimizep2ppathOutput. # noqa: E501 + :type service: TapiPathComputationPathComputationService + """ + self.swagger_types = { + 'service': TapiPathComputationPathComputationService + } + + self.attribute_map = { + 'service': 'service' + } + self._service = service + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationOptimizep2ppathOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.optimizep2ppath.Output of this TapiPathComputationOptimizep2ppathOutput. # noqa: E501 + :rtype: TapiPathComputationOptimizep2ppathOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def service(self) -> TapiPathComputationPathComputationService: + """Gets the service of this TapiPathComputationOptimizep2ppathOutput. + + + :return: The service of this TapiPathComputationOptimizep2ppathOutput. + :rtype: TapiPathComputationPathComputationService + """ + return self._service + + @service.setter + def service(self, service: TapiPathComputationPathComputationService): + """Sets the service of this TapiPathComputationOptimizep2ppathOutput. + + + :param service: The service of this TapiPathComputationOptimizep2ppathOutput. + :type service: TapiPathComputationPathComputationService + """ + + self._service = service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path.py new file mode 100644 index 0000000000000000000000000000000000000000..a522aed2a66c61eea616d528ea089d0fab9ccf34 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path.py @@ -0,0 +1,204 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_forwarding_direction import TapiCommonForwardingDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_routing_constraint import TapiPathComputationRoutingConstraint # noqa: F401,E501 +from tapi_server.models.tapi_topology_link_ref import TapiTopologyLinkRef # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPath(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None, layer_protocol_name: TapiCommonLayerProtocolName=None, link: List[TapiTopologyLinkRef]=None, routing_constraint: TapiPathComputationRoutingConstraint=None, direction: TapiCommonForwardingDirection=None): # noqa: E501 + """TapiPathComputationPath - a model defined in Swagger + + :param name: The name of this TapiPathComputationPath. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiPathComputationPath. # noqa: E501 + :type uuid: str + :param layer_protocol_name: The layer_protocol_name of this TapiPathComputationPath. # noqa: E501 + :type layer_protocol_name: TapiCommonLayerProtocolName + :param link: The link of this TapiPathComputationPath. # noqa: E501 + :type link: List[TapiTopologyLinkRef] + :param routing_constraint: The routing_constraint of this TapiPathComputationPath. # noqa: E501 + :type routing_constraint: TapiPathComputationRoutingConstraint + :param direction: The direction of this TapiPathComputationPath. # noqa: E501 + :type direction: TapiCommonForwardingDirection + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'layer_protocol_name': TapiCommonLayerProtocolName, + 'link': List[TapiTopologyLinkRef], + 'routing_constraint': TapiPathComputationRoutingConstraint, + 'direction': TapiCommonForwardingDirection + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid', + 'layer_protocol_name': 'layer-protocol-name', + 'link': 'link', + 'routing_constraint': 'routing-constraint', + 'direction': 'direction' + } + self._name = name + self._uuid = uuid + self._layer_protocol_name = layer_protocol_name + self._link = link + self._routing_constraint = routing_constraint + self._direction = direction + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPath': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.Path of this TapiPathComputationPath. # noqa: E501 + :rtype: TapiPathComputationPath + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiPathComputationPath. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiPathComputationPath. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiPathComputationPath. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiPathComputationPath. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiPathComputationPath. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiPathComputationPath. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiPathComputationPath. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiPathComputationPath. + :type uuid: str + """ + + self._uuid = uuid + + @property + def layer_protocol_name(self) -> TapiCommonLayerProtocolName: + """Gets the layer_protocol_name of this TapiPathComputationPath. + + + :return: The layer_protocol_name of this TapiPathComputationPath. + :rtype: TapiCommonLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TapiCommonLayerProtocolName): + """Sets the layer_protocol_name of this TapiPathComputationPath. + + + :param layer_protocol_name: The layer_protocol_name of this TapiPathComputationPath. + :type layer_protocol_name: TapiCommonLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def link(self) -> List[TapiTopologyLinkRef]: + """Gets the link of this TapiPathComputationPath. + + none # noqa: E501 + + :return: The link of this TapiPathComputationPath. + :rtype: List[TapiTopologyLinkRef] + """ + return self._link + + @link.setter + def link(self, link: List[TapiTopologyLinkRef]): + """Sets the link of this TapiPathComputationPath. + + none # noqa: E501 + + :param link: The link of this TapiPathComputationPath. + :type link: List[TapiTopologyLinkRef] + """ + + self._link = link + + @property + def routing_constraint(self) -> TapiPathComputationRoutingConstraint: + """Gets the routing_constraint of this TapiPathComputationPath. + + + :return: The routing_constraint of this TapiPathComputationPath. + :rtype: TapiPathComputationRoutingConstraint + """ + return self._routing_constraint + + @routing_constraint.setter + def routing_constraint(self, routing_constraint: TapiPathComputationRoutingConstraint): + """Sets the routing_constraint of this TapiPathComputationPath. + + + :param routing_constraint: The routing_constraint of this TapiPathComputationPath. + :type routing_constraint: TapiPathComputationRoutingConstraint + """ + + self._routing_constraint = routing_constraint + + @property + def direction(self) -> TapiCommonForwardingDirection: + """Gets the direction of this TapiPathComputationPath. + + + :return: The direction of this TapiPathComputationPath. + :rtype: TapiCommonForwardingDirection + """ + return self._direction + + @direction.setter + def direction(self, direction: TapiCommonForwardingDirection): + """Sets the direction of this TapiPathComputationPath. + + + :param direction: The direction of this TapiPathComputationPath. + :type direction: TapiCommonForwardingDirection + """ + + self._direction = direction diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_context.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_context.py new file mode 100644 index 0000000000000000000000000000000000000000..7a1b72f7947633a822a77c41a6cb2b271f4ae536 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_context.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path import TapiPathComputationPath # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_path_computation_service import TapiPathComputationPathComputationService # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathComputationContext(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, path_comp_service: List[TapiPathComputationPathComputationService]=None, path: List[TapiPathComputationPath]=None): # noqa: E501 + """TapiPathComputationPathComputationContext - a model defined in Swagger + + :param path_comp_service: The path_comp_service of this TapiPathComputationPathComputationContext. # noqa: E501 + :type path_comp_service: List[TapiPathComputationPathComputationService] + :param path: The path of this TapiPathComputationPathComputationContext. # noqa: E501 + :type path: List[TapiPathComputationPath] + """ + self.swagger_types = { + 'path_comp_service': List[TapiPathComputationPathComputationService], + 'path': List[TapiPathComputationPath] + } + + self.attribute_map = { + 'path_comp_service': 'path-comp-service', + 'path': 'path' + } + self._path_comp_service = path_comp_service + self._path = path + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathComputationContext': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathComputationContext of this TapiPathComputationPathComputationContext. # noqa: E501 + :rtype: TapiPathComputationPathComputationContext + """ + return util.deserialize_model(dikt, cls) + + @property + def path_comp_service(self) -> List[TapiPathComputationPathComputationService]: + """Gets the path_comp_service of this TapiPathComputationPathComputationContext. + + none # noqa: E501 + + :return: The path_comp_service of this TapiPathComputationPathComputationContext. + :rtype: List[TapiPathComputationPathComputationService] + """ + return self._path_comp_service + + @path_comp_service.setter + def path_comp_service(self, path_comp_service: List[TapiPathComputationPathComputationService]): + """Sets the path_comp_service of this TapiPathComputationPathComputationContext. + + none # noqa: E501 + + :param path_comp_service: The path_comp_service of this TapiPathComputationPathComputationContext. + :type path_comp_service: List[TapiPathComputationPathComputationService] + """ + + self._path_comp_service = path_comp_service + + @property + def path(self) -> List[TapiPathComputationPath]: + """Gets the path of this TapiPathComputationPathComputationContext. + + none # noqa: E501 + + :return: The path of this TapiPathComputationPathComputationContext. + :rtype: List[TapiPathComputationPath] + """ + return self._path + + @path.setter + def path(self, path: List[TapiPathComputationPath]): + """Sets the path of this TapiPathComputationPathComputationContext. + + none # noqa: E501 + + :param path: The path of this TapiPathComputationPathComputationContext. + :type path: List[TapiPathComputationPath] + """ + + self._path = path diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_context_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_context_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..1363e893605826a02fc4139cfebc905fde456b5d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_context_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_computation_context import TapiPathComputationPathComputationContext # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathComputationContextWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, tapi_path_computationpath_computation_context: TapiPathComputationPathComputationContext=None): # noqa: E501 + """TapiPathComputationPathComputationContextWrapper - a model defined in Swagger + + :param tapi_path_computationpath_computation_context: The tapi_path_computationpath_computation_context of this TapiPathComputationPathComputationContextWrapper. # noqa: E501 + :type tapi_path_computationpath_computation_context: TapiPathComputationPathComputationContext + """ + self.swagger_types = { + 'tapi_path_computationpath_computation_context': TapiPathComputationPathComputationContext + } + + self.attribute_map = { + 'tapi_path_computationpath_computation_context': 'tapi-path-computation:path-computation-context' + } + self._tapi_path_computationpath_computation_context = tapi_path_computationpath_computation_context + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathComputationContextWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathComputationContextWrapper of this TapiPathComputationPathComputationContextWrapper. # noqa: E501 + :rtype: TapiPathComputationPathComputationContextWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def tapi_path_computationpath_computation_context(self) -> TapiPathComputationPathComputationContext: + """Gets the tapi_path_computationpath_computation_context of this TapiPathComputationPathComputationContextWrapper. + + + :return: The tapi_path_computationpath_computation_context of this TapiPathComputationPathComputationContextWrapper. + :rtype: TapiPathComputationPathComputationContext + """ + return self._tapi_path_computationpath_computation_context + + @tapi_path_computationpath_computation_context.setter + def tapi_path_computationpath_computation_context(self, tapi_path_computationpath_computation_context: TapiPathComputationPathComputationContext): + """Sets the tapi_path_computationpath_computation_context of this TapiPathComputationPathComputationContextWrapper. + + + :param tapi_path_computationpath_computation_context: The tapi_path_computationpath_computation_context of this TapiPathComputationPathComputationContextWrapper. + :type tapi_path_computationpath_computation_context: TapiPathComputationPathComputationContext + """ + + self._tapi_path_computationpath_computation_context = tapi_path_computationpath_computation_context diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_service.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_service.py new file mode 100644 index 0000000000000000000000000000000000000000..f940cab7e89979fbb631a66e164f9ca1525cc179 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_service.py @@ -0,0 +1,260 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_path_objective_function import TapiPathComputationPathObjectiveFunction # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_path_optimization_constraint import TapiPathComputationPathOptimizationConstraint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_path_ref import TapiPathComputationPathRef # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_path_service_end_point import TapiPathComputationPathServiceEndPoint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_routing_constraint import TapiPathComputationRoutingConstraint # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_topology_constraint import TapiPathComputationTopologyConstraint # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathComputationService(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None, topology_constraint: TapiPathComputationTopologyConstraint=None, path: List[TapiPathComputationPathRef]=None, objective_function: TapiPathComputationPathObjectiveFunction=None, end_point: List[TapiPathComputationPathServiceEndPoint]=None, routing_constraint: TapiPathComputationRoutingConstraint=None, optimization_constraint: TapiPathComputationPathOptimizationConstraint=None): # noqa: E501 + """TapiPathComputationPathComputationService - a model defined in Swagger + + :param name: The name of this TapiPathComputationPathComputationService. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiPathComputationPathComputationService. # noqa: E501 + :type uuid: str + :param topology_constraint: The topology_constraint of this TapiPathComputationPathComputationService. # noqa: E501 + :type topology_constraint: TapiPathComputationTopologyConstraint + :param path: The path of this TapiPathComputationPathComputationService. # noqa: E501 + :type path: List[TapiPathComputationPathRef] + :param objective_function: The objective_function of this TapiPathComputationPathComputationService. # noqa: E501 + :type objective_function: TapiPathComputationPathObjectiveFunction + :param end_point: The end_point of this TapiPathComputationPathComputationService. # noqa: E501 + :type end_point: List[TapiPathComputationPathServiceEndPoint] + :param routing_constraint: The routing_constraint of this TapiPathComputationPathComputationService. # noqa: E501 + :type routing_constraint: TapiPathComputationRoutingConstraint + :param optimization_constraint: The optimization_constraint of this TapiPathComputationPathComputationService. # noqa: E501 + :type optimization_constraint: TapiPathComputationPathOptimizationConstraint + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'topology_constraint': TapiPathComputationTopologyConstraint, + 'path': List[TapiPathComputationPathRef], + 'objective_function': TapiPathComputationPathObjectiveFunction, + 'end_point': List[TapiPathComputationPathServiceEndPoint], + 'routing_constraint': TapiPathComputationRoutingConstraint, + 'optimization_constraint': TapiPathComputationPathOptimizationConstraint + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid', + 'topology_constraint': 'topology-constraint', + 'path': 'path', + 'objective_function': 'objective-function', + 'end_point': 'end-point', + 'routing_constraint': 'routing-constraint', + 'optimization_constraint': 'optimization-constraint' + } + self._name = name + self._uuid = uuid + self._topology_constraint = topology_constraint + self._path = path + self._objective_function = objective_function + self._end_point = end_point + self._routing_constraint = routing_constraint + self._optimization_constraint = optimization_constraint + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathComputationService': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathComputationService of this TapiPathComputationPathComputationService. # noqa: E501 + :rtype: TapiPathComputationPathComputationService + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiPathComputationPathComputationService. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiPathComputationPathComputationService. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiPathComputationPathComputationService. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiPathComputationPathComputationService. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiPathComputationPathComputationService. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiPathComputationPathComputationService. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiPathComputationPathComputationService. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiPathComputationPathComputationService. + :type uuid: str + """ + + self._uuid = uuid + + @property + def topology_constraint(self) -> TapiPathComputationTopologyConstraint: + """Gets the topology_constraint of this TapiPathComputationPathComputationService. + + + :return: The topology_constraint of this TapiPathComputationPathComputationService. + :rtype: TapiPathComputationTopologyConstraint + """ + return self._topology_constraint + + @topology_constraint.setter + def topology_constraint(self, topology_constraint: TapiPathComputationTopologyConstraint): + """Sets the topology_constraint of this TapiPathComputationPathComputationService. + + + :param topology_constraint: The topology_constraint of this TapiPathComputationPathComputationService. + :type topology_constraint: TapiPathComputationTopologyConstraint + """ + + self._topology_constraint = topology_constraint + + @property + def path(self) -> List[TapiPathComputationPathRef]: + """Gets the path of this TapiPathComputationPathComputationService. + + none # noqa: E501 + + :return: The path of this TapiPathComputationPathComputationService. + :rtype: List[TapiPathComputationPathRef] + """ + return self._path + + @path.setter + def path(self, path: List[TapiPathComputationPathRef]): + """Sets the path of this TapiPathComputationPathComputationService. + + none # noqa: E501 + + :param path: The path of this TapiPathComputationPathComputationService. + :type path: List[TapiPathComputationPathRef] + """ + + self._path = path + + @property + def objective_function(self) -> TapiPathComputationPathObjectiveFunction: + """Gets the objective_function of this TapiPathComputationPathComputationService. + + + :return: The objective_function of this TapiPathComputationPathComputationService. + :rtype: TapiPathComputationPathObjectiveFunction + """ + return self._objective_function + + @objective_function.setter + def objective_function(self, objective_function: TapiPathComputationPathObjectiveFunction): + """Sets the objective_function of this TapiPathComputationPathComputationService. + + + :param objective_function: The objective_function of this TapiPathComputationPathComputationService. + :type objective_function: TapiPathComputationPathObjectiveFunction + """ + + self._objective_function = objective_function + + @property + def end_point(self) -> List[TapiPathComputationPathServiceEndPoint]: + """Gets the end_point of this TapiPathComputationPathComputationService. + + none # noqa: E501 + + :return: The end_point of this TapiPathComputationPathComputationService. + :rtype: List[TapiPathComputationPathServiceEndPoint] + """ + return self._end_point + + @end_point.setter + def end_point(self, end_point: List[TapiPathComputationPathServiceEndPoint]): + """Sets the end_point of this TapiPathComputationPathComputationService. + + none # noqa: E501 + + :param end_point: The end_point of this TapiPathComputationPathComputationService. + :type end_point: List[TapiPathComputationPathServiceEndPoint] + """ + + self._end_point = end_point + + @property + def routing_constraint(self) -> TapiPathComputationRoutingConstraint: + """Gets the routing_constraint of this TapiPathComputationPathComputationService. + + + :return: The routing_constraint of this TapiPathComputationPathComputationService. + :rtype: TapiPathComputationRoutingConstraint + """ + return self._routing_constraint + + @routing_constraint.setter + def routing_constraint(self, routing_constraint: TapiPathComputationRoutingConstraint): + """Sets the routing_constraint of this TapiPathComputationPathComputationService. + + + :param routing_constraint: The routing_constraint of this TapiPathComputationPathComputationService. + :type routing_constraint: TapiPathComputationRoutingConstraint + """ + + self._routing_constraint = routing_constraint + + @property + def optimization_constraint(self) -> TapiPathComputationPathOptimizationConstraint: + """Gets the optimization_constraint of this TapiPathComputationPathComputationService. + + + :return: The optimization_constraint of this TapiPathComputationPathComputationService. + :rtype: TapiPathComputationPathOptimizationConstraint + """ + return self._optimization_constraint + + @optimization_constraint.setter + def optimization_constraint(self, optimization_constraint: TapiPathComputationPathOptimizationConstraint): + """Sets the optimization_constraint of this TapiPathComputationPathComputationService. + + + :param optimization_constraint: The optimization_constraint of this TapiPathComputationPathComputationService. + :type optimization_constraint: TapiPathComputationPathOptimizationConstraint + """ + + self._optimization_constraint = optimization_constraint diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_service_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_service_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..0f6457979d7c102c2c5e0e5003469eb4d06d407a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_computation_service_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_computation_service import TapiPathComputationPathComputationService # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathComputationServiceWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, path_comp_service: TapiPathComputationPathComputationService=None): # noqa: E501 + """TapiPathComputationPathComputationServiceWrapper - a model defined in Swagger + + :param path_comp_service: The path_comp_service of this TapiPathComputationPathComputationServiceWrapper. # noqa: E501 + :type path_comp_service: TapiPathComputationPathComputationService + """ + self.swagger_types = { + 'path_comp_service': TapiPathComputationPathComputationService + } + + self.attribute_map = { + 'path_comp_service': 'path-comp-service' + } + self._path_comp_service = path_comp_service + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathComputationServiceWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathComputationServiceWrapper of this TapiPathComputationPathComputationServiceWrapper. # noqa: E501 + :rtype: TapiPathComputationPathComputationServiceWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def path_comp_service(self) -> TapiPathComputationPathComputationService: + """Gets the path_comp_service of this TapiPathComputationPathComputationServiceWrapper. + + + :return: The path_comp_service of this TapiPathComputationPathComputationServiceWrapper. + :rtype: TapiPathComputationPathComputationService + """ + return self._path_comp_service + + @path_comp_service.setter + def path_comp_service(self, path_comp_service: TapiPathComputationPathComputationService): + """Sets the path_comp_service of this TapiPathComputationPathComputationServiceWrapper. + + + :param path_comp_service: The path_comp_service of this TapiPathComputationPathComputationServiceWrapper. + :type path_comp_service: TapiPathComputationPathComputationService + """ + + self._path_comp_service = path_comp_service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_objective_function.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_objective_function.py new file mode 100644 index 0000000000000000000000000000000000000000..4b6262b176ff0063a10996d08c332b325a7bf64d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_objective_function.py @@ -0,0 +1,225 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_directive_value import TapiCommonDirectiveValue # noqa: F401,E501 +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathObjectiveFunction(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, link_utilization: TapiCommonDirectiveValue=None, bandwidth_optimization: TapiCommonDirectiveValue=None, cost_optimization: TapiCommonDirectiveValue=None, resource_sharing: TapiCommonDirectiveValue=None, concurrent_paths: TapiCommonDirectiveValue=None): # noqa: E501 + """TapiPathComputationPathObjectiveFunction - a model defined in Swagger + + :param name: The name of this TapiPathComputationPathObjectiveFunction. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiPathComputationPathObjectiveFunction. # noqa: E501 + :type local_id: str + :param link_utilization: The link_utilization of this TapiPathComputationPathObjectiveFunction. # noqa: E501 + :type link_utilization: TapiCommonDirectiveValue + :param bandwidth_optimization: The bandwidth_optimization of this TapiPathComputationPathObjectiveFunction. # noqa: E501 + :type bandwidth_optimization: TapiCommonDirectiveValue + :param cost_optimization: The cost_optimization of this TapiPathComputationPathObjectiveFunction. # noqa: E501 + :type cost_optimization: TapiCommonDirectiveValue + :param resource_sharing: The resource_sharing of this TapiPathComputationPathObjectiveFunction. # noqa: E501 + :type resource_sharing: TapiCommonDirectiveValue + :param concurrent_paths: The concurrent_paths of this TapiPathComputationPathObjectiveFunction. # noqa: E501 + :type concurrent_paths: TapiCommonDirectiveValue + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str, + 'link_utilization': TapiCommonDirectiveValue, + 'bandwidth_optimization': TapiCommonDirectiveValue, + 'cost_optimization': TapiCommonDirectiveValue, + 'resource_sharing': TapiCommonDirectiveValue, + 'concurrent_paths': TapiCommonDirectiveValue + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id', + 'link_utilization': 'link-utilization', + 'bandwidth_optimization': 'bandwidth-optimization', + 'cost_optimization': 'cost-optimization', + 'resource_sharing': 'resource-sharing', + 'concurrent_paths': 'concurrent-paths' + } + self._name = name + self._local_id = local_id + self._link_utilization = link_utilization + self._bandwidth_optimization = bandwidth_optimization + self._cost_optimization = cost_optimization + self._resource_sharing = resource_sharing + self._concurrent_paths = concurrent_paths + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathObjectiveFunction': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathObjectiveFunction of this TapiPathComputationPathObjectiveFunction. # noqa: E501 + :rtype: TapiPathComputationPathObjectiveFunction + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiPathComputationPathObjectiveFunction. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiPathComputationPathObjectiveFunction. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiPathComputationPathObjectiveFunction. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiPathComputationPathObjectiveFunction. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiPathComputationPathObjectiveFunction. + + none # noqa: E501 + + :return: The local_id of this TapiPathComputationPathObjectiveFunction. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiPathComputationPathObjectiveFunction. + + none # noqa: E501 + + :param local_id: The local_id of this TapiPathComputationPathObjectiveFunction. + :type local_id: str + """ + + self._local_id = local_id + + @property + def link_utilization(self) -> TapiCommonDirectiveValue: + """Gets the link_utilization of this TapiPathComputationPathObjectiveFunction. + + + :return: The link_utilization of this TapiPathComputationPathObjectiveFunction. + :rtype: TapiCommonDirectiveValue + """ + return self._link_utilization + + @link_utilization.setter + def link_utilization(self, link_utilization: TapiCommonDirectiveValue): + """Sets the link_utilization of this TapiPathComputationPathObjectiveFunction. + + + :param link_utilization: The link_utilization of this TapiPathComputationPathObjectiveFunction. + :type link_utilization: TapiCommonDirectiveValue + """ + + self._link_utilization = link_utilization + + @property + def bandwidth_optimization(self) -> TapiCommonDirectiveValue: + """Gets the bandwidth_optimization of this TapiPathComputationPathObjectiveFunction. + + + :return: The bandwidth_optimization of this TapiPathComputationPathObjectiveFunction. + :rtype: TapiCommonDirectiveValue + """ + return self._bandwidth_optimization + + @bandwidth_optimization.setter + def bandwidth_optimization(self, bandwidth_optimization: TapiCommonDirectiveValue): + """Sets the bandwidth_optimization of this TapiPathComputationPathObjectiveFunction. + + + :param bandwidth_optimization: The bandwidth_optimization of this TapiPathComputationPathObjectiveFunction. + :type bandwidth_optimization: TapiCommonDirectiveValue + """ + + self._bandwidth_optimization = bandwidth_optimization + + @property + def cost_optimization(self) -> TapiCommonDirectiveValue: + """Gets the cost_optimization of this TapiPathComputationPathObjectiveFunction. + + + :return: The cost_optimization of this TapiPathComputationPathObjectiveFunction. + :rtype: TapiCommonDirectiveValue + """ + return self._cost_optimization + + @cost_optimization.setter + def cost_optimization(self, cost_optimization: TapiCommonDirectiveValue): + """Sets the cost_optimization of this TapiPathComputationPathObjectiveFunction. + + + :param cost_optimization: The cost_optimization of this TapiPathComputationPathObjectiveFunction. + :type cost_optimization: TapiCommonDirectiveValue + """ + + self._cost_optimization = cost_optimization + + @property + def resource_sharing(self) -> TapiCommonDirectiveValue: + """Gets the resource_sharing of this TapiPathComputationPathObjectiveFunction. + + + :return: The resource_sharing of this TapiPathComputationPathObjectiveFunction. + :rtype: TapiCommonDirectiveValue + """ + return self._resource_sharing + + @resource_sharing.setter + def resource_sharing(self, resource_sharing: TapiCommonDirectiveValue): + """Sets the resource_sharing of this TapiPathComputationPathObjectiveFunction. + + + :param resource_sharing: The resource_sharing of this TapiPathComputationPathObjectiveFunction. + :type resource_sharing: TapiCommonDirectiveValue + """ + + self._resource_sharing = resource_sharing + + @property + def concurrent_paths(self) -> TapiCommonDirectiveValue: + """Gets the concurrent_paths of this TapiPathComputationPathObjectiveFunction. + + + :return: The concurrent_paths of this TapiPathComputationPathObjectiveFunction. + :rtype: TapiCommonDirectiveValue + """ + return self._concurrent_paths + + @concurrent_paths.setter + def concurrent_paths(self, concurrent_paths: TapiCommonDirectiveValue): + """Sets the concurrent_paths of this TapiPathComputationPathObjectiveFunction. + + + :param concurrent_paths: The concurrent_paths of this TapiPathComputationPathObjectiveFunction. + :type concurrent_paths: TapiCommonDirectiveValue + """ + + self._concurrent_paths = concurrent_paths diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_objective_function_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_objective_function_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..789ba09af03b210a9ddd3486f25fcdb62bd12c08 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_objective_function_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_objective_function import TapiPathComputationPathObjectiveFunction # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathObjectiveFunctionWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, objective_function: TapiPathComputationPathObjectiveFunction=None): # noqa: E501 + """TapiPathComputationPathObjectiveFunctionWrapper - a model defined in Swagger + + :param objective_function: The objective_function of this TapiPathComputationPathObjectiveFunctionWrapper. # noqa: E501 + :type objective_function: TapiPathComputationPathObjectiveFunction + """ + self.swagger_types = { + 'objective_function': TapiPathComputationPathObjectiveFunction + } + + self.attribute_map = { + 'objective_function': 'objective-function' + } + self._objective_function = objective_function + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathObjectiveFunctionWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathObjectiveFunctionWrapper of this TapiPathComputationPathObjectiveFunctionWrapper. # noqa: E501 + :rtype: TapiPathComputationPathObjectiveFunctionWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def objective_function(self) -> TapiPathComputationPathObjectiveFunction: + """Gets the objective_function of this TapiPathComputationPathObjectiveFunctionWrapper. + + + :return: The objective_function of this TapiPathComputationPathObjectiveFunctionWrapper. + :rtype: TapiPathComputationPathObjectiveFunction + """ + return self._objective_function + + @objective_function.setter + def objective_function(self, objective_function: TapiPathComputationPathObjectiveFunction): + """Sets the objective_function of this TapiPathComputationPathObjectiveFunctionWrapper. + + + :param objective_function: The objective_function of this TapiPathComputationPathObjectiveFunctionWrapper. + :type objective_function: TapiPathComputationPathObjectiveFunction + """ + + self._objective_function = objective_function diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_optimization_constraint.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_optimization_constraint.py new file mode 100644 index 0000000000000000000000000000000000000000..4de4ec31cc47493696f8abaf7dd86359336c6b4a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_optimization_constraint.py @@ -0,0 +1,121 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_directive_value import TapiCommonDirectiveValue # noqa: F401,E501 +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathOptimizationConstraint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, traffic_interruption: TapiCommonDirectiveValue=None): # noqa: E501 + """TapiPathComputationPathOptimizationConstraint - a model defined in Swagger + + :param name: The name of this TapiPathComputationPathOptimizationConstraint. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiPathComputationPathOptimizationConstraint. # noqa: E501 + :type local_id: str + :param traffic_interruption: The traffic_interruption of this TapiPathComputationPathOptimizationConstraint. # noqa: E501 + :type traffic_interruption: TapiCommonDirectiveValue + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str, + 'traffic_interruption': TapiCommonDirectiveValue + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id', + 'traffic_interruption': 'traffic-interruption' + } + self._name = name + self._local_id = local_id + self._traffic_interruption = traffic_interruption + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathOptimizationConstraint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathOptimizationConstraint of this TapiPathComputationPathOptimizationConstraint. # noqa: E501 + :rtype: TapiPathComputationPathOptimizationConstraint + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiPathComputationPathOptimizationConstraint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiPathComputationPathOptimizationConstraint. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiPathComputationPathOptimizationConstraint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiPathComputationPathOptimizationConstraint. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiPathComputationPathOptimizationConstraint. + + none # noqa: E501 + + :return: The local_id of this TapiPathComputationPathOptimizationConstraint. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiPathComputationPathOptimizationConstraint. + + none # noqa: E501 + + :param local_id: The local_id of this TapiPathComputationPathOptimizationConstraint. + :type local_id: str + """ + + self._local_id = local_id + + @property + def traffic_interruption(self) -> TapiCommonDirectiveValue: + """Gets the traffic_interruption of this TapiPathComputationPathOptimizationConstraint. + + + :return: The traffic_interruption of this TapiPathComputationPathOptimizationConstraint. + :rtype: TapiCommonDirectiveValue + """ + return self._traffic_interruption + + @traffic_interruption.setter + def traffic_interruption(self, traffic_interruption: TapiCommonDirectiveValue): + """Sets the traffic_interruption of this TapiPathComputationPathOptimizationConstraint. + + + :param traffic_interruption: The traffic_interruption of this TapiPathComputationPathOptimizationConstraint. + :type traffic_interruption: TapiCommonDirectiveValue + """ + + self._traffic_interruption = traffic_interruption diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_optimization_constraint_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_optimization_constraint_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..006f1b27bdd42ef3f82f0a96dd2a5d6fd522dd5d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_optimization_constraint_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_optimization_constraint import TapiPathComputationPathOptimizationConstraint # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathOptimizationConstraintWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, optimization_constraint: TapiPathComputationPathOptimizationConstraint=None): # noqa: E501 + """TapiPathComputationPathOptimizationConstraintWrapper - a model defined in Swagger + + :param optimization_constraint: The optimization_constraint of this TapiPathComputationPathOptimizationConstraintWrapper. # noqa: E501 + :type optimization_constraint: TapiPathComputationPathOptimizationConstraint + """ + self.swagger_types = { + 'optimization_constraint': TapiPathComputationPathOptimizationConstraint + } + + self.attribute_map = { + 'optimization_constraint': 'optimization-constraint' + } + self._optimization_constraint = optimization_constraint + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathOptimizationConstraintWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathOptimizationConstraintWrapper of this TapiPathComputationPathOptimizationConstraintWrapper. # noqa: E501 + :rtype: TapiPathComputationPathOptimizationConstraintWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def optimization_constraint(self) -> TapiPathComputationPathOptimizationConstraint: + """Gets the optimization_constraint of this TapiPathComputationPathOptimizationConstraintWrapper. + + + :return: The optimization_constraint of this TapiPathComputationPathOptimizationConstraintWrapper. + :rtype: TapiPathComputationPathOptimizationConstraint + """ + return self._optimization_constraint + + @optimization_constraint.setter + def optimization_constraint(self, optimization_constraint: TapiPathComputationPathOptimizationConstraint): + """Sets the optimization_constraint of this TapiPathComputationPathOptimizationConstraintWrapper. + + + :param optimization_constraint: The optimization_constraint of this TapiPathComputationPathOptimizationConstraintWrapper. + :type optimization_constraint: TapiPathComputationPathOptimizationConstraint + """ + + self._optimization_constraint = optimization_constraint diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..4ce08ac953777c972d033cad916ee3f61eed8001 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_ref.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiPathComputationPathRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, path_uuid: str=None): # noqa: E501 + """TapiPathComputationPathRef - a model defined in Swagger + + :param path_uuid: The path_uuid of this TapiPathComputationPathRef. # noqa: E501 + :type path_uuid: str + """ + self.swagger_types = { + 'path_uuid': str + } + + self.attribute_map = { + 'path_uuid': 'path-uuid' + } + self._path_uuid = path_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathRef of this TapiPathComputationPathRef. # noqa: E501 + :rtype: TapiPathComputationPathRef + """ + return util.deserialize_model(dikt, cls) + + @property + def path_uuid(self) -> str: + """Gets the path_uuid of this TapiPathComputationPathRef. + + none # noqa: E501 + + :return: The path_uuid of this TapiPathComputationPathRef. + :rtype: str + """ + return self._path_uuid + + @path_uuid.setter + def path_uuid(self, path_uuid: str): + """Sets the path_uuid of this TapiPathComputationPathRef. + + none # noqa: E501 + + :param path_uuid: The path_uuid of this TapiPathComputationPathRef. + :type path_uuid: str + """ + + self._path_uuid = path_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..95abec7140eef27ede5e523a6d9db298a6f5952d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_ref import TapiPathComputationPathRef # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, path: TapiPathComputationPathRef=None): # noqa: E501 + """TapiPathComputationPathRefWrapper - a model defined in Swagger + + :param path: The path of this TapiPathComputationPathRefWrapper. # noqa: E501 + :type path: TapiPathComputationPathRef + """ + self.swagger_types = { + 'path': TapiPathComputationPathRef + } + + self.attribute_map = { + 'path': 'path' + } + self._path = path + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathRefWrapper of this TapiPathComputationPathRefWrapper. # noqa: E501 + :rtype: TapiPathComputationPathRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def path(self) -> TapiPathComputationPathRef: + """Gets the path of this TapiPathComputationPathRefWrapper. + + + :return: The path of this TapiPathComputationPathRefWrapper. + :rtype: TapiPathComputationPathRef + """ + return self._path + + @path.setter + def path(self, path: TapiPathComputationPathRef): + """Sets the path of this TapiPathComputationPathRefWrapper. + + + :param path: The path of this TapiPathComputationPathRefWrapper. + :type path: TapiPathComputationPathRef + """ + + self._path = path diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_service_end_point.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_service_end_point.py new file mode 100644 index 0000000000000000000000000000000000000000..7db4a9374c1b8f1b9648613e43cc47edbb0c0c41 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_service_end_point.py @@ -0,0 +1,257 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_port_direction import TapiCommonPortDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_port_role import TapiCommonPortRole # noqa: F401,E501 +from tapi_server.models.tapi_common_service_interface_point_ref import TapiCommonServiceInterfacePointRef # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathServiceEndPoint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, role: TapiCommonPortRole=None, service_interface_point: TapiCommonServiceInterfacePointRef=None, layer_protocol_name: TapiCommonLayerProtocolName=None, layer_protocol_qualifier: str=None, direction: TapiCommonPortDirection=None, capacity: TapiCommonCapacity=None): # noqa: E501 + """TapiPathComputationPathServiceEndPoint - a model defined in Swagger + + :param name: The name of this TapiPathComputationPathServiceEndPoint. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiPathComputationPathServiceEndPoint. # noqa: E501 + :type local_id: str + :param role: The role of this TapiPathComputationPathServiceEndPoint. # noqa: E501 + :type role: TapiCommonPortRole + :param service_interface_point: The service_interface_point of this TapiPathComputationPathServiceEndPoint. # noqa: E501 + :type service_interface_point: TapiCommonServiceInterfacePointRef + :param layer_protocol_name: The layer_protocol_name of this TapiPathComputationPathServiceEndPoint. # noqa: E501 + :type layer_protocol_name: TapiCommonLayerProtocolName + :param layer_protocol_qualifier: The layer_protocol_qualifier of this TapiPathComputationPathServiceEndPoint. # noqa: E501 + :type layer_protocol_qualifier: str + :param direction: The direction of this TapiPathComputationPathServiceEndPoint. # noqa: E501 + :type direction: TapiCommonPortDirection + :param capacity: The capacity of this TapiPathComputationPathServiceEndPoint. # noqa: E501 + :type capacity: TapiCommonCapacity + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str, + 'role': TapiCommonPortRole, + 'service_interface_point': TapiCommonServiceInterfacePointRef, + 'layer_protocol_name': TapiCommonLayerProtocolName, + 'layer_protocol_qualifier': str, + 'direction': TapiCommonPortDirection, + 'capacity': TapiCommonCapacity + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id', + 'role': 'role', + 'service_interface_point': 'service-interface-point', + 'layer_protocol_name': 'layer-protocol-name', + 'layer_protocol_qualifier': 'layer-protocol-qualifier', + 'direction': 'direction', + 'capacity': 'capacity' + } + self._name = name + self._local_id = local_id + self._role = role + self._service_interface_point = service_interface_point + self._layer_protocol_name = layer_protocol_name + self._layer_protocol_qualifier = layer_protocol_qualifier + self._direction = direction + self._capacity = capacity + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathServiceEndPoint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathServiceEndPoint of this TapiPathComputationPathServiceEndPoint. # noqa: E501 + :rtype: TapiPathComputationPathServiceEndPoint + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiPathComputationPathServiceEndPoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiPathComputationPathServiceEndPoint. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiPathComputationPathServiceEndPoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiPathComputationPathServiceEndPoint. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiPathComputationPathServiceEndPoint. + + none # noqa: E501 + + :return: The local_id of this TapiPathComputationPathServiceEndPoint. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiPathComputationPathServiceEndPoint. + + none # noqa: E501 + + :param local_id: The local_id of this TapiPathComputationPathServiceEndPoint. + :type local_id: str + """ + + self._local_id = local_id + + @property + def role(self) -> TapiCommonPortRole: + """Gets the role of this TapiPathComputationPathServiceEndPoint. + + + :return: The role of this TapiPathComputationPathServiceEndPoint. + :rtype: TapiCommonPortRole + """ + return self._role + + @role.setter + def role(self, role: TapiCommonPortRole): + """Sets the role of this TapiPathComputationPathServiceEndPoint. + + + :param role: The role of this TapiPathComputationPathServiceEndPoint. + :type role: TapiCommonPortRole + """ + + self._role = role + + @property + def service_interface_point(self) -> TapiCommonServiceInterfacePointRef: + """Gets the service_interface_point of this TapiPathComputationPathServiceEndPoint. + + + :return: The service_interface_point of this TapiPathComputationPathServiceEndPoint. + :rtype: TapiCommonServiceInterfacePointRef + """ + return self._service_interface_point + + @service_interface_point.setter + def service_interface_point(self, service_interface_point: TapiCommonServiceInterfacePointRef): + """Sets the service_interface_point of this TapiPathComputationPathServiceEndPoint. + + + :param service_interface_point: The service_interface_point of this TapiPathComputationPathServiceEndPoint. + :type service_interface_point: TapiCommonServiceInterfacePointRef + """ + + self._service_interface_point = service_interface_point + + @property + def layer_protocol_name(self) -> TapiCommonLayerProtocolName: + """Gets the layer_protocol_name of this TapiPathComputationPathServiceEndPoint. + + + :return: The layer_protocol_name of this TapiPathComputationPathServiceEndPoint. + :rtype: TapiCommonLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TapiCommonLayerProtocolName): + """Sets the layer_protocol_name of this TapiPathComputationPathServiceEndPoint. + + + :param layer_protocol_name: The layer_protocol_name of this TapiPathComputationPathServiceEndPoint. + :type layer_protocol_name: TapiCommonLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def layer_protocol_qualifier(self) -> str: + """Gets the layer_protocol_qualifier of this TapiPathComputationPathServiceEndPoint. + + none # noqa: E501 + + :return: The layer_protocol_qualifier of this TapiPathComputationPathServiceEndPoint. + :rtype: str + """ + return self._layer_protocol_qualifier + + @layer_protocol_qualifier.setter + def layer_protocol_qualifier(self, layer_protocol_qualifier: str): + """Sets the layer_protocol_qualifier of this TapiPathComputationPathServiceEndPoint. + + none # noqa: E501 + + :param layer_protocol_qualifier: The layer_protocol_qualifier of this TapiPathComputationPathServiceEndPoint. + :type layer_protocol_qualifier: str + """ + + self._layer_protocol_qualifier = layer_protocol_qualifier + + @property + def direction(self) -> TapiCommonPortDirection: + """Gets the direction of this TapiPathComputationPathServiceEndPoint. + + + :return: The direction of this TapiPathComputationPathServiceEndPoint. + :rtype: TapiCommonPortDirection + """ + return self._direction + + @direction.setter + def direction(self, direction: TapiCommonPortDirection): + """Sets the direction of this TapiPathComputationPathServiceEndPoint. + + + :param direction: The direction of this TapiPathComputationPathServiceEndPoint. + :type direction: TapiCommonPortDirection + """ + + self._direction = direction + + @property + def capacity(self) -> TapiCommonCapacity: + """Gets the capacity of this TapiPathComputationPathServiceEndPoint. + + + :return: The capacity of this TapiPathComputationPathServiceEndPoint. + :rtype: TapiCommonCapacity + """ + return self._capacity + + @capacity.setter + def capacity(self, capacity: TapiCommonCapacity): + """Sets the capacity of this TapiPathComputationPathServiceEndPoint. + + + :param capacity: The capacity of this TapiPathComputationPathServiceEndPoint. + :type capacity: TapiCommonCapacity + """ + + self._capacity = capacity diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_service_end_point_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_service_end_point_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..5a342c91362908b00bef8bd32cd07fa18cc14612 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_service_end_point_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path_service_end_point import TapiPathComputationPathServiceEndPoint # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathServiceEndPointWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, end_point: TapiPathComputationPathServiceEndPoint=None): # noqa: E501 + """TapiPathComputationPathServiceEndPointWrapper - a model defined in Swagger + + :param end_point: The end_point of this TapiPathComputationPathServiceEndPointWrapper. # noqa: E501 + :type end_point: TapiPathComputationPathServiceEndPoint + """ + self.swagger_types = { + 'end_point': TapiPathComputationPathServiceEndPoint + } + + self.attribute_map = { + 'end_point': 'end-point' + } + self._end_point = end_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathServiceEndPointWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathServiceEndPointWrapper of this TapiPathComputationPathServiceEndPointWrapper. # noqa: E501 + :rtype: TapiPathComputationPathServiceEndPointWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def end_point(self) -> TapiPathComputationPathServiceEndPoint: + """Gets the end_point of this TapiPathComputationPathServiceEndPointWrapper. + + + :return: The end_point of this TapiPathComputationPathServiceEndPointWrapper. + :rtype: TapiPathComputationPathServiceEndPoint + """ + return self._end_point + + @end_point.setter + def end_point(self, end_point: TapiPathComputationPathServiceEndPoint): + """Sets the end_point of this TapiPathComputationPathServiceEndPointWrapper. + + + :param end_point: The end_point of this TapiPathComputationPathServiceEndPointWrapper. + :type end_point: TapiPathComputationPathServiceEndPoint + """ + + self._end_point = end_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..8efa8661aaabb60a857c63e480138bed5b61a50f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_path_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_path import TapiPathComputationPath # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationPathWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, path: TapiPathComputationPath=None): # noqa: E501 + """TapiPathComputationPathWrapper - a model defined in Swagger + + :param path: The path of this TapiPathComputationPathWrapper. # noqa: E501 + :type path: TapiPathComputationPath + """ + self.swagger_types = { + 'path': TapiPathComputationPath + } + + self.attribute_map = { + 'path': 'path' + } + self._path = path + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationPathWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.PathWrapper of this TapiPathComputationPathWrapper. # noqa: E501 + :rtype: TapiPathComputationPathWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def path(self) -> TapiPathComputationPath: + """Gets the path of this TapiPathComputationPathWrapper. + + + :return: The path of this TapiPathComputationPathWrapper. + :rtype: TapiPathComputationPath + """ + return self._path + + @path.setter + def path(self, path: TapiPathComputationPath): + """Sets the path of this TapiPathComputationPathWrapper. + + + :param path: The path of this TapiPathComputationPathWrapper. + :type path: TapiPathComputationPath + """ + + self._path = path diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_route_objective_function.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_route_objective_function.py new file mode 100644 index 0000000000000000000000000000000000000000..8822be5acd8cbcbfdacb7bd0cef7c8aea23dabdd --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_route_objective_function.py @@ -0,0 +1,47 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiPathComputationRouteObjectiveFunction(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + MIN_WORK_ROUTE_HOP = "MIN_WORK_ROUTE_HOP" + MIN_WORK_ROUTE_COST = "MIN_WORK_ROUTE_COST" + MIN_WORK_ROUTE_LATENCY = "MIN_WORK_ROUTE_LATENCY" + MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP = "MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP" + MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST = "MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST" + MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY = "MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY" + LOAD_BALANCE_MAX_UNUSED_CAPACITY = "LOAD_BALANCE_MAX_UNUSED_CAPACITY" + def __init__(self): # noqa: E501 + """TapiPathComputationRouteObjectiveFunction - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationRouteObjectiveFunction': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.RouteObjectiveFunction of this TapiPathComputationRouteObjectiveFunction. # noqa: E501 + :rtype: TapiPathComputationRouteObjectiveFunction + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_routing_constraint.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_routing_constraint.py new file mode 100644 index 0000000000000000000000000000000000000000..ac423f8899419eb94b09c5d92183ea52b8e125ea --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_routing_constraint.py @@ -0,0 +1,311 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_forwarding_direction import TapiCommonForwardingDirection # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_diversity_policy import TapiPathComputationDiversityPolicy # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_route_objective_function import TapiPathComputationRouteObjectiveFunction # noqa: F401,E501 +from tapi_server.models.tapi_path_computation_value_or_priority import TapiPathComputationValueOrPriority # noqa: F401,E501 +from tapi_server.models.tapi_topology_cost_characteristic import TapiTopologyCostCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_risk_characteristic import TapiTopologyRiskCharacteristic # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationRoutingConstraint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, is_exclusive: bool=True, max_allowed_cost: TapiPathComputationValueOrPriority=None, diversity_policy: TapiPathComputationDiversityPolicy=None, route_objective_function: TapiPathComputationRouteObjectiveFunction=None, cost_characteristic: List[TapiTopologyCostCharacteristic]=None, max_allowed_hops: TapiPathComputationValueOrPriority=None, max_allowed_delay: TapiPathComputationValueOrPriority=None, latency_characteristic: List[TapiTopologyLatencyCharacteristic]=None, risk_diversity_characteristic: List[TapiTopologyRiskCharacteristic]=None, route_direction: TapiCommonForwardingDirection=None): # noqa: E501 + """TapiPathComputationRoutingConstraint - a model defined in Swagger + + :param is_exclusive: The is_exclusive of this TapiPathComputationRoutingConstraint. # noqa: E501 + :type is_exclusive: bool + :param max_allowed_cost: The max_allowed_cost of this TapiPathComputationRoutingConstraint. # noqa: E501 + :type max_allowed_cost: TapiPathComputationValueOrPriority + :param diversity_policy: The diversity_policy of this TapiPathComputationRoutingConstraint. # noqa: E501 + :type diversity_policy: TapiPathComputationDiversityPolicy + :param route_objective_function: The route_objective_function of this TapiPathComputationRoutingConstraint. # noqa: E501 + :type route_objective_function: TapiPathComputationRouteObjectiveFunction + :param cost_characteristic: The cost_characteristic of this TapiPathComputationRoutingConstraint. # noqa: E501 + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + :param max_allowed_hops: The max_allowed_hops of this TapiPathComputationRoutingConstraint. # noqa: E501 + :type max_allowed_hops: TapiPathComputationValueOrPriority + :param max_allowed_delay: The max_allowed_delay of this TapiPathComputationRoutingConstraint. # noqa: E501 + :type max_allowed_delay: TapiPathComputationValueOrPriority + :param latency_characteristic: The latency_characteristic of this TapiPathComputationRoutingConstraint. # noqa: E501 + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + :param risk_diversity_characteristic: The risk_diversity_characteristic of this TapiPathComputationRoutingConstraint. # noqa: E501 + :type risk_diversity_characteristic: List[TapiTopologyRiskCharacteristic] + :param route_direction: The route_direction of this TapiPathComputationRoutingConstraint. # noqa: E501 + :type route_direction: TapiCommonForwardingDirection + """ + self.swagger_types = { + 'is_exclusive': bool, + 'max_allowed_cost': TapiPathComputationValueOrPriority, + 'diversity_policy': TapiPathComputationDiversityPolicy, + 'route_objective_function': TapiPathComputationRouteObjectiveFunction, + 'cost_characteristic': List[TapiTopologyCostCharacteristic], + 'max_allowed_hops': TapiPathComputationValueOrPriority, + 'max_allowed_delay': TapiPathComputationValueOrPriority, + 'latency_characteristic': List[TapiTopologyLatencyCharacteristic], + 'risk_diversity_characteristic': List[TapiTopologyRiskCharacteristic], + 'route_direction': TapiCommonForwardingDirection + } + + self.attribute_map = { + 'is_exclusive': 'is-exclusive', + 'max_allowed_cost': 'max-allowed-cost', + 'diversity_policy': 'diversity-policy', + 'route_objective_function': 'route-objective-function', + 'cost_characteristic': 'cost-characteristic', + 'max_allowed_hops': 'max-allowed-hops', + 'max_allowed_delay': 'max-allowed-delay', + 'latency_characteristic': 'latency-characteristic', + 'risk_diversity_characteristic': 'risk-diversity-characteristic', + 'route_direction': 'route-direction' + } + self._is_exclusive = is_exclusive + self._max_allowed_cost = max_allowed_cost + self._diversity_policy = diversity_policy + self._route_objective_function = route_objective_function + self._cost_characteristic = cost_characteristic + self._max_allowed_hops = max_allowed_hops + self._max_allowed_delay = max_allowed_delay + self._latency_characteristic = latency_characteristic + self._risk_diversity_characteristic = risk_diversity_characteristic + self._route_direction = route_direction + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationRoutingConstraint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.RoutingConstraint of this TapiPathComputationRoutingConstraint. # noqa: E501 + :rtype: TapiPathComputationRoutingConstraint + """ + return util.deserialize_model(dikt, cls) + + @property + def is_exclusive(self) -> bool: + """Gets the is_exclusive of this TapiPathComputationRoutingConstraint. + + To distinguish if the resources are to be exclusive to the service # noqa: E501 + + :return: The is_exclusive of this TapiPathComputationRoutingConstraint. + :rtype: bool + """ + return self._is_exclusive + + @is_exclusive.setter + def is_exclusive(self, is_exclusive: bool): + """Sets the is_exclusive of this TapiPathComputationRoutingConstraint. + + To distinguish if the resources are to be exclusive to the service # noqa: E501 + + :param is_exclusive: The is_exclusive of this TapiPathComputationRoutingConstraint. + :type is_exclusive: bool + """ + + self._is_exclusive = is_exclusive + + @property + def max_allowed_cost(self) -> TapiPathComputationValueOrPriority: + """Gets the max_allowed_cost of this TapiPathComputationRoutingConstraint. + + + :return: The max_allowed_cost of this TapiPathComputationRoutingConstraint. + :rtype: TapiPathComputationValueOrPriority + """ + return self._max_allowed_cost + + @max_allowed_cost.setter + def max_allowed_cost(self, max_allowed_cost: TapiPathComputationValueOrPriority): + """Sets the max_allowed_cost of this TapiPathComputationRoutingConstraint. + + + :param max_allowed_cost: The max_allowed_cost of this TapiPathComputationRoutingConstraint. + :type max_allowed_cost: TapiPathComputationValueOrPriority + """ + + self._max_allowed_cost = max_allowed_cost + + @property + def diversity_policy(self) -> TapiPathComputationDiversityPolicy: + """Gets the diversity_policy of this TapiPathComputationRoutingConstraint. + + + :return: The diversity_policy of this TapiPathComputationRoutingConstraint. + :rtype: TapiPathComputationDiversityPolicy + """ + return self._diversity_policy + + @diversity_policy.setter + def diversity_policy(self, diversity_policy: TapiPathComputationDiversityPolicy): + """Sets the diversity_policy of this TapiPathComputationRoutingConstraint. + + + :param diversity_policy: The diversity_policy of this TapiPathComputationRoutingConstraint. + :type diversity_policy: TapiPathComputationDiversityPolicy + """ + + self._diversity_policy = diversity_policy + + @property + def route_objective_function(self) -> TapiPathComputationRouteObjectiveFunction: + """Gets the route_objective_function of this TapiPathComputationRoutingConstraint. + + + :return: The route_objective_function of this TapiPathComputationRoutingConstraint. + :rtype: TapiPathComputationRouteObjectiveFunction + """ + return self._route_objective_function + + @route_objective_function.setter + def route_objective_function(self, route_objective_function: TapiPathComputationRouteObjectiveFunction): + """Sets the route_objective_function of this TapiPathComputationRoutingConstraint. + + + :param route_objective_function: The route_objective_function of this TapiPathComputationRoutingConstraint. + :type route_objective_function: TapiPathComputationRouteObjectiveFunction + """ + + self._route_objective_function = route_objective_function + + @property + def cost_characteristic(self) -> List[TapiTopologyCostCharacteristic]: + """Gets the cost_characteristic of this TapiPathComputationRoutingConstraint. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :return: The cost_characteristic of this TapiPathComputationRoutingConstraint. + :rtype: List[TapiTopologyCostCharacteristic] + """ + return self._cost_characteristic + + @cost_characteristic.setter + def cost_characteristic(self, cost_characteristic: List[TapiTopologyCostCharacteristic]): + """Sets the cost_characteristic of this TapiPathComputationRoutingConstraint. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param cost_characteristic: The cost_characteristic of this TapiPathComputationRoutingConstraint. + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + """ + + self._cost_characteristic = cost_characteristic + + @property + def max_allowed_hops(self) -> TapiPathComputationValueOrPriority: + """Gets the max_allowed_hops of this TapiPathComputationRoutingConstraint. + + + :return: The max_allowed_hops of this TapiPathComputationRoutingConstraint. + :rtype: TapiPathComputationValueOrPriority + """ + return self._max_allowed_hops + + @max_allowed_hops.setter + def max_allowed_hops(self, max_allowed_hops: TapiPathComputationValueOrPriority): + """Sets the max_allowed_hops of this TapiPathComputationRoutingConstraint. + + + :param max_allowed_hops: The max_allowed_hops of this TapiPathComputationRoutingConstraint. + :type max_allowed_hops: TapiPathComputationValueOrPriority + """ + + self._max_allowed_hops = max_allowed_hops + + @property + def max_allowed_delay(self) -> TapiPathComputationValueOrPriority: + """Gets the max_allowed_delay of this TapiPathComputationRoutingConstraint. + + + :return: The max_allowed_delay of this TapiPathComputationRoutingConstraint. + :rtype: TapiPathComputationValueOrPriority + """ + return self._max_allowed_delay + + @max_allowed_delay.setter + def max_allowed_delay(self, max_allowed_delay: TapiPathComputationValueOrPriority): + """Sets the max_allowed_delay of this TapiPathComputationRoutingConstraint. + + + :param max_allowed_delay: The max_allowed_delay of this TapiPathComputationRoutingConstraint. + :type max_allowed_delay: TapiPathComputationValueOrPriority + """ + + self._max_allowed_delay = max_allowed_delay + + @property + def latency_characteristic(self) -> List[TapiTopologyLatencyCharacteristic]: + """Gets the latency_characteristic of this TapiPathComputationRoutingConstraint. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :return: The latency_characteristic of this TapiPathComputationRoutingConstraint. + :rtype: List[TapiTopologyLatencyCharacteristic] + """ + return self._latency_characteristic + + @latency_characteristic.setter + def latency_characteristic(self, latency_characteristic: List[TapiTopologyLatencyCharacteristic]): + """Sets the latency_characteristic of this TapiPathComputationRoutingConstraint. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param latency_characteristic: The latency_characteristic of this TapiPathComputationRoutingConstraint. + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + """ + + self._latency_characteristic = latency_characteristic + + @property + def risk_diversity_characteristic(self) -> List[TapiTopologyRiskCharacteristic]: + """Gets the risk_diversity_characteristic of this TapiPathComputationRoutingConstraint. + + none # noqa: E501 + + :return: The risk_diversity_characteristic of this TapiPathComputationRoutingConstraint. + :rtype: List[TapiTopologyRiskCharacteristic] + """ + return self._risk_diversity_characteristic + + @risk_diversity_characteristic.setter + def risk_diversity_characteristic(self, risk_diversity_characteristic: List[TapiTopologyRiskCharacteristic]): + """Sets the risk_diversity_characteristic of this TapiPathComputationRoutingConstraint. + + none # noqa: E501 + + :param risk_diversity_characteristic: The risk_diversity_characteristic of this TapiPathComputationRoutingConstraint. + :type risk_diversity_characteristic: List[TapiTopologyRiskCharacteristic] + """ + + self._risk_diversity_characteristic = risk_diversity_characteristic + + @property + def route_direction(self) -> TapiCommonForwardingDirection: + """Gets the route_direction of this TapiPathComputationRoutingConstraint. + + + :return: The route_direction of this TapiPathComputationRoutingConstraint. + :rtype: TapiCommonForwardingDirection + """ + return self._route_direction + + @route_direction.setter + def route_direction(self, route_direction: TapiCommonForwardingDirection): + """Sets the route_direction of this TapiPathComputationRoutingConstraint. + + + :param route_direction: The route_direction of this TapiPathComputationRoutingConstraint. + :type route_direction: TapiCommonForwardingDirection + """ + + self._route_direction = route_direction diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_routing_constraint_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_routing_constraint_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..83d0b2ea73efe78e6490787bd3644149363338cc --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_routing_constraint_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_routing_constraint import TapiPathComputationRoutingConstraint # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationRoutingConstraintWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, routing_constraint: TapiPathComputationRoutingConstraint=None): # noqa: E501 + """TapiPathComputationRoutingConstraintWrapper - a model defined in Swagger + + :param routing_constraint: The routing_constraint of this TapiPathComputationRoutingConstraintWrapper. # noqa: E501 + :type routing_constraint: TapiPathComputationRoutingConstraint + """ + self.swagger_types = { + 'routing_constraint': TapiPathComputationRoutingConstraint + } + + self.attribute_map = { + 'routing_constraint': 'routing-constraint' + } + self._routing_constraint = routing_constraint + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationRoutingConstraintWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.RoutingConstraintWrapper of this TapiPathComputationRoutingConstraintWrapper. # noqa: E501 + :rtype: TapiPathComputationRoutingConstraintWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def routing_constraint(self) -> TapiPathComputationRoutingConstraint: + """Gets the routing_constraint of this TapiPathComputationRoutingConstraintWrapper. + + + :return: The routing_constraint of this TapiPathComputationRoutingConstraintWrapper. + :rtype: TapiPathComputationRoutingConstraint + """ + return self._routing_constraint + + @routing_constraint.setter + def routing_constraint(self, routing_constraint: TapiPathComputationRoutingConstraint): + """Sets the routing_constraint of this TapiPathComputationRoutingConstraintWrapper. + + + :param routing_constraint: The routing_constraint of this TapiPathComputationRoutingConstraintWrapper. + :type routing_constraint: TapiPathComputationRoutingConstraint + """ + + self._routing_constraint = routing_constraint diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_topology_constraint.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_topology_constraint.py new file mode 100644 index 0000000000000000000000000000000000000000..b55c2a0d51fb74f7023aa8d03223d45804d9e2de --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_topology_constraint.py @@ -0,0 +1,289 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationTopologyConstraint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, include_node: List[str]=None, exclude_link: List[str]=None, avoid_topology: List[str]=None, exclude_path: List[str]=None, include_link: List[str]=None, preferred_transport_layer: List[TapiCommonLayerProtocolName]=None, exclude_node: List[str]=None, include_topology: List[str]=None, include_path: List[str]=None): # noqa: E501 + """TapiPathComputationTopologyConstraint - a model defined in Swagger + + :param include_node: The include_node of this TapiPathComputationTopologyConstraint. # noqa: E501 + :type include_node: List[str] + :param exclude_link: The exclude_link of this TapiPathComputationTopologyConstraint. # noqa: E501 + :type exclude_link: List[str] + :param avoid_topology: The avoid_topology of this TapiPathComputationTopologyConstraint. # noqa: E501 + :type avoid_topology: List[str] + :param exclude_path: The exclude_path of this TapiPathComputationTopologyConstraint. # noqa: E501 + :type exclude_path: List[str] + :param include_link: The include_link of this TapiPathComputationTopologyConstraint. # noqa: E501 + :type include_link: List[str] + :param preferred_transport_layer: The preferred_transport_layer of this TapiPathComputationTopologyConstraint. # noqa: E501 + :type preferred_transport_layer: List[TapiCommonLayerProtocolName] + :param exclude_node: The exclude_node of this TapiPathComputationTopologyConstraint. # noqa: E501 + :type exclude_node: List[str] + :param include_topology: The include_topology of this TapiPathComputationTopologyConstraint. # noqa: E501 + :type include_topology: List[str] + :param include_path: The include_path of this TapiPathComputationTopologyConstraint. # noqa: E501 + :type include_path: List[str] + """ + self.swagger_types = { + 'include_node': List[str], + 'exclude_link': List[str], + 'avoid_topology': List[str], + 'exclude_path': List[str], + 'include_link': List[str], + 'preferred_transport_layer': List[TapiCommonLayerProtocolName], + 'exclude_node': List[str], + 'include_topology': List[str], + 'include_path': List[str] + } + + self.attribute_map = { + 'include_node': 'include-node', + 'exclude_link': 'exclude-link', + 'avoid_topology': 'avoid-topology', + 'exclude_path': 'exclude-path', + 'include_link': 'include-link', + 'preferred_transport_layer': 'preferred-transport-layer', + 'exclude_node': 'exclude-node', + 'include_topology': 'include-topology', + 'include_path': 'include-path' + } + self._include_node = include_node + self._exclude_link = exclude_link + self._avoid_topology = avoid_topology + self._exclude_path = exclude_path + self._include_link = include_link + self._preferred_transport_layer = preferred_transport_layer + self._exclude_node = exclude_node + self._include_topology = include_topology + self._include_path = include_path + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationTopologyConstraint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.TopologyConstraint of this TapiPathComputationTopologyConstraint. # noqa: E501 + :rtype: TapiPathComputationTopologyConstraint + """ + return util.deserialize_model(dikt, cls) + + @property + def include_node(self) -> List[str]: + """Gets the include_node of this TapiPathComputationTopologyConstraint. + + This is a loose constraint - that is it is unordered and could be a partial list # noqa: E501 + + :return: The include_node of this TapiPathComputationTopologyConstraint. + :rtype: List[str] + """ + return self._include_node + + @include_node.setter + def include_node(self, include_node: List[str]): + """Sets the include_node of this TapiPathComputationTopologyConstraint. + + This is a loose constraint - that is it is unordered and could be a partial list # noqa: E501 + + :param include_node: The include_node of this TapiPathComputationTopologyConstraint. + :type include_node: List[str] + """ + + self._include_node = include_node + + @property + def exclude_link(self) -> List[str]: + """Gets the exclude_link of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :return: The exclude_link of this TapiPathComputationTopologyConstraint. + :rtype: List[str] + """ + return self._exclude_link + + @exclude_link.setter + def exclude_link(self, exclude_link: List[str]): + """Sets the exclude_link of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :param exclude_link: The exclude_link of this TapiPathComputationTopologyConstraint. + :type exclude_link: List[str] + """ + + self._exclude_link = exclude_link + + @property + def avoid_topology(self) -> List[str]: + """Gets the avoid_topology of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :return: The avoid_topology of this TapiPathComputationTopologyConstraint. + :rtype: List[str] + """ + return self._avoid_topology + + @avoid_topology.setter + def avoid_topology(self, avoid_topology: List[str]): + """Sets the avoid_topology of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :param avoid_topology: The avoid_topology of this TapiPathComputationTopologyConstraint. + :type avoid_topology: List[str] + """ + + self._avoid_topology = avoid_topology + + @property + def exclude_path(self) -> List[str]: + """Gets the exclude_path of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :return: The exclude_path of this TapiPathComputationTopologyConstraint. + :rtype: List[str] + """ + return self._exclude_path + + @exclude_path.setter + def exclude_path(self, exclude_path: List[str]): + """Sets the exclude_path of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :param exclude_path: The exclude_path of this TapiPathComputationTopologyConstraint. + :type exclude_path: List[str] + """ + + self._exclude_path = exclude_path + + @property + def include_link(self) -> List[str]: + """Gets the include_link of this TapiPathComputationTopologyConstraint. + + This is a loose constraint - that is it is unordered and could be a partial list # noqa: E501 + + :return: The include_link of this TapiPathComputationTopologyConstraint. + :rtype: List[str] + """ + return self._include_link + + @include_link.setter + def include_link(self, include_link: List[str]): + """Sets the include_link of this TapiPathComputationTopologyConstraint. + + This is a loose constraint - that is it is unordered and could be a partial list # noqa: E501 + + :param include_link: The include_link of this TapiPathComputationTopologyConstraint. + :type include_link: List[str] + """ + + self._include_link = include_link + + @property + def preferred_transport_layer(self) -> List[TapiCommonLayerProtocolName]: + """Gets the preferred_transport_layer of this TapiPathComputationTopologyConstraint. + + soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers # noqa: E501 + + :return: The preferred_transport_layer of this TapiPathComputationTopologyConstraint. + :rtype: List[TapiCommonLayerProtocolName] + """ + return self._preferred_transport_layer + + @preferred_transport_layer.setter + def preferred_transport_layer(self, preferred_transport_layer: List[TapiCommonLayerProtocolName]): + """Sets the preferred_transport_layer of this TapiPathComputationTopologyConstraint. + + soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers # noqa: E501 + + :param preferred_transport_layer: The preferred_transport_layer of this TapiPathComputationTopologyConstraint. + :type preferred_transport_layer: List[TapiCommonLayerProtocolName] + """ + + self._preferred_transport_layer = preferred_transport_layer + + @property + def exclude_node(self) -> List[str]: + """Gets the exclude_node of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :return: The exclude_node of this TapiPathComputationTopologyConstraint. + :rtype: List[str] + """ + return self._exclude_node + + @exclude_node.setter + def exclude_node(self, exclude_node: List[str]): + """Sets the exclude_node of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :param exclude_node: The exclude_node of this TapiPathComputationTopologyConstraint. + :type exclude_node: List[str] + """ + + self._exclude_node = exclude_node + + @property + def include_topology(self) -> List[str]: + """Gets the include_topology of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :return: The include_topology of this TapiPathComputationTopologyConstraint. + :rtype: List[str] + """ + return self._include_topology + + @include_topology.setter + def include_topology(self, include_topology: List[str]): + """Sets the include_topology of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :param include_topology: The include_topology of this TapiPathComputationTopologyConstraint. + :type include_topology: List[str] + """ + + self._include_topology = include_topology + + @property + def include_path(self) -> List[str]: + """Gets the include_path of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :return: The include_path of this TapiPathComputationTopologyConstraint. + :rtype: List[str] + """ + return self._include_path + + @include_path.setter + def include_path(self, include_path: List[str]): + """Sets the include_path of this TapiPathComputationTopologyConstraint. + + none # noqa: E501 + + :param include_path: The include_path of this TapiPathComputationTopologyConstraint. + :type include_path: List[str] + """ + + self._include_path = include_path diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_topology_constraint_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_topology_constraint_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..441c005304f7e2d56174271c3680074d5fbee9bc --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_topology_constraint_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_topology_constraint import TapiPathComputationTopologyConstraint # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationTopologyConstraintWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology_constraint: TapiPathComputationTopologyConstraint=None): # noqa: E501 + """TapiPathComputationTopologyConstraintWrapper - a model defined in Swagger + + :param topology_constraint: The topology_constraint of this TapiPathComputationTopologyConstraintWrapper. # noqa: E501 + :type topology_constraint: TapiPathComputationTopologyConstraint + """ + self.swagger_types = { + 'topology_constraint': TapiPathComputationTopologyConstraint + } + + self.attribute_map = { + 'topology_constraint': 'topology-constraint' + } + self._topology_constraint = topology_constraint + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationTopologyConstraintWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.TopologyConstraintWrapper of this TapiPathComputationTopologyConstraintWrapper. # noqa: E501 + :rtype: TapiPathComputationTopologyConstraintWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def topology_constraint(self) -> TapiPathComputationTopologyConstraint: + """Gets the topology_constraint of this TapiPathComputationTopologyConstraintWrapper. + + + :return: The topology_constraint of this TapiPathComputationTopologyConstraintWrapper. + :rtype: TapiPathComputationTopologyConstraint + """ + return self._topology_constraint + + @topology_constraint.setter + def topology_constraint(self, topology_constraint: TapiPathComputationTopologyConstraint): + """Sets the topology_constraint of this TapiPathComputationTopologyConstraintWrapper. + + + :param topology_constraint: The topology_constraint of this TapiPathComputationTopologyConstraintWrapper. + :type topology_constraint: TapiPathComputationTopologyConstraint + """ + + self._topology_constraint = topology_constraint diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_value_or_priority.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_value_or_priority.py new file mode 100644 index 0000000000000000000000000000000000000000..b53d84e70763f38213e41c7c71448e58bdfd3929 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_value_or_priority.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiPathComputationValueOrPriority(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, priority: int=None, value: int=None): # noqa: E501 + """TapiPathComputationValueOrPriority - a model defined in Swagger + + :param priority: The priority of this TapiPathComputationValueOrPriority. # noqa: E501 + :type priority: int + :param value: The value of this TapiPathComputationValueOrPriority. # noqa: E501 + :type value: int + """ + self.swagger_types = { + 'priority': int, + 'value': int + } + + self.attribute_map = { + 'priority': 'priority', + 'value': 'value' + } + self._priority = priority + self._value = value + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationValueOrPriority': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.ValueOrPriority of this TapiPathComputationValueOrPriority. # noqa: E501 + :rtype: TapiPathComputationValueOrPriority + """ + return util.deserialize_model(dikt, cls) + + @property + def priority(self) -> int: + """Gets the priority of this TapiPathComputationValueOrPriority. + + none # noqa: E501 + + :return: The priority of this TapiPathComputationValueOrPriority. + :rtype: int + """ + return self._priority + + @priority.setter + def priority(self, priority: int): + """Sets the priority of this TapiPathComputationValueOrPriority. + + none # noqa: E501 + + :param priority: The priority of this TapiPathComputationValueOrPriority. + :type priority: int + """ + + self._priority = priority + + @property + def value(self) -> int: + """Gets the value of this TapiPathComputationValueOrPriority. + + none # noqa: E501 + + :return: The value of this TapiPathComputationValueOrPriority. + :rtype: int + """ + return self._value + + @value.setter + def value(self, value: int): + """Sets the value of this TapiPathComputationValueOrPriority. + + none # noqa: E501 + + :param value: The value of this TapiPathComputationValueOrPriority. + :type value: int + """ + + self._value = value diff --git a/hackfest/tapi/server/tapi_server/models/tapi_path_computation_value_or_priority_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_value_or_priority_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..d2ea24076e98c830ac0a29acd6bf1d2880d9394b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_path_computation_value_or_priority_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_path_computation_value_or_priority import TapiPathComputationValueOrPriority # noqa: F401,E501 +from tapi_server import util + + +class TapiPathComputationValueOrPriorityWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, max_allowed_cost: TapiPathComputationValueOrPriority=None): # noqa: E501 + """TapiPathComputationValueOrPriorityWrapper - a model defined in Swagger + + :param max_allowed_cost: The max_allowed_cost of this TapiPathComputationValueOrPriorityWrapper. # noqa: E501 + :type max_allowed_cost: TapiPathComputationValueOrPriority + """ + self.swagger_types = { + 'max_allowed_cost': TapiPathComputationValueOrPriority + } + + self.attribute_map = { + 'max_allowed_cost': 'max-allowed-cost' + } + self._max_allowed_cost = max_allowed_cost + + @classmethod + def from_dict(cls, dikt) -> 'TapiPathComputationValueOrPriorityWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.path.computation.ValueOrPriorityWrapper of this TapiPathComputationValueOrPriorityWrapper. # noqa: E501 + :rtype: TapiPathComputationValueOrPriorityWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def max_allowed_cost(self) -> TapiPathComputationValueOrPriority: + """Gets the max_allowed_cost of this TapiPathComputationValueOrPriorityWrapper. + + + :return: The max_allowed_cost of this TapiPathComputationValueOrPriorityWrapper. + :rtype: TapiPathComputationValueOrPriority + """ + return self._max_allowed_cost + + @max_allowed_cost.setter + def max_allowed_cost(self, max_allowed_cost: TapiPathComputationValueOrPriority): + """Sets the max_allowed_cost of this TapiPathComputationValueOrPriorityWrapper. + + + :param max_allowed_cost: The max_allowed_cost of this TapiPathComputationValueOrPriorityWrapper. + :type max_allowed_cost: TapiPathComputationValueOrPriority + """ + + self._max_allowed_cost = max_allowed_cost diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_connection_spec_reference.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_connection_spec_reference.py new file mode 100644 index 0000000000000000000000000000000000000000..e759188d47a927436ed70a256e2063935a03013d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_connection_spec_reference.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyConnectionSpecReference(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_spec_name: str=None, connection_spec_id: str=None): # noqa: E501 + """TapiTopologyConnectionSpecReference - a model defined in Swagger + + :param connection_spec_name: The connection_spec_name of this TapiTopologyConnectionSpecReference. # noqa: E501 + :type connection_spec_name: str + :param connection_spec_id: The connection_spec_id of this TapiTopologyConnectionSpecReference. # noqa: E501 + :type connection_spec_id: str + """ + self.swagger_types = { + 'connection_spec_name': str, + 'connection_spec_id': str + } + + self.attribute_map = { + 'connection_spec_name': 'connection-spec-name', + 'connection_spec_id': 'connection-spec-id' + } + self._connection_spec_name = connection_spec_name + self._connection_spec_id = connection_spec_id + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyConnectionSpecReference': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.ConnectionSpecReference of this TapiTopologyConnectionSpecReference. # noqa: E501 + :rtype: TapiTopologyConnectionSpecReference + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_spec_name(self) -> str: + """Gets the connection_spec_name of this TapiTopologyConnectionSpecReference. + + The name of the connection type spec. This can be used as a reference to a paper document where full formal machine interpretable specs are not supported. # noqa: E501 + + :return: The connection_spec_name of this TapiTopologyConnectionSpecReference. + :rtype: str + """ + return self._connection_spec_name + + @connection_spec_name.setter + def connection_spec_name(self, connection_spec_name: str): + """Sets the connection_spec_name of this TapiTopologyConnectionSpecReference. + + The name of the connection type spec. This can be used as a reference to a paper document where full formal machine interpretable specs are not supported. # noqa: E501 + + :param connection_spec_name: The connection_spec_name of this TapiTopologyConnectionSpecReference. + :type connection_spec_name: str + """ + + self._connection_spec_name = connection_spec_name + + @property + def connection_spec_id(self) -> str: + """Gets the connection_spec_id of this TapiTopologyConnectionSpecReference. + + The reference to a formal spec. This reference need not be provided (e.g., where there is no formal machine interpretable spec for the type of connection). # noqa: E501 + + :return: The connection_spec_id of this TapiTopologyConnectionSpecReference. + :rtype: str + """ + return self._connection_spec_id + + @connection_spec_id.setter + def connection_spec_id(self, connection_spec_id: str): + """Sets the connection_spec_id of this TapiTopologyConnectionSpecReference. + + The reference to a formal spec. This reference need not be provided (e.g., where there is no formal machine interpretable spec for the type of connection). # noqa: E501 + + :param connection_spec_id: The connection_spec_id of this TapiTopologyConnectionSpecReference. + :type connection_spec_id: str + """ + + self._connection_spec_id = connection_spec_id diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_connection_spec_reference_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_connection_spec_reference_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..67365cb2bf8416211ed7cb2e6e115ff3c6136dfb --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_connection_spec_reference_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_connection_spec_reference import TapiTopologyConnectionSpecReference # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyConnectionSpecReferenceWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, connection_spec_reference: TapiTopologyConnectionSpecReference=None): # noqa: E501 + """TapiTopologyConnectionSpecReferenceWrapper - a model defined in Swagger + + :param connection_spec_reference: The connection_spec_reference of this TapiTopologyConnectionSpecReferenceWrapper. # noqa: E501 + :type connection_spec_reference: TapiTopologyConnectionSpecReference + """ + self.swagger_types = { + 'connection_spec_reference': TapiTopologyConnectionSpecReference + } + + self.attribute_map = { + 'connection_spec_reference': 'connection-spec-reference' + } + self._connection_spec_reference = connection_spec_reference + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyConnectionSpecReferenceWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.ConnectionSpecReferenceWrapper of this TapiTopologyConnectionSpecReferenceWrapper. # noqa: E501 + :rtype: TapiTopologyConnectionSpecReferenceWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def connection_spec_reference(self) -> TapiTopologyConnectionSpecReference: + """Gets the connection_spec_reference of this TapiTopologyConnectionSpecReferenceWrapper. + + + :return: The connection_spec_reference of this TapiTopologyConnectionSpecReferenceWrapper. + :rtype: TapiTopologyConnectionSpecReference + """ + return self._connection_spec_reference + + @connection_spec_reference.setter + def connection_spec_reference(self, connection_spec_reference: TapiTopologyConnectionSpecReference): + """Sets the connection_spec_reference of this TapiTopologyConnectionSpecReferenceWrapper. + + + :param connection_spec_reference: The connection_spec_reference of this TapiTopologyConnectionSpecReferenceWrapper. + :type connection_spec_reference: TapiTopologyConnectionSpecReference + """ + + self._connection_spec_reference = connection_spec_reference diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_context_augmentation4.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_context_augmentation4.py new file mode 100644 index 0000000000000000000000000000000000000000..873d348406861edcad45039aec1bdf9a4acc939e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_context_augmentation4.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_topology_context import TapiTopologyTopologyContext # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyContextAugmentation4(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology_context: TapiTopologyTopologyContext=None): # noqa: E501 + """TapiTopologyContextAugmentation4 - a model defined in Swagger + + :param topology_context: The topology_context of this TapiTopologyContextAugmentation4. # noqa: E501 + :type topology_context: TapiTopologyTopologyContext + """ + self.swagger_types = { + 'topology_context': TapiTopologyTopologyContext + } + + self.attribute_map = { + 'topology_context': 'topology-context' + } + self._topology_context = topology_context + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyContextAugmentation4': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.ContextAugmentation4 of this TapiTopologyContextAugmentation4. # noqa: E501 + :rtype: TapiTopologyContextAugmentation4 + """ + return util.deserialize_model(dikt, cls) + + @property + def topology_context(self) -> TapiTopologyTopologyContext: + """Gets the topology_context of this TapiTopologyContextAugmentation4. + + + :return: The topology_context of this TapiTopologyContextAugmentation4. + :rtype: TapiTopologyTopologyContext + """ + return self._topology_context + + @topology_context.setter + def topology_context(self, topology_context: TapiTopologyTopologyContext): + """Sets the topology_context of this TapiTopologyContextAugmentation4. + + + :param topology_context: The topology_context of this TapiTopologyContextAugmentation4. + :type topology_context: TapiTopologyTopologyContext + """ + + self._topology_context = topology_context diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_cost_characteristic.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_cost_characteristic.py new file mode 100644 index 0000000000000000000000000000000000000000..86b11fe77c24191f115a83a449a40f303b341a2e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_cost_characteristic.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyCostCharacteristic(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, cost_value: str=None, cost_algorithm: str=None, cost_name: str=None): # noqa: E501 + """TapiTopologyCostCharacteristic - a model defined in Swagger + + :param cost_value: The cost_value of this TapiTopologyCostCharacteristic. # noqa: E501 + :type cost_value: str + :param cost_algorithm: The cost_algorithm of this TapiTopologyCostCharacteristic. # noqa: E501 + :type cost_algorithm: str + :param cost_name: The cost_name of this TapiTopologyCostCharacteristic. # noqa: E501 + :type cost_name: str + """ + self.swagger_types = { + 'cost_value': str, + 'cost_algorithm': str, + 'cost_name': str + } + + self.attribute_map = { + 'cost_value': 'cost-value', + 'cost_algorithm': 'cost-algorithm', + 'cost_name': 'cost-name' + } + self._cost_value = cost_value + self._cost_algorithm = cost_algorithm + self._cost_name = cost_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyCostCharacteristic': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.CostCharacteristic of this TapiTopologyCostCharacteristic. # noqa: E501 + :rtype: TapiTopologyCostCharacteristic + """ + return util.deserialize_model(dikt, cls) + + @property + def cost_value(self) -> str: + """Gets the cost_value of this TapiTopologyCostCharacteristic. + + The specific cost. # noqa: E501 + + :return: The cost_value of this TapiTopologyCostCharacteristic. + :rtype: str + """ + return self._cost_value + + @cost_value.setter + def cost_value(self, cost_value: str): + """Sets the cost_value of this TapiTopologyCostCharacteristic. + + The specific cost. # noqa: E501 + + :param cost_value: The cost_value of this TapiTopologyCostCharacteristic. + :type cost_value: str + """ + + self._cost_value = cost_value + + @property + def cost_algorithm(self) -> str: + """Gets the cost_algorithm of this TapiTopologyCostCharacteristic. + + The cost may vary based upon some properties of the TopologicalEntity. The rules for the variation are conveyed by the costAlgorithm. # noqa: E501 + + :return: The cost_algorithm of this TapiTopologyCostCharacteristic. + :rtype: str + """ + return self._cost_algorithm + + @cost_algorithm.setter + def cost_algorithm(self, cost_algorithm: str): + """Sets the cost_algorithm of this TapiTopologyCostCharacteristic. + + The cost may vary based upon some properties of the TopologicalEntity. The rules for the variation are conveyed by the costAlgorithm. # noqa: E501 + + :param cost_algorithm: The cost_algorithm of this TapiTopologyCostCharacteristic. + :type cost_algorithm: str + """ + + self._cost_algorithm = cost_algorithm + + @property + def cost_name(self) -> str: + """Gets the cost_name of this TapiTopologyCostCharacteristic. + + The cost characteristic will related to some aspect of the TopologicalEntity (e.g. $ cost, routing weight). This aspect will be conveyed by the costName. # noqa: E501 + + :return: The cost_name of this TapiTopologyCostCharacteristic. + :rtype: str + """ + return self._cost_name + + @cost_name.setter + def cost_name(self, cost_name: str): + """Sets the cost_name of this TapiTopologyCostCharacteristic. + + The cost characteristic will related to some aspect of the TopologicalEntity (e.g. $ cost, routing weight). This aspect will be conveyed by the costName. # noqa: E501 + + :param cost_name: The cost_name of this TapiTopologyCostCharacteristic. + :type cost_name: str + """ + + self._cost_name = cost_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_cost_characteristic_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_cost_characteristic_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..360442c00da909c10f61f24482013195560d5c35 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_cost_characteristic_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_cost_characteristic import TapiTopologyCostCharacteristic # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyCostCharacteristicWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, cost_characteristic: TapiTopologyCostCharacteristic=None): # noqa: E501 + """TapiTopologyCostCharacteristicWrapper - a model defined in Swagger + + :param cost_characteristic: The cost_characteristic of this TapiTopologyCostCharacteristicWrapper. # noqa: E501 + :type cost_characteristic: TapiTopologyCostCharacteristic + """ + self.swagger_types = { + 'cost_characteristic': TapiTopologyCostCharacteristic + } + + self.attribute_map = { + 'cost_characteristic': 'cost-characteristic' + } + self._cost_characteristic = cost_characteristic + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyCostCharacteristicWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.CostCharacteristicWrapper of this TapiTopologyCostCharacteristicWrapper. # noqa: E501 + :rtype: TapiTopologyCostCharacteristicWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def cost_characteristic(self) -> TapiTopologyCostCharacteristic: + """Gets the cost_characteristic of this TapiTopologyCostCharacteristicWrapper. + + + :return: The cost_characteristic of this TapiTopologyCostCharacteristicWrapper. + :rtype: TapiTopologyCostCharacteristic + """ + return self._cost_characteristic + + @cost_characteristic.setter + def cost_characteristic(self, cost_characteristic: TapiTopologyCostCharacteristic): + """Sets the cost_characteristic of this TapiTopologyCostCharacteristicWrapper. + + + :param cost_characteristic: The cost_characteristic of this TapiTopologyCostCharacteristicWrapper. + :type cost_characteristic: TapiTopologyCostCharacteristic + """ + + self._cost_characteristic = cost_characteristic diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_forwarding_rule.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_forwarding_rule.py new file mode 100644 index 0000000000000000000000000000000000000000..d976ccfb79aade750bf5798dd8bef4d827956327 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_forwarding_rule.py @@ -0,0 +1,45 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyForwardingRule(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + MAY_FORWARD_ACROSS_GROUP = "MAY_FORWARD_ACROSS_GROUP" + MUST_FORWARD_ACROSS_GROUP = "MUST_FORWARD_ACROSS_GROUP" + CANNOT_FORWARD_ACROSS_GROUP = "CANNOT_FORWARD_ACROSS_GROUP" + NO_STATEMENT_ON_FORWARDING = "NO_STATEMENT_ON_FORWARDING" + INTER_CONNECTION_CONTENTION = "INTER_CONNECTION_CONTENTION" + def __init__(self): # noqa: E501 + """TapiTopologyForwardingRule - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyForwardingRule': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.ForwardingRule of this TapiTopologyForwardingRule. # noqa: E501 + :rtype: TapiTopologyForwardingRule + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_get_link_details.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_get_link_details.py new file mode 100644 index 0000000000000000000000000000000000000000..3b480a1fb2da271966e241548bd3db08646fe9f3 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_get_link_details.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_getlinkdetails_output import TapiTopologyGetlinkdetailsOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyGetLinkDetails(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiTopologyGetlinkdetailsOutput=None): # noqa: E501 + """TapiTopologyGetLinkDetails - a model defined in Swagger + + :param output: The output of this TapiTopologyGetLinkDetails. # noqa: E501 + :type output: TapiTopologyGetlinkdetailsOutput + """ + self.swagger_types = { + 'output': TapiTopologyGetlinkdetailsOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetLinkDetails': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.GetLinkDetails of this TapiTopologyGetLinkDetails. # noqa: E501 + :rtype: TapiTopologyGetLinkDetails + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiTopologyGetlinkdetailsOutput: + """Gets the output of this TapiTopologyGetLinkDetails. + + + :return: The output of this TapiTopologyGetLinkDetails. + :rtype: TapiTopologyGetlinkdetailsOutput + """ + return self._output + + @output.setter + def output(self, output: TapiTopologyGetlinkdetailsOutput): + """Sets the output of this TapiTopologyGetLinkDetails. + + + :param output: The output of this TapiTopologyGetLinkDetails. + :type output: TapiTopologyGetlinkdetailsOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_get_node_details.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_get_node_details.py new file mode 100644 index 0000000000000000000000000000000000000000..b60d9cc9a2e9b7c15bdeebd3ac1b1fffbd335c90 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_get_node_details.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_getnodedetails_output import TapiTopologyGetnodedetailsOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyGetNodeDetails(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiTopologyGetnodedetailsOutput=None): # noqa: E501 + """TapiTopologyGetNodeDetails - a model defined in Swagger + + :param output: The output of this TapiTopologyGetNodeDetails. # noqa: E501 + :type output: TapiTopologyGetnodedetailsOutput + """ + self.swagger_types = { + 'output': TapiTopologyGetnodedetailsOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetNodeDetails': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.GetNodeDetails of this TapiTopologyGetNodeDetails. # noqa: E501 + :rtype: TapiTopologyGetNodeDetails + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiTopologyGetnodedetailsOutput: + """Gets the output of this TapiTopologyGetNodeDetails. + + + :return: The output of this TapiTopologyGetNodeDetails. + :rtype: TapiTopologyGetnodedetailsOutput + """ + return self._output + + @output.setter + def output(self, output: TapiTopologyGetnodedetailsOutput): + """Sets the output of this TapiTopologyGetNodeDetails. + + + :param output: The output of this TapiTopologyGetNodeDetails. + :type output: TapiTopologyGetnodedetailsOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_get_node_edge_point_details.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_get_node_edge_point_details.py new file mode 100644 index 0000000000000000000000000000000000000000..bf0fc4167dd95fc7f8b5ba5eb65f5508b0fe05c9 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_get_node_edge_point_details.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_getnodeedgepointdetails_output import TapiTopologyGetnodeedgepointdetailsOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyGetNodeEdgePointDetails(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiTopologyGetnodeedgepointdetailsOutput=None): # noqa: E501 + """TapiTopologyGetNodeEdgePointDetails - a model defined in Swagger + + :param output: The output of this TapiTopologyGetNodeEdgePointDetails. # noqa: E501 + :type output: TapiTopologyGetnodeedgepointdetailsOutput + """ + self.swagger_types = { + 'output': TapiTopologyGetnodeedgepointdetailsOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetNodeEdgePointDetails': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.GetNodeEdgePointDetails of this TapiTopologyGetNodeEdgePointDetails. # noqa: E501 + :rtype: TapiTopologyGetNodeEdgePointDetails + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiTopologyGetnodeedgepointdetailsOutput: + """Gets the output of this TapiTopologyGetNodeEdgePointDetails. + + + :return: The output of this TapiTopologyGetNodeEdgePointDetails. + :rtype: TapiTopologyGetnodeedgepointdetailsOutput + """ + return self._output + + @output.setter + def output(self, output: TapiTopologyGetnodeedgepointdetailsOutput): + """Sets the output of this TapiTopologyGetNodeEdgePointDetails. + + + :param output: The output of this TapiTopologyGetNodeEdgePointDetails. + :type output: TapiTopologyGetnodeedgepointdetailsOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_get_topology_details.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_get_topology_details.py new file mode 100644 index 0000000000000000000000000000000000000000..0a68c6e4dbd2f0376fed41e4efc3baf18bc4880e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_get_topology_details.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_gettopologydetails_output import TapiTopologyGettopologydetailsOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyGetTopologyDetails(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiTopologyGettopologydetailsOutput=None): # noqa: E501 + """TapiTopologyGetTopologyDetails - a model defined in Swagger + + :param output: The output of this TapiTopologyGetTopologyDetails. # noqa: E501 + :type output: TapiTopologyGettopologydetailsOutput + """ + self.swagger_types = { + 'output': TapiTopologyGettopologydetailsOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetTopologyDetails': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.GetTopologyDetails of this TapiTopologyGetTopologyDetails. # noqa: E501 + :rtype: TapiTopologyGetTopologyDetails + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiTopologyGettopologydetailsOutput: + """Gets the output of this TapiTopologyGetTopologyDetails. + + + :return: The output of this TapiTopologyGetTopologyDetails. + :rtype: TapiTopologyGettopologydetailsOutput + """ + return self._output + + @output.setter + def output(self, output: TapiTopologyGettopologydetailsOutput): + """Sets the output of this TapiTopologyGetTopologyDetails. + + + :param output: The output of this TapiTopologyGetTopologyDetails. + :type output: TapiTopologyGettopologydetailsOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_get_topology_list.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_get_topology_list.py new file mode 100644 index 0000000000000000000000000000000000000000..88a3eceddd0d54b21db6102e7cf83c85c47edbdf --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_get_topology_list.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_gettopologylist_output import TapiTopologyGettopologylistOutput # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyGetTopologyList(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, output: TapiTopologyGettopologylistOutput=None): # noqa: E501 + """TapiTopologyGetTopologyList - a model defined in Swagger + + :param output: The output of this TapiTopologyGetTopologyList. # noqa: E501 + :type output: TapiTopologyGettopologylistOutput + """ + self.swagger_types = { + 'output': TapiTopologyGettopologylistOutput + } + + self.attribute_map = { + 'output': 'output' + } + self._output = output + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetTopologyList': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.GetTopologyList of this TapiTopologyGetTopologyList. # noqa: E501 + :rtype: TapiTopologyGetTopologyList + """ + return util.deserialize_model(dikt, cls) + + @property + def output(self) -> TapiTopologyGettopologylistOutput: + """Gets the output of this TapiTopologyGetTopologyList. + + + :return: The output of this TapiTopologyGetTopologyList. + :rtype: TapiTopologyGettopologylistOutput + """ + return self._output + + @output.setter + def output(self, output: TapiTopologyGettopologylistOutput): + """Sets the output of this TapiTopologyGetTopologyList. + + + :param output: The output of this TapiTopologyGetTopologyList. + :type output: TapiTopologyGettopologylistOutput + """ + + self._output = output diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_getlinkdetails_input.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_getlinkdetails_input.py new file mode 100644 index 0000000000000000000000000000000000000000..f838f3d4707f34153b17ac45c5063907171ee38f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_getlinkdetails_input.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyGetlinkdetailsInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, link_id_or_name: str=None, topology_id_or_name: str=None): # noqa: E501 + """TapiTopologyGetlinkdetailsInput - a model defined in Swagger + + :param link_id_or_name: The link_id_or_name of this TapiTopologyGetlinkdetailsInput. # noqa: E501 + :type link_id_or_name: str + :param topology_id_or_name: The topology_id_or_name of this TapiTopologyGetlinkdetailsInput. # noqa: E501 + :type topology_id_or_name: str + """ + self.swagger_types = { + 'link_id_or_name': str, + 'topology_id_or_name': str + } + + self.attribute_map = { + 'link_id_or_name': 'link-id-or-name', + 'topology_id_or_name': 'topology-id-or-name' + } + self._link_id_or_name = link_id_or_name + self._topology_id_or_name = topology_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetlinkdetailsInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.getlinkdetails.Input of this TapiTopologyGetlinkdetailsInput. # noqa: E501 + :rtype: TapiTopologyGetlinkdetailsInput + """ + return util.deserialize_model(dikt, cls) + + @property + def link_id_or_name(self) -> str: + """Gets the link_id_or_name of this TapiTopologyGetlinkdetailsInput. + + none # noqa: E501 + + :return: The link_id_or_name of this TapiTopologyGetlinkdetailsInput. + :rtype: str + """ + return self._link_id_or_name + + @link_id_or_name.setter + def link_id_or_name(self, link_id_or_name: str): + """Sets the link_id_or_name of this TapiTopologyGetlinkdetailsInput. + + none # noqa: E501 + + :param link_id_or_name: The link_id_or_name of this TapiTopologyGetlinkdetailsInput. + :type link_id_or_name: str + """ + + self._link_id_or_name = link_id_or_name + + @property + def topology_id_or_name(self) -> str: + """Gets the topology_id_or_name of this TapiTopologyGetlinkdetailsInput. + + none # noqa: E501 + + :return: The topology_id_or_name of this TapiTopologyGetlinkdetailsInput. + :rtype: str + """ + return self._topology_id_or_name + + @topology_id_or_name.setter + def topology_id_or_name(self, topology_id_or_name: str): + """Sets the topology_id_or_name of this TapiTopologyGetlinkdetailsInput. + + none # noqa: E501 + + :param topology_id_or_name: The topology_id_or_name of this TapiTopologyGetlinkdetailsInput. + :type topology_id_or_name: str + """ + + self._topology_id_or_name = topology_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_getlinkdetails_output.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_getlinkdetails_output.py new file mode 100644 index 0000000000000000000000000000000000000000..95b662e2fecc9f78ee17c15b8ee9bc84943ce119 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_getlinkdetails_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_link import TapiTopologyLink # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyGetlinkdetailsOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, link: TapiTopologyLink=None): # noqa: E501 + """TapiTopologyGetlinkdetailsOutput - a model defined in Swagger + + :param link: The link of this TapiTopologyGetlinkdetailsOutput. # noqa: E501 + :type link: TapiTopologyLink + """ + self.swagger_types = { + 'link': TapiTopologyLink + } + + self.attribute_map = { + 'link': 'link' + } + self._link = link + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetlinkdetailsOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.getlinkdetails.Output of this TapiTopologyGetlinkdetailsOutput. # noqa: E501 + :rtype: TapiTopologyGetlinkdetailsOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def link(self) -> TapiTopologyLink: + """Gets the link of this TapiTopologyGetlinkdetailsOutput. + + + :return: The link of this TapiTopologyGetlinkdetailsOutput. + :rtype: TapiTopologyLink + """ + return self._link + + @link.setter + def link(self, link: TapiTopologyLink): + """Sets the link of this TapiTopologyGetlinkdetailsOutput. + + + :param link: The link of this TapiTopologyGetlinkdetailsOutput. + :type link: TapiTopologyLink + """ + + self._link = link diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodedetails_input.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodedetails_input.py new file mode 100644 index 0000000000000000000000000000000000000000..d125b2539b228e1160ddf6c5a1bcf68d97ca6797 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodedetails_input.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyGetnodedetailsInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node_id_or_name: str=None, topology_id_or_name: str=None): # noqa: E501 + """TapiTopologyGetnodedetailsInput - a model defined in Swagger + + :param node_id_or_name: The node_id_or_name of this TapiTopologyGetnodedetailsInput. # noqa: E501 + :type node_id_or_name: str + :param topology_id_or_name: The topology_id_or_name of this TapiTopologyGetnodedetailsInput. # noqa: E501 + :type topology_id_or_name: str + """ + self.swagger_types = { + 'node_id_or_name': str, + 'topology_id_or_name': str + } + + self.attribute_map = { + 'node_id_or_name': 'node-id-or-name', + 'topology_id_or_name': 'topology-id-or-name' + } + self._node_id_or_name = node_id_or_name + self._topology_id_or_name = topology_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetnodedetailsInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.getnodedetails.Input of this TapiTopologyGetnodedetailsInput. # noqa: E501 + :rtype: TapiTopologyGetnodedetailsInput + """ + return util.deserialize_model(dikt, cls) + + @property + def node_id_or_name(self) -> str: + """Gets the node_id_or_name of this TapiTopologyGetnodedetailsInput. + + none # noqa: E501 + + :return: The node_id_or_name of this TapiTopologyGetnodedetailsInput. + :rtype: str + """ + return self._node_id_or_name + + @node_id_or_name.setter + def node_id_or_name(self, node_id_or_name: str): + """Sets the node_id_or_name of this TapiTopologyGetnodedetailsInput. + + none # noqa: E501 + + :param node_id_or_name: The node_id_or_name of this TapiTopologyGetnodedetailsInput. + :type node_id_or_name: str + """ + + self._node_id_or_name = node_id_or_name + + @property + def topology_id_or_name(self) -> str: + """Gets the topology_id_or_name of this TapiTopologyGetnodedetailsInput. + + none # noqa: E501 + + :return: The topology_id_or_name of this TapiTopologyGetnodedetailsInput. + :rtype: str + """ + return self._topology_id_or_name + + @topology_id_or_name.setter + def topology_id_or_name(self, topology_id_or_name: str): + """Sets the topology_id_or_name of this TapiTopologyGetnodedetailsInput. + + none # noqa: E501 + + :param topology_id_or_name: The topology_id_or_name of this TapiTopologyGetnodedetailsInput. + :type topology_id_or_name: str + """ + + self._topology_id_or_name = topology_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodedetails_output.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodedetails_output.py new file mode 100644 index 0000000000000000000000000000000000000000..49e0042763a40a064620d869f9e60c1f3e68a92e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodedetails_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_node import TapiTopologyNode # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyGetnodedetailsOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node: TapiTopologyNode=None): # noqa: E501 + """TapiTopologyGetnodedetailsOutput - a model defined in Swagger + + :param node: The node of this TapiTopologyGetnodedetailsOutput. # noqa: E501 + :type node: TapiTopologyNode + """ + self.swagger_types = { + 'node': TapiTopologyNode + } + + self.attribute_map = { + 'node': 'node' + } + self._node = node + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetnodedetailsOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.getnodedetails.Output of this TapiTopologyGetnodedetailsOutput. # noqa: E501 + :rtype: TapiTopologyGetnodedetailsOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def node(self) -> TapiTopologyNode: + """Gets the node of this TapiTopologyGetnodedetailsOutput. + + + :return: The node of this TapiTopologyGetnodedetailsOutput. + :rtype: TapiTopologyNode + """ + return self._node + + @node.setter + def node(self, node: TapiTopologyNode): + """Sets the node of this TapiTopologyGetnodedetailsOutput. + + + :param node: The node of this TapiTopologyGetnodedetailsOutput. + :type node: TapiTopologyNode + """ + + self._node = node diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodeedgepointdetails_input.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodeedgepointdetails_input.py new file mode 100644 index 0000000000000000000000000000000000000000..dc7f65ad32056fad5c8f6c1e7f6d9be5c2c7f0fc --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodeedgepointdetails_input.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyGetnodeedgepointdetailsInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, ep_id_or_name: str=None, node_id_or_name: str=None, topology_id_or_name: str=None): # noqa: E501 + """TapiTopologyGetnodeedgepointdetailsInput - a model defined in Swagger + + :param ep_id_or_name: The ep_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. # noqa: E501 + :type ep_id_or_name: str + :param node_id_or_name: The node_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. # noqa: E501 + :type node_id_or_name: str + :param topology_id_or_name: The topology_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. # noqa: E501 + :type topology_id_or_name: str + """ + self.swagger_types = { + 'ep_id_or_name': str, + 'node_id_or_name': str, + 'topology_id_or_name': str + } + + self.attribute_map = { + 'ep_id_or_name': 'ep-id-or-name', + 'node_id_or_name': 'node-id-or-name', + 'topology_id_or_name': 'topology-id-or-name' + } + self._ep_id_or_name = ep_id_or_name + self._node_id_or_name = node_id_or_name + self._topology_id_or_name = topology_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetnodeedgepointdetailsInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.getnodeedgepointdetails.Input of this TapiTopologyGetnodeedgepointdetailsInput. # noqa: E501 + :rtype: TapiTopologyGetnodeedgepointdetailsInput + """ + return util.deserialize_model(dikt, cls) + + @property + def ep_id_or_name(self) -> str: + """Gets the ep_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + + none # noqa: E501 + + :return: The ep_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + :rtype: str + """ + return self._ep_id_or_name + + @ep_id_or_name.setter + def ep_id_or_name(self, ep_id_or_name: str): + """Sets the ep_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + + none # noqa: E501 + + :param ep_id_or_name: The ep_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + :type ep_id_or_name: str + """ + + self._ep_id_or_name = ep_id_or_name + + @property + def node_id_or_name(self) -> str: + """Gets the node_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + + none # noqa: E501 + + :return: The node_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + :rtype: str + """ + return self._node_id_or_name + + @node_id_or_name.setter + def node_id_or_name(self, node_id_or_name: str): + """Sets the node_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + + none # noqa: E501 + + :param node_id_or_name: The node_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + :type node_id_or_name: str + """ + + self._node_id_or_name = node_id_or_name + + @property + def topology_id_or_name(self) -> str: + """Gets the topology_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + + none # noqa: E501 + + :return: The topology_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + :rtype: str + """ + return self._topology_id_or_name + + @topology_id_or_name.setter + def topology_id_or_name(self, topology_id_or_name: str): + """Sets the topology_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + + none # noqa: E501 + + :param topology_id_or_name: The topology_id_or_name of this TapiTopologyGetnodeedgepointdetailsInput. + :type topology_id_or_name: str + """ + + self._topology_id_or_name = topology_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodeedgepointdetails_output.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodeedgepointdetails_output.py new file mode 100644 index 0000000000000000000000000000000000000000..8506c3a6abe447726a8affbb0edd319bb1f80e0d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_getnodeedgepointdetails_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_node_edge_point import TapiTopologyNodeEdgePoint # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyGetnodeedgepointdetailsOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node_edge_point: TapiTopologyNodeEdgePoint=None): # noqa: E501 + """TapiTopologyGetnodeedgepointdetailsOutput - a model defined in Swagger + + :param node_edge_point: The node_edge_point of this TapiTopologyGetnodeedgepointdetailsOutput. # noqa: E501 + :type node_edge_point: TapiTopologyNodeEdgePoint + """ + self.swagger_types = { + 'node_edge_point': TapiTopologyNodeEdgePoint + } + + self.attribute_map = { + 'node_edge_point': 'node-edge-point' + } + self._node_edge_point = node_edge_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGetnodeedgepointdetailsOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.getnodeedgepointdetails.Output of this TapiTopologyGetnodeedgepointdetailsOutput. # noqa: E501 + :rtype: TapiTopologyGetnodeedgepointdetailsOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def node_edge_point(self) -> TapiTopologyNodeEdgePoint: + """Gets the node_edge_point of this TapiTopologyGetnodeedgepointdetailsOutput. + + + :return: The node_edge_point of this TapiTopologyGetnodeedgepointdetailsOutput. + :rtype: TapiTopologyNodeEdgePoint + """ + return self._node_edge_point + + @node_edge_point.setter + def node_edge_point(self, node_edge_point: TapiTopologyNodeEdgePoint): + """Sets the node_edge_point of this TapiTopologyGetnodeedgepointdetailsOutput. + + + :param node_edge_point: The node_edge_point of this TapiTopologyGetnodeedgepointdetailsOutput. + :type node_edge_point: TapiTopologyNodeEdgePoint + """ + + self._node_edge_point = node_edge_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_gettopologydetails_input.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_gettopologydetails_input.py new file mode 100644 index 0000000000000000000000000000000000000000..766155919ed803e8097d01ce1052d85e7c4900c6 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_gettopologydetails_input.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyGettopologydetailsInput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology_id_or_name: str=None): # noqa: E501 + """TapiTopologyGettopologydetailsInput - a model defined in Swagger + + :param topology_id_or_name: The topology_id_or_name of this TapiTopologyGettopologydetailsInput. # noqa: E501 + :type topology_id_or_name: str + """ + self.swagger_types = { + 'topology_id_or_name': str + } + + self.attribute_map = { + 'topology_id_or_name': 'topology-id-or-name' + } + self._topology_id_or_name = topology_id_or_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGettopologydetailsInput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.gettopologydetails.Input of this TapiTopologyGettopologydetailsInput. # noqa: E501 + :rtype: TapiTopologyGettopologydetailsInput + """ + return util.deserialize_model(dikt, cls) + + @property + def topology_id_or_name(self) -> str: + """Gets the topology_id_or_name of this TapiTopologyGettopologydetailsInput. + + none # noqa: E501 + + :return: The topology_id_or_name of this TapiTopologyGettopologydetailsInput. + :rtype: str + """ + return self._topology_id_or_name + + @topology_id_or_name.setter + def topology_id_or_name(self, topology_id_or_name: str): + """Sets the topology_id_or_name of this TapiTopologyGettopologydetailsInput. + + none # noqa: E501 + + :param topology_id_or_name: The topology_id_or_name of this TapiTopologyGettopologydetailsInput. + :type topology_id_or_name: str + """ + + self._topology_id_or_name = topology_id_or_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_gettopologydetails_output.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_gettopologydetails_output.py new file mode 100644 index 0000000000000000000000000000000000000000..5e2186dbedaae0d3c48d22f377d84cc82d7fc614 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_gettopologydetails_output.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_topology import TapiTopologyTopology # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyGettopologydetailsOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology: TapiTopologyTopology=None): # noqa: E501 + """TapiTopologyGettopologydetailsOutput - a model defined in Swagger + + :param topology: The topology of this TapiTopologyGettopologydetailsOutput. # noqa: E501 + :type topology: TapiTopologyTopology + """ + self.swagger_types = { + 'topology': TapiTopologyTopology + } + + self.attribute_map = { + 'topology': 'topology' + } + self._topology = topology + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGettopologydetailsOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.gettopologydetails.Output of this TapiTopologyGettopologydetailsOutput. # noqa: E501 + :rtype: TapiTopologyGettopologydetailsOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def topology(self) -> TapiTopologyTopology: + """Gets the topology of this TapiTopologyGettopologydetailsOutput. + + + :return: The topology of this TapiTopologyGettopologydetailsOutput. + :rtype: TapiTopologyTopology + """ + return self._topology + + @topology.setter + def topology(self, topology: TapiTopologyTopology): + """Sets the topology of this TapiTopologyGettopologydetailsOutput. + + + :param topology: The topology of this TapiTopologyGettopologydetailsOutput. + :type topology: TapiTopologyTopology + """ + + self._topology = topology diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_gettopologylist_output.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_gettopologylist_output.py new file mode 100644 index 0000000000000000000000000000000000000000..45a88d2770a8ccdd0c9e345795cd0dfb401d6691 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_gettopologylist_output.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_topology import TapiTopologyTopology # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyGettopologylistOutput(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology: List[TapiTopologyTopology]=None): # noqa: E501 + """TapiTopologyGettopologylistOutput - a model defined in Swagger + + :param topology: The topology of this TapiTopologyGettopologylistOutput. # noqa: E501 + :type topology: List[TapiTopologyTopology] + """ + self.swagger_types = { + 'topology': List[TapiTopologyTopology] + } + + self.attribute_map = { + 'topology': 'topology' + } + self._topology = topology + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyGettopologylistOutput': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.gettopologylist.Output of this TapiTopologyGettopologylistOutput. # noqa: E501 + :rtype: TapiTopologyGettopologylistOutput + """ + return util.deserialize_model(dikt, cls) + + @property + def topology(self) -> List[TapiTopologyTopology]: + """Gets the topology of this TapiTopologyGettopologylistOutput. + + none # noqa: E501 + + :return: The topology of this TapiTopologyGettopologylistOutput. + :rtype: List[TapiTopologyTopology] + """ + return self._topology + + @topology.setter + def topology(self, topology: List[TapiTopologyTopology]): + """Sets the topology of this TapiTopologyGettopologylistOutput. + + none # noqa: E501 + + :param topology: The topology of this TapiTopologyGettopologylistOutput. + :type topology: List[TapiTopologyTopology] + """ + + self._topology = topology diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_inter_rule_group.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_inter_rule_group.py new file mode 100644 index 0000000000000000000000000000000000000000..aaf71e657c13304e4bd5a7cc2eb1ce3597030b7d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_inter_rule_group.py @@ -0,0 +1,296 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity_pac import TapiCommonCapacityPac # noqa: F401,E501 +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_topology_cost_characteristic import TapiTopologyCostCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_rule_group_ref import TapiTopologyNodeRuleGroupRef # noqa: F401,E501 +from tapi_server.models.tapi_topology_risk_characteristic import TapiTopologyRiskCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_risk_parameter_pac import TapiTopologyRiskParameterPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_rule import TapiTopologyRule # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_cost_pac import TapiTopologyTransferCostPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_timing_pac import TapiTopologyTransferTimingPac # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyInterRuleGroup(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None, risk_characteristic: List[TapiTopologyRiskCharacteristic]=None, cost_characteristic: List[TapiTopologyCostCharacteristic]=None, latency_characteristic: List[TapiTopologyLatencyCharacteristic]=None, available_capacity: TapiCommonCapacity=None, total_potential_capacity: TapiCommonCapacity=None, associated_node_rule_group: List[TapiTopologyNodeRuleGroupRef]=None, rule: List[TapiTopologyRule]=None): # noqa: E501 + """TapiTopologyInterRuleGroup - a model defined in Swagger + + :param name: The name of this TapiTopologyInterRuleGroup. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiTopologyInterRuleGroup. # noqa: E501 + :type uuid: str + :param risk_characteristic: The risk_characteristic of this TapiTopologyInterRuleGroup. # noqa: E501 + :type risk_characteristic: List[TapiTopologyRiskCharacteristic] + :param cost_characteristic: The cost_characteristic of this TapiTopologyInterRuleGroup. # noqa: E501 + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + :param latency_characteristic: The latency_characteristic of this TapiTopologyInterRuleGroup. # noqa: E501 + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + :param available_capacity: The available_capacity of this TapiTopologyInterRuleGroup. # noqa: E501 + :type available_capacity: TapiCommonCapacity + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyInterRuleGroup. # noqa: E501 + :type total_potential_capacity: TapiCommonCapacity + :param associated_node_rule_group: The associated_node_rule_group of this TapiTopologyInterRuleGroup. # noqa: E501 + :type associated_node_rule_group: List[TapiTopologyNodeRuleGroupRef] + :param rule: The rule of this TapiTopologyInterRuleGroup. # noqa: E501 + :type rule: List[TapiTopologyRule] + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'risk_characteristic': List[TapiTopologyRiskCharacteristic], + 'cost_characteristic': List[TapiTopologyCostCharacteristic], + 'latency_characteristic': List[TapiTopologyLatencyCharacteristic], + 'available_capacity': TapiCommonCapacity, + 'total_potential_capacity': TapiCommonCapacity, + 'associated_node_rule_group': List[TapiTopologyNodeRuleGroupRef], + 'rule': List[TapiTopologyRule] + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid', + 'risk_characteristic': 'risk-characteristic', + 'cost_characteristic': 'cost-characteristic', + 'latency_characteristic': 'latency-characteristic', + 'available_capacity': 'available-capacity', + 'total_potential_capacity': 'total-potential-capacity', + 'associated_node_rule_group': 'associated-node-rule-group', + 'rule': 'rule' + } + self._name = name + self._uuid = uuid + self._risk_characteristic = risk_characteristic + self._cost_characteristic = cost_characteristic + self._latency_characteristic = latency_characteristic + self._available_capacity = available_capacity + self._total_potential_capacity = total_potential_capacity + self._associated_node_rule_group = associated_node_rule_group + self._rule = rule + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyInterRuleGroup': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.InterRuleGroup of this TapiTopologyInterRuleGroup. # noqa: E501 + :rtype: TapiTopologyInterRuleGroup + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiTopologyInterRuleGroup. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiTopologyInterRuleGroup. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiTopologyInterRuleGroup. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiTopologyInterRuleGroup. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiTopologyInterRuleGroup. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiTopologyInterRuleGroup. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiTopologyInterRuleGroup. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiTopologyInterRuleGroup. + :type uuid: str + """ + + self._uuid = uuid + + @property + def risk_characteristic(self) -> List[TapiTopologyRiskCharacteristic]: + """Gets the risk_characteristic of this TapiTopologyInterRuleGroup. + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :return: The risk_characteristic of this TapiTopologyInterRuleGroup. + :rtype: List[TapiTopologyRiskCharacteristic] + """ + return self._risk_characteristic + + @risk_characteristic.setter + def risk_characteristic(self, risk_characteristic: List[TapiTopologyRiskCharacteristic]): + """Sets the risk_characteristic of this TapiTopologyInterRuleGroup. + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :param risk_characteristic: The risk_characteristic of this TapiTopologyInterRuleGroup. + :type risk_characteristic: List[TapiTopologyRiskCharacteristic] + """ + + self._risk_characteristic = risk_characteristic + + @property + def cost_characteristic(self) -> List[TapiTopologyCostCharacteristic]: + """Gets the cost_characteristic of this TapiTopologyInterRuleGroup. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :return: The cost_characteristic of this TapiTopologyInterRuleGroup. + :rtype: List[TapiTopologyCostCharacteristic] + """ + return self._cost_characteristic + + @cost_characteristic.setter + def cost_characteristic(self, cost_characteristic: List[TapiTopologyCostCharacteristic]): + """Sets the cost_characteristic of this TapiTopologyInterRuleGroup. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param cost_characteristic: The cost_characteristic of this TapiTopologyInterRuleGroup. + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + """ + + self._cost_characteristic = cost_characteristic + + @property + def latency_characteristic(self) -> List[TapiTopologyLatencyCharacteristic]: + """Gets the latency_characteristic of this TapiTopologyInterRuleGroup. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :return: The latency_characteristic of this TapiTopologyInterRuleGroup. + :rtype: List[TapiTopologyLatencyCharacteristic] + """ + return self._latency_characteristic + + @latency_characteristic.setter + def latency_characteristic(self, latency_characteristic: List[TapiTopologyLatencyCharacteristic]): + """Sets the latency_characteristic of this TapiTopologyInterRuleGroup. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param latency_characteristic: The latency_characteristic of this TapiTopologyInterRuleGroup. + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + """ + + self._latency_characteristic = latency_characteristic + + @property + def available_capacity(self) -> TapiCommonCapacity: + """Gets the available_capacity of this TapiTopologyInterRuleGroup. + + + :return: The available_capacity of this TapiTopologyInterRuleGroup. + :rtype: TapiCommonCapacity + """ + return self._available_capacity + + @available_capacity.setter + def available_capacity(self, available_capacity: TapiCommonCapacity): + """Sets the available_capacity of this TapiTopologyInterRuleGroup. + + + :param available_capacity: The available_capacity of this TapiTopologyInterRuleGroup. + :type available_capacity: TapiCommonCapacity + """ + + self._available_capacity = available_capacity + + @property + def total_potential_capacity(self) -> TapiCommonCapacity: + """Gets the total_potential_capacity of this TapiTopologyInterRuleGroup. + + + :return: The total_potential_capacity of this TapiTopologyInterRuleGroup. + :rtype: TapiCommonCapacity + """ + return self._total_potential_capacity + + @total_potential_capacity.setter + def total_potential_capacity(self, total_potential_capacity: TapiCommonCapacity): + """Sets the total_potential_capacity of this TapiTopologyInterRuleGroup. + + + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyInterRuleGroup. + :type total_potential_capacity: TapiCommonCapacity + """ + + self._total_potential_capacity = total_potential_capacity + + @property + def associated_node_rule_group(self) -> List[TapiTopologyNodeRuleGroupRef]: + """Gets the associated_node_rule_group of this TapiTopologyInterRuleGroup. + + The NodeRuleGroups that the InterRuleGroup constrains interconnection between. The CEPs of the NEPs of a referenced NodeRuleGroup can interconnect to the CEPs of the NEPs of another referenced NodeRuleGroup constrained by the rules of the InterRuleGroup. # noqa: E501 + + :return: The associated_node_rule_group of this TapiTopologyInterRuleGroup. + :rtype: List[TapiTopologyNodeRuleGroupRef] + """ + return self._associated_node_rule_group + + @associated_node_rule_group.setter + def associated_node_rule_group(self, associated_node_rule_group: List[TapiTopologyNodeRuleGroupRef]): + """Sets the associated_node_rule_group of this TapiTopologyInterRuleGroup. + + The NodeRuleGroups that the InterRuleGroup constrains interconnection between. The CEPs of the NEPs of a referenced NodeRuleGroup can interconnect to the CEPs of the NEPs of another referenced NodeRuleGroup constrained by the rules of the InterRuleGroup. # noqa: E501 + + :param associated_node_rule_group: The associated_node_rule_group of this TapiTopologyInterRuleGroup. + :type associated_node_rule_group: List[TapiTopologyNodeRuleGroupRef] + """ + + self._associated_node_rule_group = associated_node_rule_group + + @property + def rule(self) -> List[TapiTopologyRule]: + """Gets the rule of this TapiTopologyInterRuleGroup. + + The list of rules of the InterRuleGroup. # noqa: E501 + + :return: The rule of this TapiTopologyInterRuleGroup. + :rtype: List[TapiTopologyRule] + """ + return self._rule + + @rule.setter + def rule(self, rule: List[TapiTopologyRule]): + """Sets the rule of this TapiTopologyInterRuleGroup. + + The list of rules of the InterRuleGroup. # noqa: E501 + + :param rule: The rule of this TapiTopologyInterRuleGroup. + :type rule: List[TapiTopologyRule] + """ + + self._rule = rule diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_inter_rule_group_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_inter_rule_group_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..b28c05707efed2d485d496cd9b4c646c4b00c607 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_inter_rule_group_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_inter_rule_group import TapiTopologyInterRuleGroup # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyInterRuleGroupWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, inter_rule_group: TapiTopologyInterRuleGroup=None): # noqa: E501 + """TapiTopologyInterRuleGroupWrapper - a model defined in Swagger + + :param inter_rule_group: The inter_rule_group of this TapiTopologyInterRuleGroupWrapper. # noqa: E501 + :type inter_rule_group: TapiTopologyInterRuleGroup + """ + self.swagger_types = { + 'inter_rule_group': TapiTopologyInterRuleGroup + } + + self.attribute_map = { + 'inter_rule_group': 'inter-rule-group' + } + self._inter_rule_group = inter_rule_group + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyInterRuleGroupWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.InterRuleGroupWrapper of this TapiTopologyInterRuleGroupWrapper. # noqa: E501 + :rtype: TapiTopologyInterRuleGroupWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def inter_rule_group(self) -> TapiTopologyInterRuleGroup: + """Gets the inter_rule_group of this TapiTopologyInterRuleGroupWrapper. + + + :return: The inter_rule_group of this TapiTopologyInterRuleGroupWrapper. + :rtype: TapiTopologyInterRuleGroup + """ + return self._inter_rule_group + + @inter_rule_group.setter + def inter_rule_group(self, inter_rule_group: TapiTopologyInterRuleGroup): + """Sets the inter_rule_group of this TapiTopologyInterRuleGroupWrapper. + + + :param inter_rule_group: The inter_rule_group of this TapiTopologyInterRuleGroupWrapper. + :type inter_rule_group: TapiTopologyInterRuleGroup + """ + + self._inter_rule_group = inter_rule_group diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_latency_characteristic.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_latency_characteristic.py new file mode 100644 index 0000000000000000000000000000000000000000..014790461ff1fed768ba6518426bdbad8e175f11 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_latency_characteristic.py @@ -0,0 +1,176 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyLatencyCharacteristic(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, traffic_property_name: str=None, jitter_characteristic: str=None, fixed_latency_characteristic: str=None, wander_characteristic: str=None, queing_latency_characteristic: str=None): # noqa: E501 + """TapiTopologyLatencyCharacteristic - a model defined in Swagger + + :param traffic_property_name: The traffic_property_name of this TapiTopologyLatencyCharacteristic. # noqa: E501 + :type traffic_property_name: str + :param jitter_characteristic: The jitter_characteristic of this TapiTopologyLatencyCharacteristic. # noqa: E501 + :type jitter_characteristic: str + :param fixed_latency_characteristic: The fixed_latency_characteristic of this TapiTopologyLatencyCharacteristic. # noqa: E501 + :type fixed_latency_characteristic: str + :param wander_characteristic: The wander_characteristic of this TapiTopologyLatencyCharacteristic. # noqa: E501 + :type wander_characteristic: str + :param queing_latency_characteristic: The queing_latency_characteristic of this TapiTopologyLatencyCharacteristic. # noqa: E501 + :type queing_latency_characteristic: str + """ + self.swagger_types = { + 'traffic_property_name': str, + 'jitter_characteristic': str, + 'fixed_latency_characteristic': str, + 'wander_characteristic': str, + 'queing_latency_characteristic': str + } + + self.attribute_map = { + 'traffic_property_name': 'traffic-property-name', + 'jitter_characteristic': 'jitter-characteristic', + 'fixed_latency_characteristic': 'fixed-latency-characteristic', + 'wander_characteristic': 'wander-characteristic', + 'queing_latency_characteristic': 'queing-latency-characteristic' + } + self._traffic_property_name = traffic_property_name + self._jitter_characteristic = jitter_characteristic + self._fixed_latency_characteristic = fixed_latency_characteristic + self._wander_characteristic = wander_characteristic + self._queing_latency_characteristic = queing_latency_characteristic + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyLatencyCharacteristic': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.LatencyCharacteristic of this TapiTopologyLatencyCharacteristic. # noqa: E501 + :rtype: TapiTopologyLatencyCharacteristic + """ + return util.deserialize_model(dikt, cls) + + @property + def traffic_property_name(self) -> str: + """Gets the traffic_property_name of this TapiTopologyLatencyCharacteristic. + + The identifier of the specific traffic property to which the queuing latency applies. # noqa: E501 + + :return: The traffic_property_name of this TapiTopologyLatencyCharacteristic. + :rtype: str + """ + return self._traffic_property_name + + @traffic_property_name.setter + def traffic_property_name(self, traffic_property_name: str): + """Sets the traffic_property_name of this TapiTopologyLatencyCharacteristic. + + The identifier of the specific traffic property to which the queuing latency applies. # noqa: E501 + + :param traffic_property_name: The traffic_property_name of this TapiTopologyLatencyCharacteristic. + :type traffic_property_name: str + """ + + self._traffic_property_name = traffic_property_name + + @property + def jitter_characteristic(self) -> str: + """Gets the jitter_characteristic of this TapiTopologyLatencyCharacteristic. + + High frequency deviation from true periodicity of a signal and therefore a small high rate of change of transfer latency. Applies to TDM systems (and not packet). # noqa: E501 + + :return: The jitter_characteristic of this TapiTopologyLatencyCharacteristic. + :rtype: str + """ + return self._jitter_characteristic + + @jitter_characteristic.setter + def jitter_characteristic(self, jitter_characteristic: str): + """Sets the jitter_characteristic of this TapiTopologyLatencyCharacteristic. + + High frequency deviation from true periodicity of a signal and therefore a small high rate of change of transfer latency. Applies to TDM systems (and not packet). # noqa: E501 + + :param jitter_characteristic: The jitter_characteristic of this TapiTopologyLatencyCharacteristic. + :type jitter_characteristic: str + """ + + self._jitter_characteristic = jitter_characteristic + + @property + def fixed_latency_characteristic(self) -> str: + """Gets the fixed_latency_characteristic of this TapiTopologyLatencyCharacteristic. + + A TopologicalEntity suffers delay caused by the realization of the servers (e.g. distance related; FEC encoding etc.) along with some client specific processing. This is the total average latency effect of the TopologicalEntity # noqa: E501 + + :return: The fixed_latency_characteristic of this TapiTopologyLatencyCharacteristic. + :rtype: str + """ + return self._fixed_latency_characteristic + + @fixed_latency_characteristic.setter + def fixed_latency_characteristic(self, fixed_latency_characteristic: str): + """Sets the fixed_latency_characteristic of this TapiTopologyLatencyCharacteristic. + + A TopologicalEntity suffers delay caused by the realization of the servers (e.g. distance related; FEC encoding etc.) along with some client specific processing. This is the total average latency effect of the TopologicalEntity # noqa: E501 + + :param fixed_latency_characteristic: The fixed_latency_characteristic of this TapiTopologyLatencyCharacteristic. + :type fixed_latency_characteristic: str + """ + + self._fixed_latency_characteristic = fixed_latency_characteristic + + @property + def wander_characteristic(self) -> str: + """Gets the wander_characteristic of this TapiTopologyLatencyCharacteristic. + + Low frequency deviation from true periodicity of a signal and therefore a small low rate of change of transfer latency. Applies to TDM systems (and not packet). # noqa: E501 + + :return: The wander_characteristic of this TapiTopologyLatencyCharacteristic. + :rtype: str + """ + return self._wander_characteristic + + @wander_characteristic.setter + def wander_characteristic(self, wander_characteristic: str): + """Sets the wander_characteristic of this TapiTopologyLatencyCharacteristic. + + Low frequency deviation from true periodicity of a signal and therefore a small low rate of change of transfer latency. Applies to TDM systems (and not packet). # noqa: E501 + + :param wander_characteristic: The wander_characteristic of this TapiTopologyLatencyCharacteristic. + :type wander_characteristic: str + """ + + self._wander_characteristic = wander_characteristic + + @property + def queing_latency_characteristic(self) -> str: + """Gets the queing_latency_characteristic of this TapiTopologyLatencyCharacteristic. + + The specific queuing latency for the traffic property. # noqa: E501 + + :return: The queing_latency_characteristic of this TapiTopologyLatencyCharacteristic. + :rtype: str + """ + return self._queing_latency_characteristic + + @queing_latency_characteristic.setter + def queing_latency_characteristic(self, queing_latency_characteristic: str): + """Sets the queing_latency_characteristic of this TapiTopologyLatencyCharacteristic. + + The specific queuing latency for the traffic property. # noqa: E501 + + :param queing_latency_characteristic: The queing_latency_characteristic of this TapiTopologyLatencyCharacteristic. + :type queing_latency_characteristic: str + """ + + self._queing_latency_characteristic = queing_latency_characteristic diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_latency_characteristic_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_latency_characteristic_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..faf48fcb4f91fe044c27bde449eb5c78ae3b36ec --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_latency_characteristic_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyLatencyCharacteristicWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, latency_characteristic: TapiTopologyLatencyCharacteristic=None): # noqa: E501 + """TapiTopologyLatencyCharacteristicWrapper - a model defined in Swagger + + :param latency_characteristic: The latency_characteristic of this TapiTopologyLatencyCharacteristicWrapper. # noqa: E501 + :type latency_characteristic: TapiTopologyLatencyCharacteristic + """ + self.swagger_types = { + 'latency_characteristic': TapiTopologyLatencyCharacteristic + } + + self.attribute_map = { + 'latency_characteristic': 'latency-characteristic' + } + self._latency_characteristic = latency_characteristic + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyLatencyCharacteristicWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.LatencyCharacteristicWrapper of this TapiTopologyLatencyCharacteristicWrapper. # noqa: E501 + :rtype: TapiTopologyLatencyCharacteristicWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def latency_characteristic(self) -> TapiTopologyLatencyCharacteristic: + """Gets the latency_characteristic of this TapiTopologyLatencyCharacteristicWrapper. + + + :return: The latency_characteristic of this TapiTopologyLatencyCharacteristicWrapper. + :rtype: TapiTopologyLatencyCharacteristic + """ + return self._latency_characteristic + + @latency_characteristic.setter + def latency_characteristic(self, latency_characteristic: TapiTopologyLatencyCharacteristic): + """Sets the latency_characteristic of this TapiTopologyLatencyCharacteristicWrapper. + + + :param latency_characteristic: The latency_characteristic of this TapiTopologyLatencyCharacteristicWrapper. + :type latency_characteristic: TapiTopologyLatencyCharacteristic + """ + + self._latency_characteristic = latency_characteristic diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_layer_protocol_transition_pac.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_layer_protocol_transition_pac.py new file mode 100644 index 0000000000000000000000000000000000000000..3b3cda712be5b822740c7deb404ee17c32b6e264 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_layer_protocol_transition_pac.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyLayerProtocolTransitionPac(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, transitioned_layer_protocol_name: List[str]=None): # noqa: E501 + """TapiTopologyLayerProtocolTransitionPac - a model defined in Swagger + + :param transitioned_layer_protocol_name: The transitioned_layer_protocol_name of this TapiTopologyLayerProtocolTransitionPac. # noqa: E501 + :type transitioned_layer_protocol_name: List[str] + """ + self.swagger_types = { + 'transitioned_layer_protocol_name': List[str] + } + + self.attribute_map = { + 'transitioned_layer_protocol_name': 'transitioned-layer-protocol-name' + } + self._transitioned_layer_protocol_name = transitioned_layer_protocol_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyLayerProtocolTransitionPac': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.LayerProtocolTransitionPac of this TapiTopologyLayerProtocolTransitionPac. # noqa: E501 + :rtype: TapiTopologyLayerProtocolTransitionPac + """ + return util.deserialize_model(dikt, cls) + + @property + def transitioned_layer_protocol_name(self) -> List[str]: + """Gets the transitioned_layer_protocol_name of this TapiTopologyLayerProtocolTransitionPac. + + Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role. # noqa: E501 + + :return: The transitioned_layer_protocol_name of this TapiTopologyLayerProtocolTransitionPac. + :rtype: List[str] + """ + return self._transitioned_layer_protocol_name + + @transitioned_layer_protocol_name.setter + def transitioned_layer_protocol_name(self, transitioned_layer_protocol_name: List[str]): + """Sets the transitioned_layer_protocol_name of this TapiTopologyLayerProtocolTransitionPac. + + Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role. # noqa: E501 + + :param transitioned_layer_protocol_name: The transitioned_layer_protocol_name of this TapiTopologyLayerProtocolTransitionPac. + :type transitioned_layer_protocol_name: List[str] + """ + + self._transitioned_layer_protocol_name = transitioned_layer_protocol_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_link.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_link.py new file mode 100644 index 0000000000000000000000000000000000000000..0bf0baf8e189132d6b6a0e76e9f0852acdd02746 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_link.py @@ -0,0 +1,660 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_admin_state_pac import TapiCommonAdminStatePac # noqa: F401,E501 +from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity_pac import TapiCommonCapacityPac # noqa: F401,E501 +from tapi_server.models.tapi_common_forwarding_direction import TapiCommonForwardingDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server.models.tapi_topology_cost_characteristic import TapiTopologyCostCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_layer_protocol_transition_pac import TapiTopologyLayerProtocolTransitionPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef # noqa: F401,E501 +from tapi_server.models.tapi_topology_resilience_type import TapiTopologyResilienceType # noqa: F401,E501 +from tapi_server.models.tapi_topology_risk_characteristic import TapiTopologyRiskCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_risk_parameter_pac import TapiTopologyRiskParameterPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_cost_pac import TapiTopologyTransferCostPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_integrity_pac import TapiTopologyTransferIntegrityPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_timing_pac import TapiTopologyTransferTimingPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_validation_mechanism import TapiTopologyValidationMechanism # noqa: F401,E501 +from tapi_server.models.tapi_topology_validation_pac import TapiTopologyValidationPac # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyLink(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, available_capacity: TapiCommonCapacity=None, total_potential_capacity: TapiCommonCapacity=None, name: List[TapiCommonNameAndValue]=None, uuid: str=None, transitioned_layer_protocol_name: List[str]=None, risk_characteristic: List[TapiTopologyRiskCharacteristic]=None, cost_characteristic: List[TapiTopologyCostCharacteristic]=None, error_characteristic: str=None, unavailable_time_characteristic: str=None, server_integrity_process_characteristic: str=None, delivery_order_characteristic: str=None, repeat_delivery_characteristic: str=None, loss_characteristic: str=None, latency_characteristic: List[TapiTopologyLatencyCharacteristic]=None, validation_mechanism: List[TapiTopologyValidationMechanism]=None, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, administrative_state: TapiCommonAdministrativeState=None, layer_protocol_name: List[TapiCommonLayerProtocolName]=None, resilience_type: TapiTopologyResilienceType=None, node_edge_point: List[TapiTopologyNodeEdgePointRef]=None, direction: TapiCommonForwardingDirection=None): # noqa: E501 + """TapiTopologyLink - a model defined in Swagger + + :param available_capacity: The available_capacity of this TapiTopologyLink. # noqa: E501 + :type available_capacity: TapiCommonCapacity + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyLink. # noqa: E501 + :type total_potential_capacity: TapiCommonCapacity + :param name: The name of this TapiTopologyLink. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiTopologyLink. # noqa: E501 + :type uuid: str + :param transitioned_layer_protocol_name: The transitioned_layer_protocol_name of this TapiTopologyLink. # noqa: E501 + :type transitioned_layer_protocol_name: List[str] + :param risk_characteristic: The risk_characteristic of this TapiTopologyLink. # noqa: E501 + :type risk_characteristic: List[TapiTopologyRiskCharacteristic] + :param cost_characteristic: The cost_characteristic of this TapiTopologyLink. # noqa: E501 + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + :param error_characteristic: The error_characteristic of this TapiTopologyLink. # noqa: E501 + :type error_characteristic: str + :param unavailable_time_characteristic: The unavailable_time_characteristic of this TapiTopologyLink. # noqa: E501 + :type unavailable_time_characteristic: str + :param server_integrity_process_characteristic: The server_integrity_process_characteristic of this TapiTopologyLink. # noqa: E501 + :type server_integrity_process_characteristic: str + :param delivery_order_characteristic: The delivery_order_characteristic of this TapiTopologyLink. # noqa: E501 + :type delivery_order_characteristic: str + :param repeat_delivery_characteristic: The repeat_delivery_characteristic of this TapiTopologyLink. # noqa: E501 + :type repeat_delivery_characteristic: str + :param loss_characteristic: The loss_characteristic of this TapiTopologyLink. # noqa: E501 + :type loss_characteristic: str + :param latency_characteristic: The latency_characteristic of this TapiTopologyLink. # noqa: E501 + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + :param validation_mechanism: The validation_mechanism of this TapiTopologyLink. # noqa: E501 + :type validation_mechanism: List[TapiTopologyValidationMechanism] + :param operational_state: The operational_state of this TapiTopologyLink. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiTopologyLink. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + :param administrative_state: The administrative_state of this TapiTopologyLink. # noqa: E501 + :type administrative_state: TapiCommonAdministrativeState + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyLink. # noqa: E501 + :type layer_protocol_name: List[TapiCommonLayerProtocolName] + :param resilience_type: The resilience_type of this TapiTopologyLink. # noqa: E501 + :type resilience_type: TapiTopologyResilienceType + :param node_edge_point: The node_edge_point of this TapiTopologyLink. # noqa: E501 + :type node_edge_point: List[TapiTopologyNodeEdgePointRef] + :param direction: The direction of this TapiTopologyLink. # noqa: E501 + :type direction: TapiCommonForwardingDirection + """ + self.swagger_types = { + 'available_capacity': TapiCommonCapacity, + 'total_potential_capacity': TapiCommonCapacity, + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'transitioned_layer_protocol_name': List[str], + 'risk_characteristic': List[TapiTopologyRiskCharacteristic], + 'cost_characteristic': List[TapiTopologyCostCharacteristic], + 'error_characteristic': str, + 'unavailable_time_characteristic': str, + 'server_integrity_process_characteristic': str, + 'delivery_order_characteristic': str, + 'repeat_delivery_characteristic': str, + 'loss_characteristic': str, + 'latency_characteristic': List[TapiTopologyLatencyCharacteristic], + 'validation_mechanism': List[TapiTopologyValidationMechanism], + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState, + 'administrative_state': TapiCommonAdministrativeState, + 'layer_protocol_name': List[TapiCommonLayerProtocolName], + 'resilience_type': TapiTopologyResilienceType, + 'node_edge_point': List[TapiTopologyNodeEdgePointRef], + 'direction': TapiCommonForwardingDirection + } + + self.attribute_map = { + 'available_capacity': 'available-capacity', + 'total_potential_capacity': 'total-potential-capacity', + 'name': 'name', + 'uuid': 'uuid', + 'transitioned_layer_protocol_name': 'transitioned-layer-protocol-name', + 'risk_characteristic': 'risk-characteristic', + 'cost_characteristic': 'cost-characteristic', + 'error_characteristic': 'error-characteristic', + 'unavailable_time_characteristic': 'unavailable-time-characteristic', + 'server_integrity_process_characteristic': 'server-integrity-process-characteristic', + 'delivery_order_characteristic': 'delivery-order-characteristic', + 'repeat_delivery_characteristic': 'repeat-delivery-characteristic', + 'loss_characteristic': 'loss-characteristic', + 'latency_characteristic': 'latency-characteristic', + 'validation_mechanism': 'validation-mechanism', + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state', + 'administrative_state': 'administrative-state', + 'layer_protocol_name': 'layer-protocol-name', + 'resilience_type': 'resilience-type', + 'node_edge_point': 'node-edge-point', + 'direction': 'direction' + } + self._available_capacity = available_capacity + self._total_potential_capacity = total_potential_capacity + self._name = name + self._uuid = uuid + self._transitioned_layer_protocol_name = transitioned_layer_protocol_name + self._risk_characteristic = risk_characteristic + self._cost_characteristic = cost_characteristic + self._error_characteristic = error_characteristic + self._unavailable_time_characteristic = unavailable_time_characteristic + self._server_integrity_process_characteristic = server_integrity_process_characteristic + self._delivery_order_characteristic = delivery_order_characteristic + self._repeat_delivery_characteristic = repeat_delivery_characteristic + self._loss_characteristic = loss_characteristic + self._latency_characteristic = latency_characteristic + self._validation_mechanism = validation_mechanism + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + self._administrative_state = administrative_state + self._layer_protocol_name = layer_protocol_name + self._resilience_type = resilience_type + self._node_edge_point = node_edge_point + self._direction = direction + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyLink': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.Link of this TapiTopologyLink. # noqa: E501 + :rtype: TapiTopologyLink + """ + return util.deserialize_model(dikt, cls) + + @property + def available_capacity(self) -> TapiCommonCapacity: + """Gets the available_capacity of this TapiTopologyLink. + + + :return: The available_capacity of this TapiTopologyLink. + :rtype: TapiCommonCapacity + """ + return self._available_capacity + + @available_capacity.setter + def available_capacity(self, available_capacity: TapiCommonCapacity): + """Sets the available_capacity of this TapiTopologyLink. + + + :param available_capacity: The available_capacity of this TapiTopologyLink. + :type available_capacity: TapiCommonCapacity + """ + + self._available_capacity = available_capacity + + @property + def total_potential_capacity(self) -> TapiCommonCapacity: + """Gets the total_potential_capacity of this TapiTopologyLink. + + + :return: The total_potential_capacity of this TapiTopologyLink. + :rtype: TapiCommonCapacity + """ + return self._total_potential_capacity + + @total_potential_capacity.setter + def total_potential_capacity(self, total_potential_capacity: TapiCommonCapacity): + """Sets the total_potential_capacity of this TapiTopologyLink. + + + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyLink. + :type total_potential_capacity: TapiCommonCapacity + """ + + self._total_potential_capacity = total_potential_capacity + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiTopologyLink. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiTopologyLink. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiTopologyLink. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiTopologyLink. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiTopologyLink. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiTopologyLink. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiTopologyLink. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiTopologyLink. + :type uuid: str + """ + + self._uuid = uuid + + @property + def transitioned_layer_protocol_name(self) -> List[str]: + """Gets the transitioned_layer_protocol_name of this TapiTopologyLink. + + Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role. # noqa: E501 + + :return: The transitioned_layer_protocol_name of this TapiTopologyLink. + :rtype: List[str] + """ + return self._transitioned_layer_protocol_name + + @transitioned_layer_protocol_name.setter + def transitioned_layer_protocol_name(self, transitioned_layer_protocol_name: List[str]): + """Sets the transitioned_layer_protocol_name of this TapiTopologyLink. + + Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role. # noqa: E501 + + :param transitioned_layer_protocol_name: The transitioned_layer_protocol_name of this TapiTopologyLink. + :type transitioned_layer_protocol_name: List[str] + """ + + self._transitioned_layer_protocol_name = transitioned_layer_protocol_name + + @property + def risk_characteristic(self) -> List[TapiTopologyRiskCharacteristic]: + """Gets the risk_characteristic of this TapiTopologyLink. + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :return: The risk_characteristic of this TapiTopologyLink. + :rtype: List[TapiTopologyRiskCharacteristic] + """ + return self._risk_characteristic + + @risk_characteristic.setter + def risk_characteristic(self, risk_characteristic: List[TapiTopologyRiskCharacteristic]): + """Sets the risk_characteristic of this TapiTopologyLink. + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :param risk_characteristic: The risk_characteristic of this TapiTopologyLink. + :type risk_characteristic: List[TapiTopologyRiskCharacteristic] + """ + + self._risk_characteristic = risk_characteristic + + @property + def cost_characteristic(self) -> List[TapiTopologyCostCharacteristic]: + """Gets the cost_characteristic of this TapiTopologyLink. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :return: The cost_characteristic of this TapiTopologyLink. + :rtype: List[TapiTopologyCostCharacteristic] + """ + return self._cost_characteristic + + @cost_characteristic.setter + def cost_characteristic(self, cost_characteristic: List[TapiTopologyCostCharacteristic]): + """Sets the cost_characteristic of this TapiTopologyLink. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param cost_characteristic: The cost_characteristic of this TapiTopologyLink. + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + """ + + self._cost_characteristic = cost_characteristic + + @property + def error_characteristic(self) -> str: + """Gets the error_characteristic of this TapiTopologyLink. + + Describes the degree to which the signal propagated can be errored. Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded. # noqa: E501 + + :return: The error_characteristic of this TapiTopologyLink. + :rtype: str + """ + return self._error_characteristic + + @error_characteristic.setter + def error_characteristic(self, error_characteristic: str): + """Sets the error_characteristic of this TapiTopologyLink. + + Describes the degree to which the signal propagated can be errored. Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded. # noqa: E501 + + :param error_characteristic: The error_characteristic of this TapiTopologyLink. + :type error_characteristic: str + """ + + self._error_characteristic = error_characteristic + + @property + def unavailable_time_characteristic(self) -> str: + """Gets the unavailable_time_characteristic of this TapiTopologyLink. + + Describes the duration for which there may be no valid signal propagated. # noqa: E501 + + :return: The unavailable_time_characteristic of this TapiTopologyLink. + :rtype: str + """ + return self._unavailable_time_characteristic + + @unavailable_time_characteristic.setter + def unavailable_time_characteristic(self, unavailable_time_characteristic: str): + """Sets the unavailable_time_characteristic of this TapiTopologyLink. + + Describes the duration for which there may be no valid signal propagated. # noqa: E501 + + :param unavailable_time_characteristic: The unavailable_time_characteristic of this TapiTopologyLink. + :type unavailable_time_characteristic: str + """ + + self._unavailable_time_characteristic = unavailable_time_characteristic + + @property + def server_integrity_process_characteristic(self) -> str: + """Gets the server_integrity_process_characteristic of this TapiTopologyLink. + + Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity. # noqa: E501 + + :return: The server_integrity_process_characteristic of this TapiTopologyLink. + :rtype: str + """ + return self._server_integrity_process_characteristic + + @server_integrity_process_characteristic.setter + def server_integrity_process_characteristic(self, server_integrity_process_characteristic: str): + """Sets the server_integrity_process_characteristic of this TapiTopologyLink. + + Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity. # noqa: E501 + + :param server_integrity_process_characteristic: The server_integrity_process_characteristic of this TapiTopologyLink. + :type server_integrity_process_characteristic: str + """ + + self._server_integrity_process_characteristic = server_integrity_process_characteristic + + @property + def delivery_order_characteristic(self) -> str: + """Gets the delivery_order_characteristic of this TapiTopologyLink. + + Describes the degree to which packets will be delivered out of sequence. Does not apply to TDM as the TDM protocols maintain strict order. # noqa: E501 + + :return: The delivery_order_characteristic of this TapiTopologyLink. + :rtype: str + """ + return self._delivery_order_characteristic + + @delivery_order_characteristic.setter + def delivery_order_characteristic(self, delivery_order_characteristic: str): + """Sets the delivery_order_characteristic of this TapiTopologyLink. + + Describes the degree to which packets will be delivered out of sequence. Does not apply to TDM as the TDM protocols maintain strict order. # noqa: E501 + + :param delivery_order_characteristic: The delivery_order_characteristic of this TapiTopologyLink. + :type delivery_order_characteristic: str + """ + + self._delivery_order_characteristic = delivery_order_characteristic + + @property + def repeat_delivery_characteristic(self) -> str: + """Gets the repeat_delivery_characteristic of this TapiTopologyLink. + + Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example). It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay. # noqa: E501 + + :return: The repeat_delivery_characteristic of this TapiTopologyLink. + :rtype: str + """ + return self._repeat_delivery_characteristic + + @repeat_delivery_characteristic.setter + def repeat_delivery_characteristic(self, repeat_delivery_characteristic: str): + """Sets the repeat_delivery_characteristic of this TapiTopologyLink. + + Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example). It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay. # noqa: E501 + + :param repeat_delivery_characteristic: The repeat_delivery_characteristic of this TapiTopologyLink. + :type repeat_delivery_characteristic: str + """ + + self._repeat_delivery_characteristic = repeat_delivery_characteristic + + @property + def loss_characteristic(self) -> str: + """Gets the loss_characteristic of this TapiTopologyLink. + + Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow. Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips). # noqa: E501 + + :return: The loss_characteristic of this TapiTopologyLink. + :rtype: str + """ + return self._loss_characteristic + + @loss_characteristic.setter + def loss_characteristic(self, loss_characteristic: str): + """Sets the loss_characteristic of this TapiTopologyLink. + + Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow. Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips). # noqa: E501 + + :param loss_characteristic: The loss_characteristic of this TapiTopologyLink. + :type loss_characteristic: str + """ + + self._loss_characteristic = loss_characteristic + + @property + def latency_characteristic(self) -> List[TapiTopologyLatencyCharacteristic]: + """Gets the latency_characteristic of this TapiTopologyLink. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :return: The latency_characteristic of this TapiTopologyLink. + :rtype: List[TapiTopologyLatencyCharacteristic] + """ + return self._latency_characteristic + + @latency_characteristic.setter + def latency_characteristic(self, latency_characteristic: List[TapiTopologyLatencyCharacteristic]): + """Sets the latency_characteristic of this TapiTopologyLink. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param latency_characteristic: The latency_characteristic of this TapiTopologyLink. + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + """ + + self._latency_characteristic = latency_characteristic + + @property + def validation_mechanism(self) -> List[TapiTopologyValidationMechanism]: + """Gets the validation_mechanism of this TapiTopologyLink. + + Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity. # noqa: E501 + + :return: The validation_mechanism of this TapiTopologyLink. + :rtype: List[TapiTopologyValidationMechanism] + """ + return self._validation_mechanism + + @validation_mechanism.setter + def validation_mechanism(self, validation_mechanism: List[TapiTopologyValidationMechanism]): + """Sets the validation_mechanism of this TapiTopologyLink. + + Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity. # noqa: E501 + + :param validation_mechanism: The validation_mechanism of this TapiTopologyLink. + :type validation_mechanism: List[TapiTopologyValidationMechanism] + """ + + self._validation_mechanism = validation_mechanism + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiTopologyLink. + + + :return: The operational_state of this TapiTopologyLink. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiTopologyLink. + + + :param operational_state: The operational_state of this TapiTopologyLink. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiTopologyLink. + + + :return: The lifecycle_state of this TapiTopologyLink. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiTopologyLink. + + + :param lifecycle_state: The lifecycle_state of this TapiTopologyLink. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state + + @property + def administrative_state(self) -> TapiCommonAdministrativeState: + """Gets the administrative_state of this TapiTopologyLink. + + + :return: The administrative_state of this TapiTopologyLink. + :rtype: TapiCommonAdministrativeState + """ + return self._administrative_state + + @administrative_state.setter + def administrative_state(self, administrative_state: TapiCommonAdministrativeState): + """Sets the administrative_state of this TapiTopologyLink. + + + :param administrative_state: The administrative_state of this TapiTopologyLink. + :type administrative_state: TapiCommonAdministrativeState + """ + + self._administrative_state = administrative_state + + @property + def layer_protocol_name(self) -> List[TapiCommonLayerProtocolName]: + """Gets the layer_protocol_name of this TapiTopologyLink. + + none # noqa: E501 + + :return: The layer_protocol_name of this TapiTopologyLink. + :rtype: List[TapiCommonLayerProtocolName] + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: List[TapiCommonLayerProtocolName]): + """Sets the layer_protocol_name of this TapiTopologyLink. + + none # noqa: E501 + + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyLink. + :type layer_protocol_name: List[TapiCommonLayerProtocolName] + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def resilience_type(self) -> TapiTopologyResilienceType: + """Gets the resilience_type of this TapiTopologyLink. + + + :return: The resilience_type of this TapiTopologyLink. + :rtype: TapiTopologyResilienceType + """ + return self._resilience_type + + @resilience_type.setter + def resilience_type(self, resilience_type: TapiTopologyResilienceType): + """Sets the resilience_type of this TapiTopologyLink. + + + :param resilience_type: The resilience_type of this TapiTopologyLink. + :type resilience_type: TapiTopologyResilienceType + """ + + self._resilience_type = resilience_type + + @property + def node_edge_point(self) -> List[TapiTopologyNodeEdgePointRef]: + """Gets the node_edge_point of this TapiTopologyLink. + + none # noqa: E501 + + :return: The node_edge_point of this TapiTopologyLink. + :rtype: List[TapiTopologyNodeEdgePointRef] + """ + return self._node_edge_point + + @node_edge_point.setter + def node_edge_point(self, node_edge_point: List[TapiTopologyNodeEdgePointRef]): + """Sets the node_edge_point of this TapiTopologyLink. + + none # noqa: E501 + + :param node_edge_point: The node_edge_point of this TapiTopologyLink. + :type node_edge_point: List[TapiTopologyNodeEdgePointRef] + """ + + self._node_edge_point = node_edge_point + + @property + def direction(self) -> TapiCommonForwardingDirection: + """Gets the direction of this TapiTopologyLink. + + + :return: The direction of this TapiTopologyLink. + :rtype: TapiCommonForwardingDirection + """ + return self._direction + + @direction.setter + def direction(self, direction: TapiCommonForwardingDirection): + """Sets the direction of this TapiTopologyLink. + + + :param direction: The direction of this TapiTopologyLink. + :type direction: TapiCommonForwardingDirection + """ + + self._direction = direction diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_link_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_link_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..ed81e9066a240509083b220e1984ff2b85d97b81 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_link_ref.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_topology_ref import TapiTopologyTopologyRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyLinkRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology_uuid: str=None, link_uuid: str=None): # noqa: E501 + """TapiTopologyLinkRef - a model defined in Swagger + + :param topology_uuid: The topology_uuid of this TapiTopologyLinkRef. # noqa: E501 + :type topology_uuid: str + :param link_uuid: The link_uuid of this TapiTopologyLinkRef. # noqa: E501 + :type link_uuid: str + """ + self.swagger_types = { + 'topology_uuid': str, + 'link_uuid': str + } + + self.attribute_map = { + 'topology_uuid': 'topology-uuid', + 'link_uuid': 'link-uuid' + } + self._topology_uuid = topology_uuid + self._link_uuid = link_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyLinkRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.LinkRef of this TapiTopologyLinkRef. # noqa: E501 + :rtype: TapiTopologyLinkRef + """ + return util.deserialize_model(dikt, cls) + + @property + def topology_uuid(self) -> str: + """Gets the topology_uuid of this TapiTopologyLinkRef. + + none # noqa: E501 + + :return: The topology_uuid of this TapiTopologyLinkRef. + :rtype: str + """ + return self._topology_uuid + + @topology_uuid.setter + def topology_uuid(self, topology_uuid: str): + """Sets the topology_uuid of this TapiTopologyLinkRef. + + none # noqa: E501 + + :param topology_uuid: The topology_uuid of this TapiTopologyLinkRef. + :type topology_uuid: str + """ + + self._topology_uuid = topology_uuid + + @property + def link_uuid(self) -> str: + """Gets the link_uuid of this TapiTopologyLinkRef. + + none # noqa: E501 + + :return: The link_uuid of this TapiTopologyLinkRef. + :rtype: str + """ + return self._link_uuid + + @link_uuid.setter + def link_uuid(self, link_uuid: str): + """Sets the link_uuid of this TapiTopologyLinkRef. + + none # noqa: E501 + + :param link_uuid: The link_uuid of this TapiTopologyLinkRef. + :type link_uuid: str + """ + + self._link_uuid = link_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_link_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_link_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..0b73647c83674ef1cd7b349eb3805583600c77d6 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_link_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_link_ref import TapiTopologyLinkRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyLinkRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, supported_client_link: TapiTopologyLinkRef=None): # noqa: E501 + """TapiTopologyLinkRefWrapper - a model defined in Swagger + + :param supported_client_link: The supported_client_link of this TapiTopologyLinkRefWrapper. # noqa: E501 + :type supported_client_link: TapiTopologyLinkRef + """ + self.swagger_types = { + 'supported_client_link': TapiTopologyLinkRef + } + + self.attribute_map = { + 'supported_client_link': 'supported-client-link' + } + self._supported_client_link = supported_client_link + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyLinkRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.LinkRefWrapper of this TapiTopologyLinkRefWrapper. # noqa: E501 + :rtype: TapiTopologyLinkRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def supported_client_link(self) -> TapiTopologyLinkRef: + """Gets the supported_client_link of this TapiTopologyLinkRefWrapper. + + + :return: The supported_client_link of this TapiTopologyLinkRefWrapper. + :rtype: TapiTopologyLinkRef + """ + return self._supported_client_link + + @supported_client_link.setter + def supported_client_link(self, supported_client_link: TapiTopologyLinkRef): + """Sets the supported_client_link of this TapiTopologyLinkRefWrapper. + + + :param supported_client_link: The supported_client_link of this TapiTopologyLinkRefWrapper. + :type supported_client_link: TapiTopologyLinkRef + """ + + self._supported_client_link = supported_client_link diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_link_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_link_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..5d58250c466930153cb01f9ef08fea18a5948ac7 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_link_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_link import TapiTopologyLink # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyLinkWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, link: TapiTopologyLink=None): # noqa: E501 + """TapiTopologyLinkWrapper - a model defined in Swagger + + :param link: The link of this TapiTopologyLinkWrapper. # noqa: E501 + :type link: TapiTopologyLink + """ + self.swagger_types = { + 'link': TapiTopologyLink + } + + self.attribute_map = { + 'link': 'link' + } + self._link = link + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyLinkWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.LinkWrapper of this TapiTopologyLinkWrapper. # noqa: E501 + :rtype: TapiTopologyLinkWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def link(self) -> TapiTopologyLink: + """Gets the link of this TapiTopologyLinkWrapper. + + + :return: The link of this TapiTopologyLinkWrapper. + :rtype: TapiTopologyLink + """ + return self._link + + @link.setter + def link(self, link: TapiTopologyLink): + """Sets the link of this TapiTopologyLinkWrapper. + + + :param link: The link of this TapiTopologyLinkWrapper. + :type link: TapiTopologyLink + """ + + self._link = link diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_network_topology_service.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_network_topology_service.py new file mode 100644 index 0000000000000000000000000000000000000000..10efcf4cff885aa9f3b55a9fe8aad87ab2c9579e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_network_topology_service.py @@ -0,0 +1,123 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_topology_topology_ref import TapiTopologyTopologyRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNetworkTopologyService(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None, topology: List[TapiTopologyTopologyRef]=None): # noqa: E501 + """TapiTopologyNetworkTopologyService - a model defined in Swagger + + :param name: The name of this TapiTopologyNetworkTopologyService. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiTopologyNetworkTopologyService. # noqa: E501 + :type uuid: str + :param topology: The topology of this TapiTopologyNetworkTopologyService. # noqa: E501 + :type topology: List[TapiTopologyTopologyRef] + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'topology': List[TapiTopologyTopologyRef] + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid', + 'topology': 'topology' + } + self._name = name + self._uuid = uuid + self._topology = topology + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNetworkTopologyService': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.NetworkTopologyService of this TapiTopologyNetworkTopologyService. # noqa: E501 + :rtype: TapiTopologyNetworkTopologyService + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiTopologyNetworkTopologyService. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiTopologyNetworkTopologyService. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiTopologyNetworkTopologyService. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiTopologyNetworkTopologyService. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiTopologyNetworkTopologyService. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiTopologyNetworkTopologyService. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiTopologyNetworkTopologyService. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiTopologyNetworkTopologyService. + :type uuid: str + """ + + self._uuid = uuid + + @property + def topology(self) -> List[TapiTopologyTopologyRef]: + """Gets the topology of this TapiTopologyNetworkTopologyService. + + none # noqa: E501 + + :return: The topology of this TapiTopologyNetworkTopologyService. + :rtype: List[TapiTopologyTopologyRef] + """ + return self._topology + + @topology.setter + def topology(self, topology: List[TapiTopologyTopologyRef]): + """Sets the topology of this TapiTopologyNetworkTopologyService. + + none # noqa: E501 + + :param topology: The topology of this TapiTopologyNetworkTopologyService. + :type topology: List[TapiTopologyTopologyRef] + """ + + self._topology = topology diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_network_topology_service_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_network_topology_service_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..94f5e23596501a016982cf55464d33b1bf2ccb90 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_network_topology_service_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_network_topology_service import TapiTopologyNetworkTopologyService # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNetworkTopologyServiceWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, nw_topology_service: TapiTopologyNetworkTopologyService=None): # noqa: E501 + """TapiTopologyNetworkTopologyServiceWrapper - a model defined in Swagger + + :param nw_topology_service: The nw_topology_service of this TapiTopologyNetworkTopologyServiceWrapper. # noqa: E501 + :type nw_topology_service: TapiTopologyNetworkTopologyService + """ + self.swagger_types = { + 'nw_topology_service': TapiTopologyNetworkTopologyService + } + + self.attribute_map = { + 'nw_topology_service': 'nw-topology-service' + } + self._nw_topology_service = nw_topology_service + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNetworkTopologyServiceWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.NetworkTopologyServiceWrapper of this TapiTopologyNetworkTopologyServiceWrapper. # noqa: E501 + :rtype: TapiTopologyNetworkTopologyServiceWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def nw_topology_service(self) -> TapiTopologyNetworkTopologyService: + """Gets the nw_topology_service of this TapiTopologyNetworkTopologyServiceWrapper. + + + :return: The nw_topology_service of this TapiTopologyNetworkTopologyServiceWrapper. + :rtype: TapiTopologyNetworkTopologyService + """ + return self._nw_topology_service + + @nw_topology_service.setter + def nw_topology_service(self, nw_topology_service: TapiTopologyNetworkTopologyService): + """Sets the nw_topology_service of this TapiTopologyNetworkTopologyServiceWrapper. + + + :param nw_topology_service: The nw_topology_service of this TapiTopologyNetworkTopologyServiceWrapper. + :type nw_topology_service: TapiTopologyNetworkTopologyService + """ + + self._nw_topology_service = nw_topology_service diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node.py new file mode 100644 index 0000000000000000000000000000000000000000..2a71716d759bcf98749188ccb630be0ad29472d4 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node.py @@ -0,0 +1,602 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_admin_state_pac import TapiCommonAdminStatePac # noqa: F401,E501 +from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity_pac import TapiCommonCapacityPac # noqa: F401,E501 +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server.models.tapi_topology_cost_characteristic import TapiTopologyCostCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_edge_point import TapiTopologyNodeEdgePoint # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_rule_group import TapiTopologyNodeRuleGroup # noqa: F401,E501 +from tapi_server.models.tapi_topology_topology_ref import TapiTopologyTopologyRef # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_cost_pac import TapiTopologyTransferCostPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_integrity_pac import TapiTopologyTransferIntegrityPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_timing_pac import TapiTopologyTransferTimingPac # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNode(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, available_capacity: TapiCommonCapacity=None, total_potential_capacity: TapiCommonCapacity=None, name: List[TapiCommonNameAndValue]=None, uuid: str=None, cost_characteristic: List[TapiTopologyCostCharacteristic]=None, error_characteristic: str=None, unavailable_time_characteristic: str=None, server_integrity_process_characteristic: str=None, delivery_order_characteristic: str=None, repeat_delivery_characteristic: str=None, loss_characteristic: str=None, latency_characteristic: List[TapiTopologyLatencyCharacteristic]=None, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, administrative_state: TapiCommonAdministrativeState=None, layer_protocol_name: List[TapiCommonLayerProtocolName]=None, encap_topology: TapiTopologyTopologyRef=None, owned_node_edge_point: List[TapiTopologyNodeEdgePoint]=None, node_rule_group: List[TapiTopologyNodeRuleGroup]=None, aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef]=None): # noqa: E501 + """TapiTopologyNode - a model defined in Swagger + + :param available_capacity: The available_capacity of this TapiTopologyNode. # noqa: E501 + :type available_capacity: TapiCommonCapacity + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyNode. # noqa: E501 + :type total_potential_capacity: TapiCommonCapacity + :param name: The name of this TapiTopologyNode. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiTopologyNode. # noqa: E501 + :type uuid: str + :param cost_characteristic: The cost_characteristic of this TapiTopologyNode. # noqa: E501 + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + :param error_characteristic: The error_characteristic of this TapiTopologyNode. # noqa: E501 + :type error_characteristic: str + :param unavailable_time_characteristic: The unavailable_time_characteristic of this TapiTopologyNode. # noqa: E501 + :type unavailable_time_characteristic: str + :param server_integrity_process_characteristic: The server_integrity_process_characteristic of this TapiTopologyNode. # noqa: E501 + :type server_integrity_process_characteristic: str + :param delivery_order_characteristic: The delivery_order_characteristic of this TapiTopologyNode. # noqa: E501 + :type delivery_order_characteristic: str + :param repeat_delivery_characteristic: The repeat_delivery_characteristic of this TapiTopologyNode. # noqa: E501 + :type repeat_delivery_characteristic: str + :param loss_characteristic: The loss_characteristic of this TapiTopologyNode. # noqa: E501 + :type loss_characteristic: str + :param latency_characteristic: The latency_characteristic of this TapiTopologyNode. # noqa: E501 + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + :param operational_state: The operational_state of this TapiTopologyNode. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiTopologyNode. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + :param administrative_state: The administrative_state of this TapiTopologyNode. # noqa: E501 + :type administrative_state: TapiCommonAdministrativeState + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyNode. # noqa: E501 + :type layer_protocol_name: List[TapiCommonLayerProtocolName] + :param encap_topology: The encap_topology of this TapiTopologyNode. # noqa: E501 + :type encap_topology: TapiTopologyTopologyRef + :param owned_node_edge_point: The owned_node_edge_point of this TapiTopologyNode. # noqa: E501 + :type owned_node_edge_point: List[TapiTopologyNodeEdgePoint] + :param node_rule_group: The node_rule_group of this TapiTopologyNode. # noqa: E501 + :type node_rule_group: List[TapiTopologyNodeRuleGroup] + :param aggregated_node_edge_point: The aggregated_node_edge_point of this TapiTopologyNode. # noqa: E501 + :type aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef] + """ + self.swagger_types = { + 'available_capacity': TapiCommonCapacity, + 'total_potential_capacity': TapiCommonCapacity, + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'cost_characteristic': List[TapiTopologyCostCharacteristic], + 'error_characteristic': str, + 'unavailable_time_characteristic': str, + 'server_integrity_process_characteristic': str, + 'delivery_order_characteristic': str, + 'repeat_delivery_characteristic': str, + 'loss_characteristic': str, + 'latency_characteristic': List[TapiTopologyLatencyCharacteristic], + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState, + 'administrative_state': TapiCommonAdministrativeState, + 'layer_protocol_name': List[TapiCommonLayerProtocolName], + 'encap_topology': TapiTopologyTopologyRef, + 'owned_node_edge_point': List[TapiTopologyNodeEdgePoint], + 'node_rule_group': List[TapiTopologyNodeRuleGroup], + 'aggregated_node_edge_point': List[TapiTopologyNodeEdgePointRef] + } + + self.attribute_map = { + 'available_capacity': 'available-capacity', + 'total_potential_capacity': 'total-potential-capacity', + 'name': 'name', + 'uuid': 'uuid', + 'cost_characteristic': 'cost-characteristic', + 'error_characteristic': 'error-characteristic', + 'unavailable_time_characteristic': 'unavailable-time-characteristic', + 'server_integrity_process_characteristic': 'server-integrity-process-characteristic', + 'delivery_order_characteristic': 'delivery-order-characteristic', + 'repeat_delivery_characteristic': 'repeat-delivery-characteristic', + 'loss_characteristic': 'loss-characteristic', + 'latency_characteristic': 'latency-characteristic', + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state', + 'administrative_state': 'administrative-state', + 'layer_protocol_name': 'layer-protocol-name', + 'encap_topology': 'encap-topology', + 'owned_node_edge_point': 'owned-node-edge-point', + 'node_rule_group': 'node-rule-group', + 'aggregated_node_edge_point': 'aggregated-node-edge-point' + } + self._available_capacity = available_capacity + self._total_potential_capacity = total_potential_capacity + self._name = name + self._uuid = uuid + self._cost_characteristic = cost_characteristic + self._error_characteristic = error_characteristic + self._unavailable_time_characteristic = unavailable_time_characteristic + self._server_integrity_process_characteristic = server_integrity_process_characteristic + self._delivery_order_characteristic = delivery_order_characteristic + self._repeat_delivery_characteristic = repeat_delivery_characteristic + self._loss_characteristic = loss_characteristic + self._latency_characteristic = latency_characteristic + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + self._administrative_state = administrative_state + self._layer_protocol_name = layer_protocol_name + self._encap_topology = encap_topology + self._owned_node_edge_point = owned_node_edge_point + self._node_rule_group = node_rule_group + self._aggregated_node_edge_point = aggregated_node_edge_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNode': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.Node of this TapiTopologyNode. # noqa: E501 + :rtype: TapiTopologyNode + """ + return util.deserialize_model(dikt, cls) + + @property + def available_capacity(self) -> TapiCommonCapacity: + """Gets the available_capacity of this TapiTopologyNode. + + + :return: The available_capacity of this TapiTopologyNode. + :rtype: TapiCommonCapacity + """ + return self._available_capacity + + @available_capacity.setter + def available_capacity(self, available_capacity: TapiCommonCapacity): + """Sets the available_capacity of this TapiTopologyNode. + + + :param available_capacity: The available_capacity of this TapiTopologyNode. + :type available_capacity: TapiCommonCapacity + """ + + self._available_capacity = available_capacity + + @property + def total_potential_capacity(self) -> TapiCommonCapacity: + """Gets the total_potential_capacity of this TapiTopologyNode. + + + :return: The total_potential_capacity of this TapiTopologyNode. + :rtype: TapiCommonCapacity + """ + return self._total_potential_capacity + + @total_potential_capacity.setter + def total_potential_capacity(self, total_potential_capacity: TapiCommonCapacity): + """Sets the total_potential_capacity of this TapiTopologyNode. + + + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyNode. + :type total_potential_capacity: TapiCommonCapacity + """ + + self._total_potential_capacity = total_potential_capacity + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiTopologyNode. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiTopologyNode. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiTopologyNode. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiTopologyNode. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiTopologyNode. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiTopologyNode. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiTopologyNode. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiTopologyNode. + :type uuid: str + """ + + self._uuid = uuid + + @property + def cost_characteristic(self) -> List[TapiTopologyCostCharacteristic]: + """Gets the cost_characteristic of this TapiTopologyNode. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :return: The cost_characteristic of this TapiTopologyNode. + :rtype: List[TapiTopologyCostCharacteristic] + """ + return self._cost_characteristic + + @cost_characteristic.setter + def cost_characteristic(self, cost_characteristic: List[TapiTopologyCostCharacteristic]): + """Sets the cost_characteristic of this TapiTopologyNode. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param cost_characteristic: The cost_characteristic of this TapiTopologyNode. + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + """ + + self._cost_characteristic = cost_characteristic + + @property + def error_characteristic(self) -> str: + """Gets the error_characteristic of this TapiTopologyNode. + + Describes the degree to which the signal propagated can be errored. Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded. # noqa: E501 + + :return: The error_characteristic of this TapiTopologyNode. + :rtype: str + """ + return self._error_characteristic + + @error_characteristic.setter + def error_characteristic(self, error_characteristic: str): + """Sets the error_characteristic of this TapiTopologyNode. + + Describes the degree to which the signal propagated can be errored. Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded. # noqa: E501 + + :param error_characteristic: The error_characteristic of this TapiTopologyNode. + :type error_characteristic: str + """ + + self._error_characteristic = error_characteristic + + @property + def unavailable_time_characteristic(self) -> str: + """Gets the unavailable_time_characteristic of this TapiTopologyNode. + + Describes the duration for which there may be no valid signal propagated. # noqa: E501 + + :return: The unavailable_time_characteristic of this TapiTopologyNode. + :rtype: str + """ + return self._unavailable_time_characteristic + + @unavailable_time_characteristic.setter + def unavailable_time_characteristic(self, unavailable_time_characteristic: str): + """Sets the unavailable_time_characteristic of this TapiTopologyNode. + + Describes the duration for which there may be no valid signal propagated. # noqa: E501 + + :param unavailable_time_characteristic: The unavailable_time_characteristic of this TapiTopologyNode. + :type unavailable_time_characteristic: str + """ + + self._unavailable_time_characteristic = unavailable_time_characteristic + + @property + def server_integrity_process_characteristic(self) -> str: + """Gets the server_integrity_process_characteristic of this TapiTopologyNode. + + Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity. # noqa: E501 + + :return: The server_integrity_process_characteristic of this TapiTopologyNode. + :rtype: str + """ + return self._server_integrity_process_characteristic + + @server_integrity_process_characteristic.setter + def server_integrity_process_characteristic(self, server_integrity_process_characteristic: str): + """Sets the server_integrity_process_characteristic of this TapiTopologyNode. + + Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity. # noqa: E501 + + :param server_integrity_process_characteristic: The server_integrity_process_characteristic of this TapiTopologyNode. + :type server_integrity_process_characteristic: str + """ + + self._server_integrity_process_characteristic = server_integrity_process_characteristic + + @property + def delivery_order_characteristic(self) -> str: + """Gets the delivery_order_characteristic of this TapiTopologyNode. + + Describes the degree to which packets will be delivered out of sequence. Does not apply to TDM as the TDM protocols maintain strict order. # noqa: E501 + + :return: The delivery_order_characteristic of this TapiTopologyNode. + :rtype: str + """ + return self._delivery_order_characteristic + + @delivery_order_characteristic.setter + def delivery_order_characteristic(self, delivery_order_characteristic: str): + """Sets the delivery_order_characteristic of this TapiTopologyNode. + + Describes the degree to which packets will be delivered out of sequence. Does not apply to TDM as the TDM protocols maintain strict order. # noqa: E501 + + :param delivery_order_characteristic: The delivery_order_characteristic of this TapiTopologyNode. + :type delivery_order_characteristic: str + """ + + self._delivery_order_characteristic = delivery_order_characteristic + + @property + def repeat_delivery_characteristic(self) -> str: + """Gets the repeat_delivery_characteristic of this TapiTopologyNode. + + Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example). It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay. # noqa: E501 + + :return: The repeat_delivery_characteristic of this TapiTopologyNode. + :rtype: str + """ + return self._repeat_delivery_characteristic + + @repeat_delivery_characteristic.setter + def repeat_delivery_characteristic(self, repeat_delivery_characteristic: str): + """Sets the repeat_delivery_characteristic of this TapiTopologyNode. + + Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example). It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay. # noqa: E501 + + :param repeat_delivery_characteristic: The repeat_delivery_characteristic of this TapiTopologyNode. + :type repeat_delivery_characteristic: str + """ + + self._repeat_delivery_characteristic = repeat_delivery_characteristic + + @property + def loss_characteristic(self) -> str: + """Gets the loss_characteristic of this TapiTopologyNode. + + Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow. Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips). # noqa: E501 + + :return: The loss_characteristic of this TapiTopologyNode. + :rtype: str + """ + return self._loss_characteristic + + @loss_characteristic.setter + def loss_characteristic(self, loss_characteristic: str): + """Sets the loss_characteristic of this TapiTopologyNode. + + Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow. Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips). # noqa: E501 + + :param loss_characteristic: The loss_characteristic of this TapiTopologyNode. + :type loss_characteristic: str + """ + + self._loss_characteristic = loss_characteristic + + @property + def latency_characteristic(self) -> List[TapiTopologyLatencyCharacteristic]: + """Gets the latency_characteristic of this TapiTopologyNode. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :return: The latency_characteristic of this TapiTopologyNode. + :rtype: List[TapiTopologyLatencyCharacteristic] + """ + return self._latency_characteristic + + @latency_characteristic.setter + def latency_characteristic(self, latency_characteristic: List[TapiTopologyLatencyCharacteristic]): + """Sets the latency_characteristic of this TapiTopologyNode. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param latency_characteristic: The latency_characteristic of this TapiTopologyNode. + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + """ + + self._latency_characteristic = latency_characteristic + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiTopologyNode. + + + :return: The operational_state of this TapiTopologyNode. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiTopologyNode. + + + :param operational_state: The operational_state of this TapiTopologyNode. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiTopologyNode. + + + :return: The lifecycle_state of this TapiTopologyNode. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiTopologyNode. + + + :param lifecycle_state: The lifecycle_state of this TapiTopologyNode. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state + + @property + def administrative_state(self) -> TapiCommonAdministrativeState: + """Gets the administrative_state of this TapiTopologyNode. + + + :return: The administrative_state of this TapiTopologyNode. + :rtype: TapiCommonAdministrativeState + """ + return self._administrative_state + + @administrative_state.setter + def administrative_state(self, administrative_state: TapiCommonAdministrativeState): + """Sets the administrative_state of this TapiTopologyNode. + + + :param administrative_state: The administrative_state of this TapiTopologyNode. + :type administrative_state: TapiCommonAdministrativeState + """ + + self._administrative_state = administrative_state + + @property + def layer_protocol_name(self) -> List[TapiCommonLayerProtocolName]: + """Gets the layer_protocol_name of this TapiTopologyNode. + + none # noqa: E501 + + :return: The layer_protocol_name of this TapiTopologyNode. + :rtype: List[TapiCommonLayerProtocolName] + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: List[TapiCommonLayerProtocolName]): + """Sets the layer_protocol_name of this TapiTopologyNode. + + none # noqa: E501 + + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyNode. + :type layer_protocol_name: List[TapiCommonLayerProtocolName] + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def encap_topology(self) -> TapiTopologyTopologyRef: + """Gets the encap_topology of this TapiTopologyNode. + + + :return: The encap_topology of this TapiTopologyNode. + :rtype: TapiTopologyTopologyRef + """ + return self._encap_topology + + @encap_topology.setter + def encap_topology(self, encap_topology: TapiTopologyTopologyRef): + """Sets the encap_topology of this TapiTopologyNode. + + + :param encap_topology: The encap_topology of this TapiTopologyNode. + :type encap_topology: TapiTopologyTopologyRef + """ + + self._encap_topology = encap_topology + + @property + def owned_node_edge_point(self) -> List[TapiTopologyNodeEdgePoint]: + """Gets the owned_node_edge_point of this TapiTopologyNode. + + none # noqa: E501 + + :return: The owned_node_edge_point of this TapiTopologyNode. + :rtype: List[TapiTopologyNodeEdgePoint] + """ + return self._owned_node_edge_point + + @owned_node_edge_point.setter + def owned_node_edge_point(self, owned_node_edge_point: List[TapiTopologyNodeEdgePoint]): + """Sets the owned_node_edge_point of this TapiTopologyNode. + + none # noqa: E501 + + :param owned_node_edge_point: The owned_node_edge_point of this TapiTopologyNode. + :type owned_node_edge_point: List[TapiTopologyNodeEdgePoint] + """ + + self._owned_node_edge_point = owned_node_edge_point + + @property + def node_rule_group(self) -> List[TapiTopologyNodeRuleGroup]: + """Gets the node_rule_group of this TapiTopologyNode. + + none # noqa: E501 + + :return: The node_rule_group of this TapiTopologyNode. + :rtype: List[TapiTopologyNodeRuleGroup] + """ + return self._node_rule_group + + @node_rule_group.setter + def node_rule_group(self, node_rule_group: List[TapiTopologyNodeRuleGroup]): + """Sets the node_rule_group of this TapiTopologyNode. + + none # noqa: E501 + + :param node_rule_group: The node_rule_group of this TapiTopologyNode. + :type node_rule_group: List[TapiTopologyNodeRuleGroup] + """ + + self._node_rule_group = node_rule_group + + @property + def aggregated_node_edge_point(self) -> List[TapiTopologyNodeEdgePointRef]: + """Gets the aggregated_node_edge_point of this TapiTopologyNode. + + none # noqa: E501 + + :return: The aggregated_node_edge_point of this TapiTopologyNode. + :rtype: List[TapiTopologyNodeEdgePointRef] + """ + return self._aggregated_node_edge_point + + @aggregated_node_edge_point.setter + def aggregated_node_edge_point(self, aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef]): + """Sets the aggregated_node_edge_point of this TapiTopologyNode. + + none # noqa: E501 + + :param aggregated_node_edge_point: The aggregated_node_edge_point of this TapiTopologyNode. + :type aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef] + """ + + self._aggregated_node_edge_point = aggregated_node_edge_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node_edge_point.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_edge_point.py new file mode 100644 index 0000000000000000000000000000000000000000..7e87f23fb2e57a164b4c597d6892cf98fcb91819 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_edge_point.py @@ -0,0 +1,452 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_admin_state_pac import TapiCommonAdminStatePac # noqa: F401,E501 +from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity_pac import TapiCommonCapacityPac # noqa: F401,E501 +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server.models.tapi_common_port_direction import TapiCommonPortDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_port_role import TapiCommonPortRole # noqa: F401,E501 +from tapi_server.models.tapi_common_service_interface_point_ref import TapiCommonServiceInterfacePointRef # noqa: F401,E501 +from tapi_server.models.tapi_common_termination_direction import TapiCommonTerminationDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_termination_pac import TapiCommonTerminationPac # noqa: F401,E501 +from tapi_server.models.tapi_common_termination_state import TapiCommonTerminationState # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNodeEdgePoint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, available_capacity: TapiCommonCapacity=None, total_potential_capacity: TapiCommonCapacity=None, name: List[TapiCommonNameAndValue]=None, uuid: str=None, termination_direction: TapiCommonTerminationDirection=None, termination_state: TapiCommonTerminationState=None, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, administrative_state: TapiCommonAdministrativeState=None, link_port_role: TapiCommonPortRole=None, mapped_service_interface_point: List[TapiCommonServiceInterfacePointRef]=None, aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef]=None, layer_protocol_name: TapiCommonLayerProtocolName=None, link_port_direction: TapiCommonPortDirection=None, supported_cep_layer_protocol_qualifier: List[str]=None): # noqa: E501 + """TapiTopologyNodeEdgePoint - a model defined in Swagger + + :param available_capacity: The available_capacity of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type available_capacity: TapiCommonCapacity + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type total_potential_capacity: TapiCommonCapacity + :param name: The name of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type uuid: str + :param termination_direction: The termination_direction of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type termination_direction: TapiCommonTerminationDirection + :param termination_state: The termination_state of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type termination_state: TapiCommonTerminationState + :param operational_state: The operational_state of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + :param administrative_state: The administrative_state of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type administrative_state: TapiCommonAdministrativeState + :param link_port_role: The link_port_role of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type link_port_role: TapiCommonPortRole + :param mapped_service_interface_point: The mapped_service_interface_point of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type mapped_service_interface_point: List[TapiCommonServiceInterfacePointRef] + :param aggregated_node_edge_point: The aggregated_node_edge_point of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef] + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type layer_protocol_name: TapiCommonLayerProtocolName + :param link_port_direction: The link_port_direction of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type link_port_direction: TapiCommonPortDirection + :param supported_cep_layer_protocol_qualifier: The supported_cep_layer_protocol_qualifier of this TapiTopologyNodeEdgePoint. # noqa: E501 + :type supported_cep_layer_protocol_qualifier: List[str] + """ + self.swagger_types = { + 'available_capacity': TapiCommonCapacity, + 'total_potential_capacity': TapiCommonCapacity, + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'termination_direction': TapiCommonTerminationDirection, + 'termination_state': TapiCommonTerminationState, + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState, + 'administrative_state': TapiCommonAdministrativeState, + 'link_port_role': TapiCommonPortRole, + 'mapped_service_interface_point': List[TapiCommonServiceInterfacePointRef], + 'aggregated_node_edge_point': List[TapiTopologyNodeEdgePointRef], + 'layer_protocol_name': TapiCommonLayerProtocolName, + 'link_port_direction': TapiCommonPortDirection, + 'supported_cep_layer_protocol_qualifier': List[str] + } + + self.attribute_map = { + 'available_capacity': 'available-capacity', + 'total_potential_capacity': 'total-potential-capacity', + 'name': 'name', + 'uuid': 'uuid', + 'termination_direction': 'termination-direction', + 'termination_state': 'termination-state', + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state', + 'administrative_state': 'administrative-state', + 'link_port_role': 'link-port-role', + 'mapped_service_interface_point': 'mapped-service-interface-point', + 'aggregated_node_edge_point': 'aggregated-node-edge-point', + 'layer_protocol_name': 'layer-protocol-name', + 'link_port_direction': 'link-port-direction', + 'supported_cep_layer_protocol_qualifier': 'supported-cep-layer-protocol-qualifier' + } + self._available_capacity = available_capacity + self._total_potential_capacity = total_potential_capacity + self._name = name + self._uuid = uuid + self._termination_direction = termination_direction + self._termination_state = termination_state + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + self._administrative_state = administrative_state + self._link_port_role = link_port_role + self._mapped_service_interface_point = mapped_service_interface_point + self._aggregated_node_edge_point = aggregated_node_edge_point + self._layer_protocol_name = layer_protocol_name + self._link_port_direction = link_port_direction + self._supported_cep_layer_protocol_qualifier = supported_cep_layer_protocol_qualifier + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNodeEdgePoint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.NodeEdgePoint of this TapiTopologyNodeEdgePoint. # noqa: E501 + :rtype: TapiTopologyNodeEdgePoint + """ + return util.deserialize_model(dikt, cls) + + @property + def available_capacity(self) -> TapiCommonCapacity: + """Gets the available_capacity of this TapiTopologyNodeEdgePoint. + + + :return: The available_capacity of this TapiTopologyNodeEdgePoint. + :rtype: TapiCommonCapacity + """ + return self._available_capacity + + @available_capacity.setter + def available_capacity(self, available_capacity: TapiCommonCapacity): + """Sets the available_capacity of this TapiTopologyNodeEdgePoint. + + + :param available_capacity: The available_capacity of this TapiTopologyNodeEdgePoint. + :type available_capacity: TapiCommonCapacity + """ + + self._available_capacity = available_capacity + + @property + def total_potential_capacity(self) -> TapiCommonCapacity: + """Gets the total_potential_capacity of this TapiTopologyNodeEdgePoint. + + + :return: The total_potential_capacity of this TapiTopologyNodeEdgePoint. + :rtype: TapiCommonCapacity + """ + return self._total_potential_capacity + + @total_potential_capacity.setter + def total_potential_capacity(self, total_potential_capacity: TapiCommonCapacity): + """Sets the total_potential_capacity of this TapiTopologyNodeEdgePoint. + + + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyNodeEdgePoint. + :type total_potential_capacity: TapiCommonCapacity + """ + + self._total_potential_capacity = total_potential_capacity + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiTopologyNodeEdgePoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiTopologyNodeEdgePoint. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiTopologyNodeEdgePoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiTopologyNodeEdgePoint. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiTopologyNodeEdgePoint. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiTopologyNodeEdgePoint. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiTopologyNodeEdgePoint. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiTopologyNodeEdgePoint. + :type uuid: str + """ + + self._uuid = uuid + + @property + def termination_direction(self) -> TapiCommonTerminationDirection: + """Gets the termination_direction of this TapiTopologyNodeEdgePoint. + + + :return: The termination_direction of this TapiTopologyNodeEdgePoint. + :rtype: TapiCommonTerminationDirection + """ + return self._termination_direction + + @termination_direction.setter + def termination_direction(self, termination_direction: TapiCommonTerminationDirection): + """Sets the termination_direction of this TapiTopologyNodeEdgePoint. + + + :param termination_direction: The termination_direction of this TapiTopologyNodeEdgePoint. + :type termination_direction: TapiCommonTerminationDirection + """ + + self._termination_direction = termination_direction + + @property + def termination_state(self) -> TapiCommonTerminationState: + """Gets the termination_state of this TapiTopologyNodeEdgePoint. + + + :return: The termination_state of this TapiTopologyNodeEdgePoint. + :rtype: TapiCommonTerminationState + """ + return self._termination_state + + @termination_state.setter + def termination_state(self, termination_state: TapiCommonTerminationState): + """Sets the termination_state of this TapiTopologyNodeEdgePoint. + + + :param termination_state: The termination_state of this TapiTopologyNodeEdgePoint. + :type termination_state: TapiCommonTerminationState + """ + + self._termination_state = termination_state + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiTopologyNodeEdgePoint. + + + :return: The operational_state of this TapiTopologyNodeEdgePoint. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiTopologyNodeEdgePoint. + + + :param operational_state: The operational_state of this TapiTopologyNodeEdgePoint. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiTopologyNodeEdgePoint. + + + :return: The lifecycle_state of this TapiTopologyNodeEdgePoint. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiTopologyNodeEdgePoint. + + + :param lifecycle_state: The lifecycle_state of this TapiTopologyNodeEdgePoint. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state + + @property + def administrative_state(self) -> TapiCommonAdministrativeState: + """Gets the administrative_state of this TapiTopologyNodeEdgePoint. + + + :return: The administrative_state of this TapiTopologyNodeEdgePoint. + :rtype: TapiCommonAdministrativeState + """ + return self._administrative_state + + @administrative_state.setter + def administrative_state(self, administrative_state: TapiCommonAdministrativeState): + """Sets the administrative_state of this TapiTopologyNodeEdgePoint. + + + :param administrative_state: The administrative_state of this TapiTopologyNodeEdgePoint. + :type administrative_state: TapiCommonAdministrativeState + """ + + self._administrative_state = administrative_state + + @property + def link_port_role(self) -> TapiCommonPortRole: + """Gets the link_port_role of this TapiTopologyNodeEdgePoint. + + + :return: The link_port_role of this TapiTopologyNodeEdgePoint. + :rtype: TapiCommonPortRole + """ + return self._link_port_role + + @link_port_role.setter + def link_port_role(self, link_port_role: TapiCommonPortRole): + """Sets the link_port_role of this TapiTopologyNodeEdgePoint. + + + :param link_port_role: The link_port_role of this TapiTopologyNodeEdgePoint. + :type link_port_role: TapiCommonPortRole + """ + + self._link_port_role = link_port_role + + @property + def mapped_service_interface_point(self) -> List[TapiCommonServiceInterfacePointRef]: + """Gets the mapped_service_interface_point of this TapiTopologyNodeEdgePoint. + + NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental # noqa: E501 + + :return: The mapped_service_interface_point of this TapiTopologyNodeEdgePoint. + :rtype: List[TapiCommonServiceInterfacePointRef] + """ + return self._mapped_service_interface_point + + @mapped_service_interface_point.setter + def mapped_service_interface_point(self, mapped_service_interface_point: List[TapiCommonServiceInterfacePointRef]): + """Sets the mapped_service_interface_point of this TapiTopologyNodeEdgePoint. + + NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental # noqa: E501 + + :param mapped_service_interface_point: The mapped_service_interface_point of this TapiTopologyNodeEdgePoint. + :type mapped_service_interface_point: List[TapiCommonServiceInterfacePointRef] + """ + + self._mapped_service_interface_point = mapped_service_interface_point + + @property + def aggregated_node_edge_point(self) -> List[TapiTopologyNodeEdgePointRef]: + """Gets the aggregated_node_edge_point of this TapiTopologyNodeEdgePoint. + + none # noqa: E501 + + :return: The aggregated_node_edge_point of this TapiTopologyNodeEdgePoint. + :rtype: List[TapiTopologyNodeEdgePointRef] + """ + return self._aggregated_node_edge_point + + @aggregated_node_edge_point.setter + def aggregated_node_edge_point(self, aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef]): + """Sets the aggregated_node_edge_point of this TapiTopologyNodeEdgePoint. + + none # noqa: E501 + + :param aggregated_node_edge_point: The aggregated_node_edge_point of this TapiTopologyNodeEdgePoint. + :type aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef] + """ + + self._aggregated_node_edge_point = aggregated_node_edge_point + + @property + def layer_protocol_name(self) -> TapiCommonLayerProtocolName: + """Gets the layer_protocol_name of this TapiTopologyNodeEdgePoint. + + + :return: The layer_protocol_name of this TapiTopologyNodeEdgePoint. + :rtype: TapiCommonLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TapiCommonLayerProtocolName): + """Sets the layer_protocol_name of this TapiTopologyNodeEdgePoint. + + + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyNodeEdgePoint. + :type layer_protocol_name: TapiCommonLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def link_port_direction(self) -> TapiCommonPortDirection: + """Gets the link_port_direction of this TapiTopologyNodeEdgePoint. + + + :return: The link_port_direction of this TapiTopologyNodeEdgePoint. + :rtype: TapiCommonPortDirection + """ + return self._link_port_direction + + @link_port_direction.setter + def link_port_direction(self, link_port_direction: TapiCommonPortDirection): + """Sets the link_port_direction of this TapiTopologyNodeEdgePoint. + + + :param link_port_direction: The link_port_direction of this TapiTopologyNodeEdgePoint. + :type link_port_direction: TapiCommonPortDirection + """ + + self._link_port_direction = link_port_direction + + @property + def supported_cep_layer_protocol_qualifier(self) -> List[str]: + """Gets the supported_cep_layer_protocol_qualifier of this TapiTopologyNodeEdgePoint. + + none # noqa: E501 + + :return: The supported_cep_layer_protocol_qualifier of this TapiTopologyNodeEdgePoint. + :rtype: List[str] + """ + return self._supported_cep_layer_protocol_qualifier + + @supported_cep_layer_protocol_qualifier.setter + def supported_cep_layer_protocol_qualifier(self, supported_cep_layer_protocol_qualifier: List[str]): + """Sets the supported_cep_layer_protocol_qualifier of this TapiTopologyNodeEdgePoint. + + none # noqa: E501 + + :param supported_cep_layer_protocol_qualifier: The supported_cep_layer_protocol_qualifier of this TapiTopologyNodeEdgePoint. + :type supported_cep_layer_protocol_qualifier: List[str] + """ + + self._supported_cep_layer_protocol_qualifier = supported_cep_layer_protocol_qualifier diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node_edge_point_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_edge_point_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..5780fe383116f0b8c377e2a92b7e54013dd07273 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_edge_point_ref.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_node_ref import TapiTopologyNodeRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNodeEdgePointRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node_uuid: str=None, node_edge_point_uuid: str=None): # noqa: E501 + """TapiTopologyNodeEdgePointRef - a model defined in Swagger + + :param node_uuid: The node_uuid of this TapiTopologyNodeEdgePointRef. # noqa: E501 + :type node_uuid: str + :param node_edge_point_uuid: The node_edge_point_uuid of this TapiTopologyNodeEdgePointRef. # noqa: E501 + :type node_edge_point_uuid: str + """ + self.swagger_types = { + 'node_uuid': str, + 'node_edge_point_uuid': str + } + + self.attribute_map = { + 'node_uuid': 'node-uuid', + 'node_edge_point_uuid': 'node-edge-point-uuid' + } + self._node_uuid = node_uuid + self._node_edge_point_uuid = node_edge_point_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNodeEdgePointRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.NodeEdgePointRef of this TapiTopologyNodeEdgePointRef. # noqa: E501 + :rtype: TapiTopologyNodeEdgePointRef + """ + return util.deserialize_model(dikt, cls) + + @property + def node_uuid(self) -> str: + """Gets the node_uuid of this TapiTopologyNodeEdgePointRef. + + none # noqa: E501 + + :return: The node_uuid of this TapiTopologyNodeEdgePointRef. + :rtype: str + """ + return self._node_uuid + + @node_uuid.setter + def node_uuid(self, node_uuid: str): + """Sets the node_uuid of this TapiTopologyNodeEdgePointRef. + + none # noqa: E501 + + :param node_uuid: The node_uuid of this TapiTopologyNodeEdgePointRef. + :type node_uuid: str + """ + + self._node_uuid = node_uuid + + @property + def node_edge_point_uuid(self) -> str: + """Gets the node_edge_point_uuid of this TapiTopologyNodeEdgePointRef. + + none # noqa: E501 + + :return: The node_edge_point_uuid of this TapiTopologyNodeEdgePointRef. + :rtype: str + """ + return self._node_edge_point_uuid + + @node_edge_point_uuid.setter + def node_edge_point_uuid(self, node_edge_point_uuid: str): + """Sets the node_edge_point_uuid of this TapiTopologyNodeEdgePointRef. + + none # noqa: E501 + + :param node_edge_point_uuid: The node_edge_point_uuid of this TapiTopologyNodeEdgePointRef. + :type node_edge_point_uuid: str + """ + + self._node_edge_point_uuid = node_edge_point_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node_edge_point_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_edge_point_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..750dd69251bf55f4b1f839b141293d37fcb84ba8 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_edge_point_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNodeEdgePointRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node_edge_point: TapiTopologyNodeEdgePointRef=None): # noqa: E501 + """TapiTopologyNodeEdgePointRefWrapper - a model defined in Swagger + + :param node_edge_point: The node_edge_point of this TapiTopologyNodeEdgePointRefWrapper. # noqa: E501 + :type node_edge_point: TapiTopologyNodeEdgePointRef + """ + self.swagger_types = { + 'node_edge_point': TapiTopologyNodeEdgePointRef + } + + self.attribute_map = { + 'node_edge_point': 'node-edge-point' + } + self._node_edge_point = node_edge_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNodeEdgePointRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.NodeEdgePointRefWrapper of this TapiTopologyNodeEdgePointRefWrapper. # noqa: E501 + :rtype: TapiTopologyNodeEdgePointRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def node_edge_point(self) -> TapiTopologyNodeEdgePointRef: + """Gets the node_edge_point of this TapiTopologyNodeEdgePointRefWrapper. + + + :return: The node_edge_point of this TapiTopologyNodeEdgePointRefWrapper. + :rtype: TapiTopologyNodeEdgePointRef + """ + return self._node_edge_point + + @node_edge_point.setter + def node_edge_point(self, node_edge_point: TapiTopologyNodeEdgePointRef): + """Sets the node_edge_point of this TapiTopologyNodeEdgePointRefWrapper. + + + :param node_edge_point: The node_edge_point of this TapiTopologyNodeEdgePointRefWrapper. + :type node_edge_point: TapiTopologyNodeEdgePointRef + """ + + self._node_edge_point = node_edge_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node_owned_node_edge_point.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_owned_node_edge_point.py new file mode 100644 index 0000000000000000000000000000000000000000..ca6356844176a105e7b6d970680a78a21d307772 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_owned_node_edge_point.py @@ -0,0 +1,396 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_port_direction import TapiCommonPortDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_port_role import TapiCommonPortRole # noqa: F401,E501 +from tapi_server.models.tapi_common_service_interface_point_ref import TapiCommonServiceInterfacePointRef # noqa: F401,E501 +from tapi_server.models.tapi_common_termination_direction import TapiCommonTerminationDirection # noqa: F401,E501 +from tapi_server.models.tapi_common_termination_state import TapiCommonTerminationState # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_cep_list import TapiConnectivityCepList # noqa: F401,E501 +from tapi_server.models.tapi_connectivity_owned_node_edge_point_augmentation1 import TapiConnectivityOwnedNodeEdgePointAugmentation1 # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_edge_point import TapiTopologyNodeEdgePoint # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNodeOwnedNodeEdgePoint(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, available_capacity: TapiCommonCapacity=None, total_potential_capacity: TapiCommonCapacity=None, name: List[TapiCommonNameAndValue]=None, uuid: str=None, termination_direction: TapiCommonTerminationDirection=None, termination_state: TapiCommonTerminationState=None, link_port_role: TapiCommonPortRole=None, mapped_service_interface_point: List[TapiCommonServiceInterfacePointRef]=None, aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef]=None, layer_protocol_name: TapiCommonLayerProtocolName=None, link_port_direction: TapiCommonPortDirection=None, supported_cep_layer_protocol_qualifier: List[str]=None, cep_list: TapiConnectivityCepList=None): # noqa: E501 + """TapiTopologyNodeOwnedNodeEdgePoint - a model defined in Swagger + + :param available_capacity: The available_capacity of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type available_capacity: TapiCommonCapacity + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type total_potential_capacity: TapiCommonCapacity + :param name: The name of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type uuid: str + :param termination_direction: The termination_direction of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type termination_direction: TapiCommonTerminationDirection + :param termination_state: The termination_state of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type termination_state: TapiCommonTerminationState + :param link_port_role: The link_port_role of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type link_port_role: TapiCommonPortRole + :param mapped_service_interface_point: The mapped_service_interface_point of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type mapped_service_interface_point: List[TapiCommonServiceInterfacePointRef] + :param aggregated_node_edge_point: The aggregated_node_edge_point of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef] + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type layer_protocol_name: TapiCommonLayerProtocolName + :param link_port_direction: The link_port_direction of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type link_port_direction: TapiCommonPortDirection + :param supported_cep_layer_protocol_qualifier: The supported_cep_layer_protocol_qualifier of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type supported_cep_layer_protocol_qualifier: List[str] + :param cep_list: The cep_list of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :type cep_list: TapiConnectivityCepList + """ + self.swagger_types = { + 'available_capacity': TapiCommonCapacity, + 'total_potential_capacity': TapiCommonCapacity, + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'termination_direction': TapiCommonTerminationDirection, + 'termination_state': TapiCommonTerminationState, + 'link_port_role': TapiCommonPortRole, + 'mapped_service_interface_point': List[TapiCommonServiceInterfacePointRef], + 'aggregated_node_edge_point': List[TapiTopologyNodeEdgePointRef], + 'layer_protocol_name': TapiCommonLayerProtocolName, + 'link_port_direction': TapiCommonPortDirection, + 'supported_cep_layer_protocol_qualifier': List[str], + 'cep_list': TapiConnectivityCepList + } + + self.attribute_map = { + 'available_capacity': 'available-capacity', + 'total_potential_capacity': 'total-potential-capacity', + 'name': 'name', + 'uuid': 'uuid', + 'termination_direction': 'termination-direction', + 'termination_state': 'termination-state', + 'link_port_role': 'link-port-role', + 'mapped_service_interface_point': 'mapped-service-interface-point', + 'aggregated_node_edge_point': 'aggregated-node-edge-point', + 'layer_protocol_name': 'layer-protocol-name', + 'link_port_direction': 'link-port-direction', + 'supported_cep_layer_protocol_qualifier': 'supported-cep-layer-protocol-qualifier', + 'cep_list': 'cep-list' + } + self._available_capacity = available_capacity + self._total_potential_capacity = total_potential_capacity + self._name = name + self._uuid = uuid + self._termination_direction = termination_direction + self._termination_state = termination_state + self._link_port_role = link_port_role + self._mapped_service_interface_point = mapped_service_interface_point + self._aggregated_node_edge_point = aggregated_node_edge_point + self._layer_protocol_name = layer_protocol_name + self._link_port_direction = link_port_direction + self._supported_cep_layer_protocol_qualifier = supported_cep_layer_protocol_qualifier + self._cep_list = cep_list + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNodeOwnedNodeEdgePoint': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.node.OwnedNodeEdgePoint of this TapiTopologyNodeOwnedNodeEdgePoint. # noqa: E501 + :rtype: TapiTopologyNodeOwnedNodeEdgePoint + """ + return util.deserialize_model(dikt, cls) + + @property + def available_capacity(self) -> TapiCommonCapacity: + """Gets the available_capacity of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :return: The available_capacity of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: TapiCommonCapacity + """ + return self._available_capacity + + @available_capacity.setter + def available_capacity(self, available_capacity: TapiCommonCapacity): + """Sets the available_capacity of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :param available_capacity: The available_capacity of this TapiTopologyNodeOwnedNodeEdgePoint. + :type available_capacity: TapiCommonCapacity + """ + + self._available_capacity = available_capacity + + @property + def total_potential_capacity(self) -> TapiCommonCapacity: + """Gets the total_potential_capacity of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :return: The total_potential_capacity of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: TapiCommonCapacity + """ + return self._total_potential_capacity + + @total_potential_capacity.setter + def total_potential_capacity(self, total_potential_capacity: TapiCommonCapacity): + """Sets the total_potential_capacity of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyNodeOwnedNodeEdgePoint. + :type total_potential_capacity: TapiCommonCapacity + """ + + self._total_potential_capacity = total_potential_capacity + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiTopologyNodeOwnedNodeEdgePoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiTopologyNodeOwnedNodeEdgePoint. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiTopologyNodeOwnedNodeEdgePoint. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiTopologyNodeOwnedNodeEdgePoint. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiTopologyNodeOwnedNodeEdgePoint. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiTopologyNodeOwnedNodeEdgePoint. + :type uuid: str + """ + + self._uuid = uuid + + @property + def termination_direction(self) -> TapiCommonTerminationDirection: + """Gets the termination_direction of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :return: The termination_direction of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: TapiCommonTerminationDirection + """ + return self._termination_direction + + @termination_direction.setter + def termination_direction(self, termination_direction: TapiCommonTerminationDirection): + """Sets the termination_direction of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :param termination_direction: The termination_direction of this TapiTopologyNodeOwnedNodeEdgePoint. + :type termination_direction: TapiCommonTerminationDirection + """ + + self._termination_direction = termination_direction + + @property + def termination_state(self) -> TapiCommonTerminationState: + """Gets the termination_state of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :return: The termination_state of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: TapiCommonTerminationState + """ + return self._termination_state + + @termination_state.setter + def termination_state(self, termination_state: TapiCommonTerminationState): + """Sets the termination_state of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :param termination_state: The termination_state of this TapiTopologyNodeOwnedNodeEdgePoint. + :type termination_state: TapiCommonTerminationState + """ + + self._termination_state = termination_state + + @property + def link_port_role(self) -> TapiCommonPortRole: + """Gets the link_port_role of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :return: The link_port_role of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: TapiCommonPortRole + """ + return self._link_port_role + + @link_port_role.setter + def link_port_role(self, link_port_role: TapiCommonPortRole): + """Sets the link_port_role of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :param link_port_role: The link_port_role of this TapiTopologyNodeOwnedNodeEdgePoint. + :type link_port_role: TapiCommonPortRole + """ + + self._link_port_role = link_port_role + + @property + def mapped_service_interface_point(self) -> List[TapiCommonServiceInterfacePointRef]: + """Gets the mapped_service_interface_point of this TapiTopologyNodeOwnedNodeEdgePoint. + + NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental # noqa: E501 + + :return: The mapped_service_interface_point of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: List[TapiCommonServiceInterfacePointRef] + """ + return self._mapped_service_interface_point + + @mapped_service_interface_point.setter + def mapped_service_interface_point(self, mapped_service_interface_point: List[TapiCommonServiceInterfacePointRef]): + """Sets the mapped_service_interface_point of this TapiTopologyNodeOwnedNodeEdgePoint. + + NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental # noqa: E501 + + :param mapped_service_interface_point: The mapped_service_interface_point of this TapiTopologyNodeOwnedNodeEdgePoint. + :type mapped_service_interface_point: List[TapiCommonServiceInterfacePointRef] + """ + + self._mapped_service_interface_point = mapped_service_interface_point + + @property + def aggregated_node_edge_point(self) -> List[TapiTopologyNodeEdgePointRef]: + """Gets the aggregated_node_edge_point of this TapiTopologyNodeOwnedNodeEdgePoint. + + none # noqa: E501 + + :return: The aggregated_node_edge_point of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: List[TapiTopologyNodeEdgePointRef] + """ + return self._aggregated_node_edge_point + + @aggregated_node_edge_point.setter + def aggregated_node_edge_point(self, aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef]): + """Sets the aggregated_node_edge_point of this TapiTopologyNodeOwnedNodeEdgePoint. + + none # noqa: E501 + + :param aggregated_node_edge_point: The aggregated_node_edge_point of this TapiTopologyNodeOwnedNodeEdgePoint. + :type aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef] + """ + + self._aggregated_node_edge_point = aggregated_node_edge_point + + @property + def layer_protocol_name(self) -> TapiCommonLayerProtocolName: + """Gets the layer_protocol_name of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :return: The layer_protocol_name of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: TapiCommonLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TapiCommonLayerProtocolName): + """Sets the layer_protocol_name of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyNodeOwnedNodeEdgePoint. + :type layer_protocol_name: TapiCommonLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def link_port_direction(self) -> TapiCommonPortDirection: + """Gets the link_port_direction of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :return: The link_port_direction of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: TapiCommonPortDirection + """ + return self._link_port_direction + + @link_port_direction.setter + def link_port_direction(self, link_port_direction: TapiCommonPortDirection): + """Sets the link_port_direction of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :param link_port_direction: The link_port_direction of this TapiTopologyNodeOwnedNodeEdgePoint. + :type link_port_direction: TapiCommonPortDirection + """ + + self._link_port_direction = link_port_direction + + @property + def supported_cep_layer_protocol_qualifier(self) -> List[str]: + """Gets the supported_cep_layer_protocol_qualifier of this TapiTopologyNodeOwnedNodeEdgePoint. + + none # noqa: E501 + + :return: The supported_cep_layer_protocol_qualifier of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: List[str] + """ + return self._supported_cep_layer_protocol_qualifier + + @supported_cep_layer_protocol_qualifier.setter + def supported_cep_layer_protocol_qualifier(self, supported_cep_layer_protocol_qualifier: List[str]): + """Sets the supported_cep_layer_protocol_qualifier of this TapiTopologyNodeOwnedNodeEdgePoint. + + none # noqa: E501 + + :param supported_cep_layer_protocol_qualifier: The supported_cep_layer_protocol_qualifier of this TapiTopologyNodeOwnedNodeEdgePoint. + :type supported_cep_layer_protocol_qualifier: List[str] + """ + + self._supported_cep_layer_protocol_qualifier = supported_cep_layer_protocol_qualifier + + @property + def cep_list(self) -> TapiConnectivityCepList: + """Gets the cep_list of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :return: The cep_list of this TapiTopologyNodeOwnedNodeEdgePoint. + :rtype: TapiConnectivityCepList + """ + return self._cep_list + + @cep_list.setter + def cep_list(self, cep_list: TapiConnectivityCepList): + """Sets the cep_list of this TapiTopologyNodeOwnedNodeEdgePoint. + + + :param cep_list: The cep_list of this TapiTopologyNodeOwnedNodeEdgePoint. + :type cep_list: TapiConnectivityCepList + """ + + self._cep_list = cep_list diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node_owned_node_edge_point_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_owned_node_edge_point_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..625b248341e9a782de2da647ba2cc5c870346971 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_owned_node_edge_point_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_node_owned_node_edge_point import TapiTopologyNodeOwnedNodeEdgePoint # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNodeOwnedNodeEdgePointWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, owned_node_edge_point: TapiTopologyNodeOwnedNodeEdgePoint=None): # noqa: E501 + """TapiTopologyNodeOwnedNodeEdgePointWrapper - a model defined in Swagger + + :param owned_node_edge_point: The owned_node_edge_point of this TapiTopologyNodeOwnedNodeEdgePointWrapper. # noqa: E501 + :type owned_node_edge_point: TapiTopologyNodeOwnedNodeEdgePoint + """ + self.swagger_types = { + 'owned_node_edge_point': TapiTopologyNodeOwnedNodeEdgePoint + } + + self.attribute_map = { + 'owned_node_edge_point': 'owned-node-edge-point' + } + self._owned_node_edge_point = owned_node_edge_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNodeOwnedNodeEdgePointWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.node.OwnedNodeEdgePointWrapper of this TapiTopologyNodeOwnedNodeEdgePointWrapper. # noqa: E501 + :rtype: TapiTopologyNodeOwnedNodeEdgePointWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def owned_node_edge_point(self) -> TapiTopologyNodeOwnedNodeEdgePoint: + """Gets the owned_node_edge_point of this TapiTopologyNodeOwnedNodeEdgePointWrapper. + + + :return: The owned_node_edge_point of this TapiTopologyNodeOwnedNodeEdgePointWrapper. + :rtype: TapiTopologyNodeOwnedNodeEdgePoint + """ + return self._owned_node_edge_point + + @owned_node_edge_point.setter + def owned_node_edge_point(self, owned_node_edge_point: TapiTopologyNodeOwnedNodeEdgePoint): + """Sets the owned_node_edge_point of this TapiTopologyNodeOwnedNodeEdgePointWrapper. + + + :param owned_node_edge_point: The owned_node_edge_point of this TapiTopologyNodeOwnedNodeEdgePointWrapper. + :type owned_node_edge_point: TapiTopologyNodeOwnedNodeEdgePoint + """ + + self._owned_node_edge_point = owned_node_edge_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..28ada09fba172a38d556cdc208e73e55d3df2c3c --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_ref.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_topology_ref import TapiTopologyTopologyRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNodeRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology_uuid: str=None, node_uuid: str=None): # noqa: E501 + """TapiTopologyNodeRef - a model defined in Swagger + + :param topology_uuid: The topology_uuid of this TapiTopologyNodeRef. # noqa: E501 + :type topology_uuid: str + :param node_uuid: The node_uuid of this TapiTopologyNodeRef. # noqa: E501 + :type node_uuid: str + """ + self.swagger_types = { + 'topology_uuid': str, + 'node_uuid': str + } + + self.attribute_map = { + 'topology_uuid': 'topology-uuid', + 'node_uuid': 'node-uuid' + } + self._topology_uuid = topology_uuid + self._node_uuid = node_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNodeRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.NodeRef of this TapiTopologyNodeRef. # noqa: E501 + :rtype: TapiTopologyNodeRef + """ + return util.deserialize_model(dikt, cls) + + @property + def topology_uuid(self) -> str: + """Gets the topology_uuid of this TapiTopologyNodeRef. + + none # noqa: E501 + + :return: The topology_uuid of this TapiTopologyNodeRef. + :rtype: str + """ + return self._topology_uuid + + @topology_uuid.setter + def topology_uuid(self, topology_uuid: str): + """Sets the topology_uuid of this TapiTopologyNodeRef. + + none # noqa: E501 + + :param topology_uuid: The topology_uuid of this TapiTopologyNodeRef. + :type topology_uuid: str + """ + + self._topology_uuid = topology_uuid + + @property + def node_uuid(self) -> str: + """Gets the node_uuid of this TapiTopologyNodeRef. + + none # noqa: E501 + + :return: The node_uuid of this TapiTopologyNodeRef. + :rtype: str + """ + return self._node_uuid + + @node_uuid.setter + def node_uuid(self, node_uuid: str): + """Sets the node_uuid of this TapiTopologyNodeRef. + + none # noqa: E501 + + :param node_uuid: The node_uuid of this TapiTopologyNodeRef. + :type node_uuid: str + """ + + self._node_uuid = node_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group.py new file mode 100644 index 0000000000000000000000000000000000000000..af337f38d2a13f58990907fc25061e9007445726 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group.py @@ -0,0 +1,354 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity_pac import TapiCommonCapacityPac # noqa: F401,E501 +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_topology_cost_characteristic import TapiTopologyCostCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_inter_rule_group import TapiTopologyInterRuleGroup # noqa: F401,E501 +from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_rule_group_ref import TapiTopologyNodeRuleGroupRef # noqa: F401,E501 +from tapi_server.models.tapi_topology_risk_characteristic import TapiTopologyRiskCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_risk_parameter_pac import TapiTopologyRiskParameterPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_rule import TapiTopologyRule # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_cost_pac import TapiTopologyTransferCostPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_timing_pac import TapiTopologyTransferTimingPac # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNodeRuleGroup(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None, risk_characteristic: List[TapiTopologyRiskCharacteristic]=None, cost_characteristic: List[TapiTopologyCostCharacteristic]=None, latency_characteristic: List[TapiTopologyLatencyCharacteristic]=None, available_capacity: TapiCommonCapacity=None, total_potential_capacity: TapiCommonCapacity=None, inter_rule_group: List[TapiTopologyInterRuleGroup]=None, rule: List[TapiTopologyRule]=None, node_rule_group: List[TapiTopologyNodeRuleGroupRef]=None, node_edge_point: List[TapiTopologyNodeEdgePointRef]=None): # noqa: E501 + """TapiTopologyNodeRuleGroup - a model defined in Swagger + + :param name: The name of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type uuid: str + :param risk_characteristic: The risk_characteristic of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type risk_characteristic: List[TapiTopologyRiskCharacteristic] + :param cost_characteristic: The cost_characteristic of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + :param latency_characteristic: The latency_characteristic of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + :param available_capacity: The available_capacity of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type available_capacity: TapiCommonCapacity + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type total_potential_capacity: TapiCommonCapacity + :param inter_rule_group: The inter_rule_group of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type inter_rule_group: List[TapiTopologyInterRuleGroup] + :param rule: The rule of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type rule: List[TapiTopologyRule] + :param node_rule_group: The node_rule_group of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type node_rule_group: List[TapiTopologyNodeRuleGroupRef] + :param node_edge_point: The node_edge_point of this TapiTopologyNodeRuleGroup. # noqa: E501 + :type node_edge_point: List[TapiTopologyNodeEdgePointRef] + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'risk_characteristic': List[TapiTopologyRiskCharacteristic], + 'cost_characteristic': List[TapiTopologyCostCharacteristic], + 'latency_characteristic': List[TapiTopologyLatencyCharacteristic], + 'available_capacity': TapiCommonCapacity, + 'total_potential_capacity': TapiCommonCapacity, + 'inter_rule_group': List[TapiTopologyInterRuleGroup], + 'rule': List[TapiTopologyRule], + 'node_rule_group': List[TapiTopologyNodeRuleGroupRef], + 'node_edge_point': List[TapiTopologyNodeEdgePointRef] + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid', + 'risk_characteristic': 'risk-characteristic', + 'cost_characteristic': 'cost-characteristic', + 'latency_characteristic': 'latency-characteristic', + 'available_capacity': 'available-capacity', + 'total_potential_capacity': 'total-potential-capacity', + 'inter_rule_group': 'inter-rule-group', + 'rule': 'rule', + 'node_rule_group': 'node-rule-group', + 'node_edge_point': 'node-edge-point' + } + self._name = name + self._uuid = uuid + self._risk_characteristic = risk_characteristic + self._cost_characteristic = cost_characteristic + self._latency_characteristic = latency_characteristic + self._available_capacity = available_capacity + self._total_potential_capacity = total_potential_capacity + self._inter_rule_group = inter_rule_group + self._rule = rule + self._node_rule_group = node_rule_group + self._node_edge_point = node_edge_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNodeRuleGroup': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.NodeRuleGroup of this TapiTopologyNodeRuleGroup. # noqa: E501 + :rtype: TapiTopologyNodeRuleGroup + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiTopologyNodeRuleGroup. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiTopologyNodeRuleGroup. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiTopologyNodeRuleGroup. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiTopologyNodeRuleGroup. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiTopologyNodeRuleGroup. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiTopologyNodeRuleGroup. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiTopologyNodeRuleGroup. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiTopologyNodeRuleGroup. + :type uuid: str + """ + + self._uuid = uuid + + @property + def risk_characteristic(self) -> List[TapiTopologyRiskCharacteristic]: + """Gets the risk_characteristic of this TapiTopologyNodeRuleGroup. + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :return: The risk_characteristic of this TapiTopologyNodeRuleGroup. + :rtype: List[TapiTopologyRiskCharacteristic] + """ + return self._risk_characteristic + + @risk_characteristic.setter + def risk_characteristic(self, risk_characteristic: List[TapiTopologyRiskCharacteristic]): + """Sets the risk_characteristic of this TapiTopologyNodeRuleGroup. + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :param risk_characteristic: The risk_characteristic of this TapiTopologyNodeRuleGroup. + :type risk_characteristic: List[TapiTopologyRiskCharacteristic] + """ + + self._risk_characteristic = risk_characteristic + + @property + def cost_characteristic(self) -> List[TapiTopologyCostCharacteristic]: + """Gets the cost_characteristic of this TapiTopologyNodeRuleGroup. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :return: The cost_characteristic of this TapiTopologyNodeRuleGroup. + :rtype: List[TapiTopologyCostCharacteristic] + """ + return self._cost_characteristic + + @cost_characteristic.setter + def cost_characteristic(self, cost_characteristic: List[TapiTopologyCostCharacteristic]): + """Sets the cost_characteristic of this TapiTopologyNodeRuleGroup. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param cost_characteristic: The cost_characteristic of this TapiTopologyNodeRuleGroup. + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + """ + + self._cost_characteristic = cost_characteristic + + @property + def latency_characteristic(self) -> List[TapiTopologyLatencyCharacteristic]: + """Gets the latency_characteristic of this TapiTopologyNodeRuleGroup. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :return: The latency_characteristic of this TapiTopologyNodeRuleGroup. + :rtype: List[TapiTopologyLatencyCharacteristic] + """ + return self._latency_characteristic + + @latency_characteristic.setter + def latency_characteristic(self, latency_characteristic: List[TapiTopologyLatencyCharacteristic]): + """Sets the latency_characteristic of this TapiTopologyNodeRuleGroup. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param latency_characteristic: The latency_characteristic of this TapiTopologyNodeRuleGroup. + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + """ + + self._latency_characteristic = latency_characteristic + + @property + def available_capacity(self) -> TapiCommonCapacity: + """Gets the available_capacity of this TapiTopologyNodeRuleGroup. + + + :return: The available_capacity of this TapiTopologyNodeRuleGroup. + :rtype: TapiCommonCapacity + """ + return self._available_capacity + + @available_capacity.setter + def available_capacity(self, available_capacity: TapiCommonCapacity): + """Sets the available_capacity of this TapiTopologyNodeRuleGroup. + + + :param available_capacity: The available_capacity of this TapiTopologyNodeRuleGroup. + :type available_capacity: TapiCommonCapacity + """ + + self._available_capacity = available_capacity + + @property + def total_potential_capacity(self) -> TapiCommonCapacity: + """Gets the total_potential_capacity of this TapiTopologyNodeRuleGroup. + + + :return: The total_potential_capacity of this TapiTopologyNodeRuleGroup. + :rtype: TapiCommonCapacity + """ + return self._total_potential_capacity + + @total_potential_capacity.setter + def total_potential_capacity(self, total_potential_capacity: TapiCommonCapacity): + """Sets the total_potential_capacity of this TapiTopologyNodeRuleGroup. + + + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyNodeRuleGroup. + :type total_potential_capacity: TapiCommonCapacity + """ + + self._total_potential_capacity = total_potential_capacity + + @property + def inter_rule_group(self) -> List[TapiTopologyInterRuleGroup]: + """Gets the inter_rule_group of this TapiTopologyNodeRuleGroup. + + Nested NodeRuleGroups may have InterRuleGroups. The Superior NodeRuleGroup contains the nested NodeRuleGroups and their associated InterRuleGroups. This is equivalent to the Node-Topology hierarchy. # noqa: E501 + + :return: The inter_rule_group of this TapiTopologyNodeRuleGroup. + :rtype: List[TapiTopologyInterRuleGroup] + """ + return self._inter_rule_group + + @inter_rule_group.setter + def inter_rule_group(self, inter_rule_group: List[TapiTopologyInterRuleGroup]): + """Sets the inter_rule_group of this TapiTopologyNodeRuleGroup. + + Nested NodeRuleGroups may have InterRuleGroups. The Superior NodeRuleGroup contains the nested NodeRuleGroups and their associated InterRuleGroups. This is equivalent to the Node-Topology hierarchy. # noqa: E501 + + :param inter_rule_group: The inter_rule_group of this TapiTopologyNodeRuleGroup. + :type inter_rule_group: List[TapiTopologyInterRuleGroup] + """ + + self._inter_rule_group = inter_rule_group + + @property + def rule(self) -> List[TapiTopologyRule]: + """Gets the rule of this TapiTopologyNodeRuleGroup. + + The list of rules of the NodeRuleGroup. # noqa: E501 + + :return: The rule of this TapiTopologyNodeRuleGroup. + :rtype: List[TapiTopologyRule] + """ + return self._rule + + @rule.setter + def rule(self, rule: List[TapiTopologyRule]): + """Sets the rule of this TapiTopologyNodeRuleGroup. + + The list of rules of the NodeRuleGroup. # noqa: E501 + + :param rule: The rule of this TapiTopologyNodeRuleGroup. + :type rule: List[TapiTopologyRule] + """ + + self._rule = rule + + @property + def node_rule_group(self) -> List[TapiTopologyNodeRuleGroupRef]: + """Gets the node_rule_group of this TapiTopologyNodeRuleGroup. + + NodeRuleGroups may be nested such that finer grained rules may be applied. A nested rule group should have a subset of the NEPs of the superior rule group. # noqa: E501 + + :return: The node_rule_group of this TapiTopologyNodeRuleGroup. + :rtype: List[TapiTopologyNodeRuleGroupRef] + """ + return self._node_rule_group + + @node_rule_group.setter + def node_rule_group(self, node_rule_group: List[TapiTopologyNodeRuleGroupRef]): + """Sets the node_rule_group of this TapiTopologyNodeRuleGroup. + + NodeRuleGroups may be nested such that finer grained rules may be applied. A nested rule group should have a subset of the NEPs of the superior rule group. # noqa: E501 + + :param node_rule_group: The node_rule_group of this TapiTopologyNodeRuleGroup. + :type node_rule_group: List[TapiTopologyNodeRuleGroupRef] + """ + + self._node_rule_group = node_rule_group + + @property + def node_edge_point(self) -> List[TapiTopologyNodeEdgePointRef]: + """Gets the node_edge_point of this TapiTopologyNodeRuleGroup. + + NEPs and their client CEPs that the rules apply to. # noqa: E501 + + :return: The node_edge_point of this TapiTopologyNodeRuleGroup. + :rtype: List[TapiTopologyNodeEdgePointRef] + """ + return self._node_edge_point + + @node_edge_point.setter + def node_edge_point(self, node_edge_point: List[TapiTopologyNodeEdgePointRef]): + """Sets the node_edge_point of this TapiTopologyNodeRuleGroup. + + NEPs and their client CEPs that the rules apply to. # noqa: E501 + + :param node_edge_point: The node_edge_point of this TapiTopologyNodeRuleGroup. + :type node_edge_point: List[TapiTopologyNodeEdgePointRef] + """ + + self._node_edge_point = node_edge_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..0f093a2582774e1476092243e60694de5f0229d1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group_ref.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_node_ref import TapiTopologyNodeRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNodeRuleGroupRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node_uuid: str=None, node_rule_group_uuid: str=None): # noqa: E501 + """TapiTopologyNodeRuleGroupRef - a model defined in Swagger + + :param node_uuid: The node_uuid of this TapiTopologyNodeRuleGroupRef. # noqa: E501 + :type node_uuid: str + :param node_rule_group_uuid: The node_rule_group_uuid of this TapiTopologyNodeRuleGroupRef. # noqa: E501 + :type node_rule_group_uuid: str + """ + self.swagger_types = { + 'node_uuid': str, + 'node_rule_group_uuid': str + } + + self.attribute_map = { + 'node_uuid': 'node-uuid', + 'node_rule_group_uuid': 'node-rule-group-uuid' + } + self._node_uuid = node_uuid + self._node_rule_group_uuid = node_rule_group_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNodeRuleGroupRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.NodeRuleGroupRef of this TapiTopologyNodeRuleGroupRef. # noqa: E501 + :rtype: TapiTopologyNodeRuleGroupRef + """ + return util.deserialize_model(dikt, cls) + + @property + def node_uuid(self) -> str: + """Gets the node_uuid of this TapiTopologyNodeRuleGroupRef. + + none # noqa: E501 + + :return: The node_uuid of this TapiTopologyNodeRuleGroupRef. + :rtype: str + """ + return self._node_uuid + + @node_uuid.setter + def node_uuid(self, node_uuid: str): + """Sets the node_uuid of this TapiTopologyNodeRuleGroupRef. + + none # noqa: E501 + + :param node_uuid: The node_uuid of this TapiTopologyNodeRuleGroupRef. + :type node_uuid: str + """ + + self._node_uuid = node_uuid + + @property + def node_rule_group_uuid(self) -> str: + """Gets the node_rule_group_uuid of this TapiTopologyNodeRuleGroupRef. + + none # noqa: E501 + + :return: The node_rule_group_uuid of this TapiTopologyNodeRuleGroupRef. + :rtype: str + """ + return self._node_rule_group_uuid + + @node_rule_group_uuid.setter + def node_rule_group_uuid(self, node_rule_group_uuid: str): + """Sets the node_rule_group_uuid of this TapiTopologyNodeRuleGroupRef. + + none # noqa: E501 + + :param node_rule_group_uuid: The node_rule_group_uuid of this TapiTopologyNodeRuleGroupRef. + :type node_rule_group_uuid: str + """ + + self._node_rule_group_uuid = node_rule_group_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..ffc2990318100152ad49a3f5c5abd531d4f47f34 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_node_rule_group_ref import TapiTopologyNodeRuleGroupRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNodeRuleGroupRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, associated_node_rule_group: TapiTopologyNodeRuleGroupRef=None): # noqa: E501 + """TapiTopologyNodeRuleGroupRefWrapper - a model defined in Swagger + + :param associated_node_rule_group: The associated_node_rule_group of this TapiTopologyNodeRuleGroupRefWrapper. # noqa: E501 + :type associated_node_rule_group: TapiTopologyNodeRuleGroupRef + """ + self.swagger_types = { + 'associated_node_rule_group': TapiTopologyNodeRuleGroupRef + } + + self.attribute_map = { + 'associated_node_rule_group': 'associated-node-rule-group' + } + self._associated_node_rule_group = associated_node_rule_group + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNodeRuleGroupRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.NodeRuleGroupRefWrapper of this TapiTopologyNodeRuleGroupRefWrapper. # noqa: E501 + :rtype: TapiTopologyNodeRuleGroupRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def associated_node_rule_group(self) -> TapiTopologyNodeRuleGroupRef: + """Gets the associated_node_rule_group of this TapiTopologyNodeRuleGroupRefWrapper. + + + :return: The associated_node_rule_group of this TapiTopologyNodeRuleGroupRefWrapper. + :rtype: TapiTopologyNodeRuleGroupRef + """ + return self._associated_node_rule_group + + @associated_node_rule_group.setter + def associated_node_rule_group(self, associated_node_rule_group: TapiTopologyNodeRuleGroupRef): + """Sets the associated_node_rule_group of this TapiTopologyNodeRuleGroupRefWrapper. + + + :param associated_node_rule_group: The associated_node_rule_group of this TapiTopologyNodeRuleGroupRefWrapper. + :type associated_node_rule_group: TapiTopologyNodeRuleGroupRef + """ + + self._associated_node_rule_group = associated_node_rule_group diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..1ce586e129a21b56da19b1a78cdec528d8fde549 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_node_rule_group_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_node_rule_group import TapiTopologyNodeRuleGroup # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyNodeRuleGroupWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node_rule_group: TapiTopologyNodeRuleGroup=None): # noqa: E501 + """TapiTopologyNodeRuleGroupWrapper - a model defined in Swagger + + :param node_rule_group: The node_rule_group of this TapiTopologyNodeRuleGroupWrapper. # noqa: E501 + :type node_rule_group: TapiTopologyNodeRuleGroup + """ + self.swagger_types = { + 'node_rule_group': TapiTopologyNodeRuleGroup + } + + self.attribute_map = { + 'node_rule_group': 'node-rule-group' + } + self._node_rule_group = node_rule_group + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyNodeRuleGroupWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.NodeRuleGroupWrapper of this TapiTopologyNodeRuleGroupWrapper. # noqa: E501 + :rtype: TapiTopologyNodeRuleGroupWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def node_rule_group(self) -> TapiTopologyNodeRuleGroup: + """Gets the node_rule_group of this TapiTopologyNodeRuleGroupWrapper. + + + :return: The node_rule_group of this TapiTopologyNodeRuleGroupWrapper. + :rtype: TapiTopologyNodeRuleGroup + """ + return self._node_rule_group + + @node_rule_group.setter + def node_rule_group(self, node_rule_group: TapiTopologyNodeRuleGroup): + """Sets the node_rule_group of this TapiTopologyNodeRuleGroupWrapper. + + + :param node_rule_group: The node_rule_group of this TapiTopologyNodeRuleGroupWrapper. + :type node_rule_group: TapiTopologyNodeRuleGroup + """ + + self._node_rule_group = node_rule_group diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_port_role_rule.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_port_role_rule.py new file mode 100644 index 0000000000000000000000000000000000000000..d5bfbe10ef4b23ebc54db30535e78d06786b3fd2 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_port_role_rule.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyPortRoleRule(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, port_role_rule: List[str]=None, port_role: List[str]=None): # noqa: E501 + """TapiTopologyPortRoleRule - a model defined in Swagger + + :param port_role_rule: The port_role_rule of this TapiTopologyPortRoleRule. # noqa: E501 + :type port_role_rule: List[str] + :param port_role: The port_role of this TapiTopologyPortRoleRule. # noqa: E501 + :type port_role: List[str] + """ + self.swagger_types = { + 'port_role_rule': List[str], + 'port_role': List[str] + } + + self.attribute_map = { + 'port_role_rule': 'port-role-rule', + 'port_role': 'port-role' + } + self._port_role_rule = port_role_rule + self._port_role = port_role + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyPortRoleRule': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.PortRoleRule of this TapiTopologyPortRoleRule. # noqa: E501 + :rtype: TapiTopologyPortRoleRule + """ + return util.deserialize_model(dikt, cls) + + @property + def port_role_rule(self) -> List[str]: + """Gets the port_role_rule of this TapiTopologyPortRoleRule. + + Where the rule references more than one port role or where there are rule intersections either as a result of overlay of rules or inter rule group usage indicates role matching criteria for a connection following the rules. For example if two port roles, 'a' and 'b', are listed and the port role rule is 'different', this means that a connection connecting points in that group must have port roles that are different for each CEP in that group. In the example if a connection can have n ports of role 'a' and m ports of role 'b' then a maximum of two ports can be drawn from the NEPs of the group and where there are two, one must be role 'a' and one must be role 'b'. # noqa: E501 + + :return: The port_role_rule of this TapiTopologyPortRoleRule. + :rtype: List[str] + """ + return self._port_role_rule + + @port_role_rule.setter + def port_role_rule(self, port_role_rule: List[str]): + """Sets the port_role_rule of this TapiTopologyPortRoleRule. + + Where the rule references more than one port role or where there are rule intersections either as a result of overlay of rules or inter rule group usage indicates role matching criteria for a connection following the rules. For example if two port roles, 'a' and 'b', are listed and the port role rule is 'different', this means that a connection connecting points in that group must have port roles that are different for each CEP in that group. In the example if a connection can have n ports of role 'a' and m ports of role 'b' then a maximum of two ports can be drawn from the NEPs of the group and where there are two, one must be role 'a' and one must be role 'b'. # noqa: E501 + + :param port_role_rule: The port_role_rule of this TapiTopologyPortRoleRule. + :type port_role_rule: List[str] + """ + + self._port_role_rule = port_role_rule + + @property + def port_role(self) -> List[str]: + """Gets the port_role of this TapiTopologyPortRoleRule. + + The role(s) of the port(s) considered in the rule. # noqa: E501 + + :return: The port_role of this TapiTopologyPortRoleRule. + :rtype: List[str] + """ + return self._port_role + + @port_role.setter + def port_role(self, port_role: List[str]): + """Sets the port_role of this TapiTopologyPortRoleRule. + + The role(s) of the port(s) considered in the rule. # noqa: E501 + + :param port_role: The port_role of this TapiTopologyPortRoleRule. + :type port_role: List[str] + """ + + self._port_role = port_role diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_port_role_rule_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_port_role_rule_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..a711600a972f892a0b9dfa0bf950f2fbbb019cfa --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_port_role_rule_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_port_role_rule import TapiTopologyPortRoleRule # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyPortRoleRuleWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, cep_port_role: TapiTopologyPortRoleRule=None): # noqa: E501 + """TapiTopologyPortRoleRuleWrapper - a model defined in Swagger + + :param cep_port_role: The cep_port_role of this TapiTopologyPortRoleRuleWrapper. # noqa: E501 + :type cep_port_role: TapiTopologyPortRoleRule + """ + self.swagger_types = { + 'cep_port_role': TapiTopologyPortRoleRule + } + + self.attribute_map = { + 'cep_port_role': 'cep-port-role' + } + self._cep_port_role = cep_port_role + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyPortRoleRuleWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.PortRoleRuleWrapper of this TapiTopologyPortRoleRuleWrapper. # noqa: E501 + :rtype: TapiTopologyPortRoleRuleWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def cep_port_role(self) -> TapiTopologyPortRoleRule: + """Gets the cep_port_role of this TapiTopologyPortRoleRuleWrapper. + + + :return: The cep_port_role of this TapiTopologyPortRoleRuleWrapper. + :rtype: TapiTopologyPortRoleRule + """ + return self._cep_port_role + + @cep_port_role.setter + def cep_port_role(self, cep_port_role: TapiTopologyPortRoleRule): + """Sets the cep_port_role of this TapiTopologyPortRoleRuleWrapper. + + + :param cep_port_role: The cep_port_role of this TapiTopologyPortRoleRuleWrapper. + :type cep_port_role: TapiTopologyPortRoleRule + """ + + self._cep_port_role = cep_port_role diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_protection_type.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_protection_type.py new file mode 100644 index 0000000000000000000000000000000000000000..ae81d84505a51f0c6ecec89d87644427a2ecddb2 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_protection_type.py @@ -0,0 +1,48 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyProtectionType(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + NO_PROTECTON = "NO_PROTECTON" + ONE_PLUS_ONE_PROTECTION = "ONE_PLUS_ONE_PROTECTION" + ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION = "ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION" + PERMANENT_ONE_PLUS_ONE_PROTECTION = "PERMANENT_ONE_PLUS_ONE_PROTECTION" + ONE_FOR_ONE_PROTECTION = "ONE_FOR_ONE_PROTECTION" + DYNAMIC_RESTORATION = "DYNAMIC_RESTORATION" + PRE_COMPUTED_RESTORATION = "PRE_COMPUTED_RESTORATION" + ONE_PLUS_ONE_PROTECTION_WITH_PRE_COMPUTED_RESTORATION = "ONE_PLUS_ONE_PROTECTION_WITH_PRE_COMPUTED_RESTORATION" + def __init__(self): # noqa: E501 + """TapiTopologyProtectionType - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyProtectionType': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.ProtectionType of this TapiTopologyProtectionType. # noqa: E501 + :rtype: TapiTopologyProtectionType + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_resilience_type.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_resilience_type.py new file mode 100644 index 0000000000000000000000000000000000000000..21634e71cd123631577bd2bc8b8dde2632d87d9e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_resilience_type.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_protection_type import TapiTopologyProtectionType # noqa: F401,E501 +from tapi_server.models.tapi_topology_restoration_policy import TapiTopologyRestorationPolicy # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyResilienceType(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, restoration_policy: TapiTopologyRestorationPolicy=None, protection_type: TapiTopologyProtectionType=None): # noqa: E501 + """TapiTopologyResilienceType - a model defined in Swagger + + :param restoration_policy: The restoration_policy of this TapiTopologyResilienceType. # noqa: E501 + :type restoration_policy: TapiTopologyRestorationPolicy + :param protection_type: The protection_type of this TapiTopologyResilienceType. # noqa: E501 + :type protection_type: TapiTopologyProtectionType + """ + self.swagger_types = { + 'restoration_policy': TapiTopologyRestorationPolicy, + 'protection_type': TapiTopologyProtectionType + } + + self.attribute_map = { + 'restoration_policy': 'restoration-policy', + 'protection_type': 'protection-type' + } + self._restoration_policy = restoration_policy + self._protection_type = protection_type + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyResilienceType': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.ResilienceType of this TapiTopologyResilienceType. # noqa: E501 + :rtype: TapiTopologyResilienceType + """ + return util.deserialize_model(dikt, cls) + + @property + def restoration_policy(self) -> TapiTopologyRestorationPolicy: + """Gets the restoration_policy of this TapiTopologyResilienceType. + + + :return: The restoration_policy of this TapiTopologyResilienceType. + :rtype: TapiTopologyRestorationPolicy + """ + return self._restoration_policy + + @restoration_policy.setter + def restoration_policy(self, restoration_policy: TapiTopologyRestorationPolicy): + """Sets the restoration_policy of this TapiTopologyResilienceType. + + + :param restoration_policy: The restoration_policy of this TapiTopologyResilienceType. + :type restoration_policy: TapiTopologyRestorationPolicy + """ + + self._restoration_policy = restoration_policy + + @property + def protection_type(self) -> TapiTopologyProtectionType: + """Gets the protection_type of this TapiTopologyResilienceType. + + + :return: The protection_type of this TapiTopologyResilienceType. + :rtype: TapiTopologyProtectionType + """ + return self._protection_type + + @protection_type.setter + def protection_type(self, protection_type: TapiTopologyProtectionType): + """Sets the protection_type of this TapiTopologyResilienceType. + + + :param protection_type: The protection_type of this TapiTopologyResilienceType. + :type protection_type: TapiTopologyProtectionType + """ + + self._protection_type = protection_type diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_resilience_type_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_resilience_type_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..0aee9c035b3611c5f03716101aa0a0b0c7683ef7 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_resilience_type_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_resilience_type import TapiTopologyResilienceType # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyResilienceTypeWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, resilience_type: TapiTopologyResilienceType=None): # noqa: E501 + """TapiTopologyResilienceTypeWrapper - a model defined in Swagger + + :param resilience_type: The resilience_type of this TapiTopologyResilienceTypeWrapper. # noqa: E501 + :type resilience_type: TapiTopologyResilienceType + """ + self.swagger_types = { + 'resilience_type': TapiTopologyResilienceType + } + + self.attribute_map = { + 'resilience_type': 'resilience-type' + } + self._resilience_type = resilience_type + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyResilienceTypeWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.ResilienceTypeWrapper of this TapiTopologyResilienceTypeWrapper. # noqa: E501 + :rtype: TapiTopologyResilienceTypeWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def resilience_type(self) -> TapiTopologyResilienceType: + """Gets the resilience_type of this TapiTopologyResilienceTypeWrapper. + + + :return: The resilience_type of this TapiTopologyResilienceTypeWrapper. + :rtype: TapiTopologyResilienceType + """ + return self._resilience_type + + @resilience_type.setter + def resilience_type(self, resilience_type: TapiTopologyResilienceType): + """Sets the resilience_type of this TapiTopologyResilienceTypeWrapper. + + + :param resilience_type: The resilience_type of this TapiTopologyResilienceTypeWrapper. + :type resilience_type: TapiTopologyResilienceType + """ + + self._resilience_type = resilience_type diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_restoration_policy.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_restoration_policy.py new file mode 100644 index 0000000000000000000000000000000000000000..0986e10693a23a54f1a6fb26fca981ecc376d473 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_restoration_policy.py @@ -0,0 +1,43 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyRestorationPolicy(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + PER_DOMAIN_RESTORATION = "PER_DOMAIN_RESTORATION" + END_TO_END_RESTORATION = "END_TO_END_RESTORATION" + NA = "NA" + def __init__(self): # noqa: E501 + """TapiTopologyRestorationPolicy - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyRestorationPolicy': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.RestorationPolicy of this TapiTopologyRestorationPolicy. # noqa: E501 + :rtype: TapiTopologyRestorationPolicy + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_risk_characteristic.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_risk_characteristic.py new file mode 100644 index 0000000000000000000000000000000000000000..8e65e521e5cb653b379fd648e15aff18876c5375 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_risk_characteristic.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyRiskCharacteristic(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, risk_characteristic_name: str=None, risk_identifier_list: List[str]=None): # noqa: E501 + """TapiTopologyRiskCharacteristic - a model defined in Swagger + + :param risk_characteristic_name: The risk_characteristic_name of this TapiTopologyRiskCharacteristic. # noqa: E501 + :type risk_characteristic_name: str + :param risk_identifier_list: The risk_identifier_list of this TapiTopologyRiskCharacteristic. # noqa: E501 + :type risk_identifier_list: List[str] + """ + self.swagger_types = { + 'risk_characteristic_name': str, + 'risk_identifier_list': List[str] + } + + self.attribute_map = { + 'risk_characteristic_name': 'risk-characteristic-name', + 'risk_identifier_list': 'risk-identifier-list' + } + self._risk_characteristic_name = risk_characteristic_name + self._risk_identifier_list = risk_identifier_list + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyRiskCharacteristic': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.RiskCharacteristic of this TapiTopologyRiskCharacteristic. # noqa: E501 + :rtype: TapiTopologyRiskCharacteristic + """ + return util.deserialize_model(dikt, cls) + + @property + def risk_characteristic_name(self) -> str: + """Gets the risk_characteristic_name of this TapiTopologyRiskCharacteristic. + + The name of the risk characteristic. The characteristic may be related to a specific degree of closeness. For example a particular characteristic may apply to failures that are localized (e.g. to one side of a road) where as another characteristic may relate to failures that have a broader impact (e.g. both sides of a road that crosses a bridge). Depending upon the importance of the traffic being routed different risk characteristics will be evaluated. # noqa: E501 + + :return: The risk_characteristic_name of this TapiTopologyRiskCharacteristic. + :rtype: str + """ + return self._risk_characteristic_name + + @risk_characteristic_name.setter + def risk_characteristic_name(self, risk_characteristic_name: str): + """Sets the risk_characteristic_name of this TapiTopologyRiskCharacteristic. + + The name of the risk characteristic. The characteristic may be related to a specific degree of closeness. For example a particular characteristic may apply to failures that are localized (e.g. to one side of a road) where as another characteristic may relate to failures that have a broader impact (e.g. both sides of a road that crosses a bridge). Depending upon the importance of the traffic being routed different risk characteristics will be evaluated. # noqa: E501 + + :param risk_characteristic_name: The risk_characteristic_name of this TapiTopologyRiskCharacteristic. + :type risk_characteristic_name: str + """ + + self._risk_characteristic_name = risk_characteristic_name + + @property + def risk_identifier_list(self) -> List[str]: + """Gets the risk_identifier_list of this TapiTopologyRiskCharacteristic. + + A list of the identifiers of each physical/geographic unit (with the specific risk characteristic) that is related to a segment of the TopologicalEntity. # noqa: E501 + + :return: The risk_identifier_list of this TapiTopologyRiskCharacteristic. + :rtype: List[str] + """ + return self._risk_identifier_list + + @risk_identifier_list.setter + def risk_identifier_list(self, risk_identifier_list: List[str]): + """Sets the risk_identifier_list of this TapiTopologyRiskCharacteristic. + + A list of the identifiers of each physical/geographic unit (with the specific risk characteristic) that is related to a segment of the TopologicalEntity. # noqa: E501 + + :param risk_identifier_list: The risk_identifier_list of this TapiTopologyRiskCharacteristic. + :type risk_identifier_list: List[str] + """ + + self._risk_identifier_list = risk_identifier_list diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_risk_characteristic_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_risk_characteristic_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..030e148e23f6dde64eed41f2986a50088359c3f6 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_risk_characteristic_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_risk_characteristic import TapiTopologyRiskCharacteristic # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyRiskCharacteristicWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, risk_diversity_characteristic: TapiTopologyRiskCharacteristic=None): # noqa: E501 + """TapiTopologyRiskCharacteristicWrapper - a model defined in Swagger + + :param risk_diversity_characteristic: The risk_diversity_characteristic of this TapiTopologyRiskCharacteristicWrapper. # noqa: E501 + :type risk_diversity_characteristic: TapiTopologyRiskCharacteristic + """ + self.swagger_types = { + 'risk_diversity_characteristic': TapiTopologyRiskCharacteristic + } + + self.attribute_map = { + 'risk_diversity_characteristic': 'risk-diversity-characteristic' + } + self._risk_diversity_characteristic = risk_diversity_characteristic + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyRiskCharacteristicWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.RiskCharacteristicWrapper of this TapiTopologyRiskCharacteristicWrapper. # noqa: E501 + :rtype: TapiTopologyRiskCharacteristicWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def risk_diversity_characteristic(self) -> TapiTopologyRiskCharacteristic: + """Gets the risk_diversity_characteristic of this TapiTopologyRiskCharacteristicWrapper. + + + :return: The risk_diversity_characteristic of this TapiTopologyRiskCharacteristicWrapper. + :rtype: TapiTopologyRiskCharacteristic + """ + return self._risk_diversity_characteristic + + @risk_diversity_characteristic.setter + def risk_diversity_characteristic(self, risk_diversity_characteristic: TapiTopologyRiskCharacteristic): + """Sets the risk_diversity_characteristic of this TapiTopologyRiskCharacteristicWrapper. + + + :param risk_diversity_characteristic: The risk_diversity_characteristic of this TapiTopologyRiskCharacteristicWrapper. + :type risk_diversity_characteristic: TapiTopologyRiskCharacteristic + """ + + self._risk_diversity_characteristic = risk_diversity_characteristic diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_risk_parameter_pac.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_risk_parameter_pac.py new file mode 100644 index 0000000000000000000000000000000000000000..0aa546ad8ff49aa299c9a90174c9cb912269c725 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_risk_parameter_pac.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_risk_characteristic import TapiTopologyRiskCharacteristic # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyRiskParameterPac(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, risk_characteristic: List[TapiTopologyRiskCharacteristic]=None): # noqa: E501 + """TapiTopologyRiskParameterPac - a model defined in Swagger + + :param risk_characteristic: The risk_characteristic of this TapiTopologyRiskParameterPac. # noqa: E501 + :type risk_characteristic: List[TapiTopologyRiskCharacteristic] + """ + self.swagger_types = { + 'risk_characteristic': List[TapiTopologyRiskCharacteristic] + } + + self.attribute_map = { + 'risk_characteristic': 'risk-characteristic' + } + self._risk_characteristic = risk_characteristic + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyRiskParameterPac': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.RiskParameterPac of this TapiTopologyRiskParameterPac. # noqa: E501 + :rtype: TapiTopologyRiskParameterPac + """ + return util.deserialize_model(dikt, cls) + + @property + def risk_characteristic(self) -> List[TapiTopologyRiskCharacteristic]: + """Gets the risk_characteristic of this TapiTopologyRiskParameterPac. + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :return: The risk_characteristic of this TapiTopologyRiskParameterPac. + :rtype: List[TapiTopologyRiskCharacteristic] + """ + return self._risk_characteristic + + @risk_characteristic.setter + def risk_characteristic(self, risk_characteristic: List[TapiTopologyRiskCharacteristic]): + """Sets the risk_characteristic of this TapiTopologyRiskParameterPac. + + A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration. # noqa: E501 + + :param risk_characteristic: The risk_characteristic of this TapiTopologyRiskParameterPac. + :type risk_characteristic: List[TapiTopologyRiskCharacteristic] + """ + + self._risk_characteristic = risk_characteristic diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_rule.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_rule.py new file mode 100644 index 0000000000000000000000000000000000000000..8d087fefb918b7fb167522f3964a96fb8519cd3f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_rule.py @@ -0,0 +1,346 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_local_class import TapiCommonLocalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_port_direction import TapiCommonPortDirection # noqa: F401,E501 +from tapi_server.models.tapi_topology_connection_spec_reference import TapiTopologyConnectionSpecReference # noqa: F401,E501 +from tapi_server.models.tapi_topology_forwarding_rule import TapiTopologyForwardingRule # noqa: F401,E501 +from tapi_server.models.tapi_topology_port_role_rule import TapiTopologyPortRoleRule # noqa: F401,E501 +from tapi_server.models.tapi_topology_rule_type import TapiTopologyRuleType # noqa: F401,E501 +from tapi_server.models.tapi_topology_signal_property_rule import TapiTopologySignalPropertyRule # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyRule(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, local_id: str=None, complex_rule: List[str]=None, rule_type: TapiTopologyRuleType=None, signal_property: TapiTopologySignalPropertyRule=None, connection_spec_reference: List[TapiTopologyConnectionSpecReference]=None, cep_port_role: List[TapiTopologyPortRoleRule]=None, cep_direction: List[TapiCommonPortDirection]=None, override_priority: int=None, layer_protocol_qualifier: List[str]=None, forwarding_rule: TapiTopologyForwardingRule=None): # noqa: E501 + """TapiTopologyRule - a model defined in Swagger + + :param name: The name of this TapiTopologyRule. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param local_id: The local_id of this TapiTopologyRule. # noqa: E501 + :type local_id: str + :param complex_rule: The complex_rule of this TapiTopologyRule. # noqa: E501 + :type complex_rule: List[str] + :param rule_type: The rule_type of this TapiTopologyRule. # noqa: E501 + :type rule_type: TapiTopologyRuleType + :param signal_property: The signal_property of this TapiTopologyRule. # noqa: E501 + :type signal_property: TapiTopologySignalPropertyRule + :param connection_spec_reference: The connection_spec_reference of this TapiTopologyRule. # noqa: E501 + :type connection_spec_reference: List[TapiTopologyConnectionSpecReference] + :param cep_port_role: The cep_port_role of this TapiTopologyRule. # noqa: E501 + :type cep_port_role: List[TapiTopologyPortRoleRule] + :param cep_direction: The cep_direction of this TapiTopologyRule. # noqa: E501 + :type cep_direction: List[TapiCommonPortDirection] + :param override_priority: The override_priority of this TapiTopologyRule. # noqa: E501 + :type override_priority: int + :param layer_protocol_qualifier: The layer_protocol_qualifier of this TapiTopologyRule. # noqa: E501 + :type layer_protocol_qualifier: List[str] + :param forwarding_rule: The forwarding_rule of this TapiTopologyRule. # noqa: E501 + :type forwarding_rule: TapiTopologyForwardingRule + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'local_id': str, + 'complex_rule': List[str], + 'rule_type': TapiTopologyRuleType, + 'signal_property': TapiTopologySignalPropertyRule, + 'connection_spec_reference': List[TapiTopologyConnectionSpecReference], + 'cep_port_role': List[TapiTopologyPortRoleRule], + 'cep_direction': List[TapiCommonPortDirection], + 'override_priority': int, + 'layer_protocol_qualifier': List[str], + 'forwarding_rule': TapiTopologyForwardingRule + } + + self.attribute_map = { + 'name': 'name', + 'local_id': 'local-id', + 'complex_rule': 'complex-rule', + 'rule_type': 'rule-type', + 'signal_property': 'signal-property', + 'connection_spec_reference': 'connection-spec-reference', + 'cep_port_role': 'cep-port-role', + 'cep_direction': 'cep-direction', + 'override_priority': 'override-priority', + 'layer_protocol_qualifier': 'layer-protocol-qualifier', + 'forwarding_rule': 'forwarding-rule' + } + self._name = name + self._local_id = local_id + self._complex_rule = complex_rule + self._rule_type = rule_type + self._signal_property = signal_property + self._connection_spec_reference = connection_spec_reference + self._cep_port_role = cep_port_role + self._cep_direction = cep_direction + self._override_priority = override_priority + self._layer_protocol_qualifier = layer_protocol_qualifier + self._forwarding_rule = forwarding_rule + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyRule': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.Rule of this TapiTopologyRule. # noqa: E501 + :rtype: TapiTopologyRule + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiTopologyRule. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiTopologyRule. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiTopologyRule. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiTopologyRule. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def local_id(self) -> str: + """Gets the local_id of this TapiTopologyRule. + + none # noqa: E501 + + :return: The local_id of this TapiTopologyRule. + :rtype: str + """ + return self._local_id + + @local_id.setter + def local_id(self, local_id: str): + """Sets the local_id of this TapiTopologyRule. + + none # noqa: E501 + + :param local_id: The local_id of this TapiTopologyRule. + :type local_id: str + """ + + self._local_id = local_id + + @property + def complex_rule(self) -> List[str]: + """Gets the complex_rule of this TapiTopologyRule. + + Allows for more complex rules where the basic rule system is not sufficient. # noqa: E501 + + :return: The complex_rule of this TapiTopologyRule. + :rtype: List[str] + """ + return self._complex_rule + + @complex_rule.setter + def complex_rule(self, complex_rule: List[str]): + """Sets the complex_rule of this TapiTopologyRule. + + Allows for more complex rules where the basic rule system is not sufficient. # noqa: E501 + + :param complex_rule: The complex_rule of this TapiTopologyRule. + :type complex_rule: List[str] + """ + + self._complex_rule = complex_rule + + @property + def rule_type(self) -> TapiTopologyRuleType: + """Gets the rule_type of this TapiTopologyRule. + + + :return: The rule_type of this TapiTopologyRule. + :rtype: TapiTopologyRuleType + """ + return self._rule_type + + @rule_type.setter + def rule_type(self, rule_type: TapiTopologyRuleType): + """Sets the rule_type of this TapiTopologyRule. + + + :param rule_type: The rule_type of this TapiTopologyRule. + :type rule_type: TapiTopologyRuleType + """ + + self._rule_type = rule_type + + @property + def signal_property(self) -> TapiTopologySignalPropertyRule: + """Gets the signal_property of this TapiTopologyRule. + + + :return: The signal_property of this TapiTopologyRule. + :rtype: TapiTopologySignalPropertyRule + """ + return self._signal_property + + @signal_property.setter + def signal_property(self, signal_property: TapiTopologySignalPropertyRule): + """Sets the signal_property of this TapiTopologyRule. + + + :param signal_property: The signal_property of this TapiTopologyRule. + :type signal_property: TapiTopologySignalPropertyRule + """ + + self._signal_property = signal_property + + @property + def connection_spec_reference(self) -> List[TapiTopologyConnectionSpecReference]: + """Gets the connection_spec_reference of this TapiTopologyRule. + + Identifies the type of connection that the rule applies to. If the attribute is not present then the rule applies to all types of connection supported by the device. # noqa: E501 + + :return: The connection_spec_reference of this TapiTopologyRule. + :rtype: List[TapiTopologyConnectionSpecReference] + """ + return self._connection_spec_reference + + @connection_spec_reference.setter + def connection_spec_reference(self, connection_spec_reference: List[TapiTopologyConnectionSpecReference]): + """Sets the connection_spec_reference of this TapiTopologyRule. + + Identifies the type of connection that the rule applies to. If the attribute is not present then the rule applies to all types of connection supported by the device. # noqa: E501 + + :param connection_spec_reference: The connection_spec_reference of this TapiTopologyRule. + :type connection_spec_reference: List[TapiTopologyConnectionSpecReference] + """ + + self._connection_spec_reference = connection_spec_reference + + @property + def cep_port_role(self) -> List[TapiTopologyPortRoleRule]: + """Gets the cep_port_role of this TapiTopologyRule. + + Indicates the port role to which the rule applies. The port role is interpreted in the context of the connection type which is identified by the connection spec. The port role is not meaningful in the absence of a connection spec reference. If a node rule group carries a port role, that role applies also to the associated inter rule where the combination of the roles in the node rule groups at the ends of the inter group rule define the connection orientation. For example a root-and-leaf connection may be used in a node where a node rule group collects one set of NEPs has the port role 'root' and another node rule group collects another set of NEPs has the port role 'leaf' where these are joined by an inter rule group. This combination specifies an allowed orientation of the root-and-leaf connection. No port role statement means all port roles are allowed. # noqa: E501 + + :return: The cep_port_role of this TapiTopologyRule. + :rtype: List[TapiTopologyPortRoleRule] + """ + return self._cep_port_role + + @cep_port_role.setter + def cep_port_role(self, cep_port_role: List[TapiTopologyPortRoleRule]): + """Sets the cep_port_role of this TapiTopologyRule. + + Indicates the port role to which the rule applies. The port role is interpreted in the context of the connection type which is identified by the connection spec. The port role is not meaningful in the absence of a connection spec reference. If a node rule group carries a port role, that role applies also to the associated inter rule where the combination of the roles in the node rule groups at the ends of the inter group rule define the connection orientation. For example a root-and-leaf connection may be used in a node where a node rule group collects one set of NEPs has the port role 'root' and another node rule group collects another set of NEPs has the port role 'leaf' where these are joined by an inter rule group. This combination specifies an allowed orientation of the root-and-leaf connection. No port role statement means all port roles are allowed. # noqa: E501 + + :param cep_port_role: The cep_port_role of this TapiTopologyRule. + :type cep_port_role: List[TapiTopologyPortRoleRule] + """ + + self._cep_port_role = cep_port_role + + @property + def cep_direction(self) -> List[TapiCommonPortDirection]: + """Gets the cep_direction of this TapiTopologyRule. + + cep direction is a list of port directions that the rule applies to. No entry means all cep directions. # noqa: E501 + + :return: The cep_direction of this TapiTopologyRule. + :rtype: List[TapiCommonPortDirection] + """ + return self._cep_direction + + @cep_direction.setter + def cep_direction(self, cep_direction: List[TapiCommonPortDirection]): + """Sets the cep_direction of this TapiTopologyRule. + + cep direction is a list of port directions that the rule applies to. No entry means all cep directions. # noqa: E501 + + :param cep_direction: The cep_direction of this TapiTopologyRule. + :type cep_direction: List[TapiCommonPortDirection] + """ + + self._cep_direction = cep_direction + + @property + def override_priority(self) -> int: + """Gets the override_priority of this TapiTopologyRule. + + The overridePriority allows for one rule in a rule group to override another. Priority n rules override priority n+1 rules. Rules of the same priority override as follows (n overrides n+1): 1 - MustNot 2 - Must 3 - May 4 - Null Within a rule the flexibility rules (signal, port role...) override as follows (n overriedes n+1): 1 - Any 2 - Same 3 - Different Where there are two or more 'Same' rules, they will form an intersection where all must be met. # noqa: E501 + + :return: The override_priority of this TapiTopologyRule. + :rtype: int + """ + return self._override_priority + + @override_priority.setter + def override_priority(self, override_priority: int): + """Sets the override_priority of this TapiTopologyRule. + + The overridePriority allows for one rule in a rule group to override another. Priority n rules override priority n+1 rules. Rules of the same priority override as follows (n overrides n+1): 1 - MustNot 2 - Must 3 - May 4 - Null Within a rule the flexibility rules (signal, port role...) override as follows (n overriedes n+1): 1 - Any 2 - Same 3 - Different Where there are two or more 'Same' rules, they will form an intersection where all must be met. # noqa: E501 + + :param override_priority: The override_priority of this TapiTopologyRule. + :type override_priority: int + """ + + self._override_priority = override_priority + + @property + def layer_protocol_qualifier(self) -> List[str]: + """Gets the layer_protocol_qualifier of this TapiTopologyRule. + + Qualifies a rule for a particular layerProtocol identifying the qualifiers that the rule apples to. If the attribute is not present then the rule applies to all relevant qualifiers of the layer protocol of the parent entity. # noqa: E501 + + :return: The layer_protocol_qualifier of this TapiTopologyRule. + :rtype: List[str] + """ + return self._layer_protocol_qualifier + + @layer_protocol_qualifier.setter + def layer_protocol_qualifier(self, layer_protocol_qualifier: List[str]): + """Sets the layer_protocol_qualifier of this TapiTopologyRule. + + Qualifies a rule for a particular layerProtocol identifying the qualifiers that the rule apples to. If the attribute is not present then the rule applies to all relevant qualifiers of the layer protocol of the parent entity. # noqa: E501 + + :param layer_protocol_qualifier: The layer_protocol_qualifier of this TapiTopologyRule. + :type layer_protocol_qualifier: List[str] + """ + + self._layer_protocol_qualifier = layer_protocol_qualifier + + @property + def forwarding_rule(self) -> TapiTopologyForwardingRule: + """Gets the forwarding_rule of this TapiTopologyRule. + + + :return: The forwarding_rule of this TapiTopologyRule. + :rtype: TapiTopologyForwardingRule + """ + return self._forwarding_rule + + @forwarding_rule.setter + def forwarding_rule(self, forwarding_rule: TapiTopologyForwardingRule): + """Sets the forwarding_rule of this TapiTopologyRule. + + + :param forwarding_rule: The forwarding_rule of this TapiTopologyRule. + :type forwarding_rule: TapiTopologyForwardingRule + """ + + self._forwarding_rule = forwarding_rule diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_rule_type.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_rule_type.py new file mode 100644 index 0000000000000000000000000000000000000000..3cdfeafe5ebe9d8af5deb7efeaf0ae5c8d33af87 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_rule_type.py @@ -0,0 +1,46 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyRuleType(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + allowed enum values + """ + FORWARDING = "FORWARDING" + CAPACITY = "CAPACITY" + COST = "COST" + TIMING = "TIMING" + RISK = "RISK" + GROUPING = "GROUPING" + def __init__(self): # noqa: E501 + """TapiTopologyRuleType - a model defined in Swagger + + """ + self.swagger_types = { + } + + self.attribute_map = { + } + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyRuleType': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.RuleType of this TapiTopologyRuleType. # noqa: E501 + :rtype: TapiTopologyRuleType + """ + return util.deserialize_model(dikt, cls) diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_rule_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_rule_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..1ce9e5fa2ada44897b31ff611934196d26a1179e --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_rule_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_rule import TapiTopologyRule # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyRuleWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, rule: TapiTopologyRule=None): # noqa: E501 + """TapiTopologyRuleWrapper - a model defined in Swagger + + :param rule: The rule of this TapiTopologyRuleWrapper. # noqa: E501 + :type rule: TapiTopologyRule + """ + self.swagger_types = { + 'rule': TapiTopologyRule + } + + self.attribute_map = { + 'rule': 'rule' + } + self._rule = rule + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyRuleWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.RuleWrapper of this TapiTopologyRuleWrapper. # noqa: E501 + :rtype: TapiTopologyRuleWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def rule(self) -> TapiTopologyRule: + """Gets the rule of this TapiTopologyRuleWrapper. + + + :return: The rule of this TapiTopologyRuleWrapper. + :rtype: TapiTopologyRule + """ + return self._rule + + @rule.setter + def rule(self, rule: TapiTopologyRule): + """Sets the rule of this TapiTopologyRuleWrapper. + + + :param rule: The rule of this TapiTopologyRuleWrapper. + :type rule: TapiTopologyRule + """ + + self._rule = rule diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_signal_property_rule.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_signal_property_rule.py new file mode 100644 index 0000000000000000000000000000000000000000..a7faecd16ebe8be8ed974a565d1c4efd79615a05 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_signal_property_rule.py @@ -0,0 +1,148 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologySignalPropertyRule(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, number_of_signal_values: int=None, applicable_signal_value: List[str]=None, signal_property_value_rule: str=None, signal_property_name: str=None): # noqa: E501 + """TapiTopologySignalPropertyRule - a model defined in Swagger + + :param number_of_signal_values: The number_of_signal_values of this TapiTopologySignalPropertyRule. # noqa: E501 + :type number_of_signal_values: int + :param applicable_signal_value: The applicable_signal_value of this TapiTopologySignalPropertyRule. # noqa: E501 + :type applicable_signal_value: List[str] + :param signal_property_value_rule: The signal_property_value_rule of this TapiTopologySignalPropertyRule. # noqa: E501 + :type signal_property_value_rule: str + :param signal_property_name: The signal_property_name of this TapiTopologySignalPropertyRule. # noqa: E501 + :type signal_property_name: str + """ + self.swagger_types = { + 'number_of_signal_values': int, + 'applicable_signal_value': List[str], + 'signal_property_value_rule': str, + 'signal_property_name': str + } + + self.attribute_map = { + 'number_of_signal_values': 'number-of-signal-values', + 'applicable_signal_value': 'applicable-signal-value', + 'signal_property_value_rule': 'signal-property-value-rule', + 'signal_property_name': 'signal-property-name' + } + self._number_of_signal_values = number_of_signal_values + self._applicable_signal_value = applicable_signal_value + self._signal_property_value_rule = signal_property_value_rule + self._signal_property_name = signal_property_name + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologySignalPropertyRule': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.SignalPropertyRule of this TapiTopologySignalPropertyRule. # noqa: E501 + :rtype: TapiTopologySignalPropertyRule + """ + return util.deserialize_model(dikt, cls) + + @property + def number_of_signal_values(self) -> int: + """Gets the number_of_signal_values of this TapiTopologySignalPropertyRule. + + The number of instances of this specific property that can be supported by the group. # noqa: E501 + + :return: The number_of_signal_values of this TapiTopologySignalPropertyRule. + :rtype: int + """ + return self._number_of_signal_values + + @number_of_signal_values.setter + def number_of_signal_values(self, number_of_signal_values: int): + """Sets the number_of_signal_values of this TapiTopologySignalPropertyRule. + + The number of instances of this specific property that can be supported by the group. # noqa: E501 + + :param number_of_signal_values: The number_of_signal_values of this TapiTopologySignalPropertyRule. + :type number_of_signal_values: int + """ + + self._number_of_signal_values = number_of_signal_values + + @property + def applicable_signal_value(self) -> List[str]: + """Gets the applicable_signal_value of this TapiTopologySignalPropertyRule. + + Specific values of the signal property to which the rule applies. # noqa: E501 + + :return: The applicable_signal_value of this TapiTopologySignalPropertyRule. + :rtype: List[str] + """ + return self._applicable_signal_value + + @applicable_signal_value.setter + def applicable_signal_value(self, applicable_signal_value: List[str]): + """Sets the applicable_signal_value of this TapiTopologySignalPropertyRule. + + Specific values of the signal property to which the rule applies. # noqa: E501 + + :param applicable_signal_value: The applicable_signal_value of this TapiTopologySignalPropertyRule. + :type applicable_signal_value: List[str] + """ + + self._applicable_signal_value = applicable_signal_value + + @property + def signal_property_value_rule(self) -> str: + """Gets the signal_property_value_rule of this TapiTopologySignalPropertyRule. + + Indicates how the signal properties should be accounted for. # noqa: E501 + + :return: The signal_property_value_rule of this TapiTopologySignalPropertyRule. + :rtype: str + """ + return self._signal_property_value_rule + + @signal_property_value_rule.setter + def signal_property_value_rule(self, signal_property_value_rule: str): + """Sets the signal_property_value_rule of this TapiTopologySignalPropertyRule. + + Indicates how the signal properties should be accounted for. # noqa: E501 + + :param signal_property_value_rule: The signal_property_value_rule of this TapiTopologySignalPropertyRule. + :type signal_property_value_rule: str + """ + + self._signal_property_value_rule = signal_property_value_rule + + @property + def signal_property_name(self) -> str: + """Gets the signal_property_name of this TapiTopologySignalPropertyRule. + + The name of the signal property to which the rule applies. # noqa: E501 + + :return: The signal_property_name of this TapiTopologySignalPropertyRule. + :rtype: str + """ + return self._signal_property_name + + @signal_property_name.setter + def signal_property_name(self, signal_property_name: str): + """Sets the signal_property_name of this TapiTopologySignalPropertyRule. + + The name of the signal property to which the rule applies. # noqa: E501 + + :param signal_property_name: The signal_property_name of this TapiTopologySignalPropertyRule. + :type signal_property_name: str + """ + + self._signal_property_name = signal_property_name diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_signal_property_rule_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_signal_property_rule_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..a6553cbd1a1ecfbefa77f9ef95e870709656ca5d --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_signal_property_rule_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_signal_property_rule import TapiTopologySignalPropertyRule # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologySignalPropertyRuleWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, signal_property: TapiTopologySignalPropertyRule=None): # noqa: E501 + """TapiTopologySignalPropertyRuleWrapper - a model defined in Swagger + + :param signal_property: The signal_property of this TapiTopologySignalPropertyRuleWrapper. # noqa: E501 + :type signal_property: TapiTopologySignalPropertyRule + """ + self.swagger_types = { + 'signal_property': TapiTopologySignalPropertyRule + } + + self.attribute_map = { + 'signal_property': 'signal-property' + } + self._signal_property = signal_property + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologySignalPropertyRuleWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.SignalPropertyRuleWrapper of this TapiTopologySignalPropertyRuleWrapper. # noqa: E501 + :rtype: TapiTopologySignalPropertyRuleWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def signal_property(self) -> TapiTopologySignalPropertyRule: + """Gets the signal_property of this TapiTopologySignalPropertyRuleWrapper. + + + :return: The signal_property of this TapiTopologySignalPropertyRuleWrapper. + :rtype: TapiTopologySignalPropertyRule + """ + return self._signal_property + + @signal_property.setter + def signal_property(self, signal_property: TapiTopologySignalPropertyRule): + """Sets the signal_property of this TapiTopologySignalPropertyRuleWrapper. + + + :param signal_property: The signal_property of this TapiTopologySignalPropertyRuleWrapper. + :type signal_property: TapiTopologySignalPropertyRule + """ + + self._signal_property = signal_property diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_topology.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology.py new file mode 100644 index 0000000000000000000000000000000000000000..4cbfa914c30ce5d536c239f99b26f76e63f7679a --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology.py @@ -0,0 +1,181 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_topology_link import TapiTopologyLink # noqa: F401,E501 +from tapi_server.models.tapi_topology_node import TapiTopologyNode # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyTopology(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, name: List[TapiCommonNameAndValue]=None, uuid: str=None, layer_protocol_name: List[TapiCommonLayerProtocolName]=None, link: List[TapiTopologyLink]=None, node: List[TapiTopologyNode]=None): # noqa: E501 + """TapiTopologyTopology - a model defined in Swagger + + :param name: The name of this TapiTopologyTopology. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiTopologyTopology. # noqa: E501 + :type uuid: str + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyTopology. # noqa: E501 + :type layer_protocol_name: List[TapiCommonLayerProtocolName] + :param link: The link of this TapiTopologyTopology. # noqa: E501 + :type link: List[TapiTopologyLink] + :param node: The node of this TapiTopologyTopology. # noqa: E501 + :type node: List[TapiTopologyNode] + """ + self.swagger_types = { + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'layer_protocol_name': List[TapiCommonLayerProtocolName], + 'link': List[TapiTopologyLink], + 'node': List[TapiTopologyNode] + } + + self.attribute_map = { + 'name': 'name', + 'uuid': 'uuid', + 'layer_protocol_name': 'layer-protocol-name', + 'link': 'link', + 'node': 'node' + } + self._name = name + self._uuid = uuid + self._layer_protocol_name = layer_protocol_name + self._link = link + self._node = node + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTopology': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.Topology of this TapiTopologyTopology. # noqa: E501 + :rtype: TapiTopologyTopology + """ + return util.deserialize_model(dikt, cls) + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiTopologyTopology. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiTopologyTopology. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiTopologyTopology. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiTopologyTopology. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiTopologyTopology. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiTopologyTopology. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiTopologyTopology. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiTopologyTopology. + :type uuid: str + """ + + self._uuid = uuid + + @property + def layer_protocol_name(self) -> List[TapiCommonLayerProtocolName]: + """Gets the layer_protocol_name of this TapiTopologyTopology. + + none # noqa: E501 + + :return: The layer_protocol_name of this TapiTopologyTopology. + :rtype: List[TapiCommonLayerProtocolName] + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: List[TapiCommonLayerProtocolName]): + """Sets the layer_protocol_name of this TapiTopologyTopology. + + none # noqa: E501 + + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyTopology. + :type layer_protocol_name: List[TapiCommonLayerProtocolName] + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def link(self) -> List[TapiTopologyLink]: + """Gets the link of this TapiTopologyTopology. + + none # noqa: E501 + + :return: The link of this TapiTopologyTopology. + :rtype: List[TapiTopologyLink] + """ + return self._link + + @link.setter + def link(self, link: List[TapiTopologyLink]): + """Sets the link of this TapiTopologyTopology. + + none # noqa: E501 + + :param link: The link of this TapiTopologyTopology. + :type link: List[TapiTopologyLink] + """ + + self._link = link + + @property + def node(self) -> List[TapiTopologyNode]: + """Gets the node of this TapiTopologyTopology. + + none # noqa: E501 + + :return: The node of this TapiTopologyTopology. + :rtype: List[TapiTopologyNode] + """ + return self._node + + @node.setter + def node(self, node: List[TapiTopologyNode]): + """Sets the node of this TapiTopologyTopology. + + none # noqa: E501 + + :param node: The node of this TapiTopologyTopology. + :type node: List[TapiTopologyNode] + """ + + self._node = node diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_context.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_context.py new file mode 100644 index 0000000000000000000000000000000000000000..d4912545297faa3503d7cef12e456c7ed744e7ab --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_context.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_network_topology_service import TapiTopologyNetworkTopologyService # noqa: F401,E501 +from tapi_server.models.tapi_topology_topology import TapiTopologyTopology # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyTopologyContext(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, nw_topology_service: TapiTopologyNetworkTopologyService=None, topology: List[TapiTopologyTopology]=None): # noqa: E501 + """TapiTopologyTopologyContext - a model defined in Swagger + + :param nw_topology_service: The nw_topology_service of this TapiTopologyTopologyContext. # noqa: E501 + :type nw_topology_service: TapiTopologyNetworkTopologyService + :param topology: The topology of this TapiTopologyTopologyContext. # noqa: E501 + :type topology: List[TapiTopologyTopology] + """ + self.swagger_types = { + 'nw_topology_service': TapiTopologyNetworkTopologyService, + 'topology': List[TapiTopologyTopology] + } + + self.attribute_map = { + 'nw_topology_service': 'nw-topology-service', + 'topology': 'topology' + } + self._nw_topology_service = nw_topology_service + self._topology = topology + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTopologyContext': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.TopologyContext of this TapiTopologyTopologyContext. # noqa: E501 + :rtype: TapiTopologyTopologyContext + """ + return util.deserialize_model(dikt, cls) + + @property + def nw_topology_service(self) -> TapiTopologyNetworkTopologyService: + """Gets the nw_topology_service of this TapiTopologyTopologyContext. + + + :return: The nw_topology_service of this TapiTopologyTopologyContext. + :rtype: TapiTopologyNetworkTopologyService + """ + return self._nw_topology_service + + @nw_topology_service.setter + def nw_topology_service(self, nw_topology_service: TapiTopologyNetworkTopologyService): + """Sets the nw_topology_service of this TapiTopologyTopologyContext. + + + :param nw_topology_service: The nw_topology_service of this TapiTopologyTopologyContext. + :type nw_topology_service: TapiTopologyNetworkTopologyService + """ + + self._nw_topology_service = nw_topology_service + + @property + def topology(self) -> List[TapiTopologyTopology]: + """Gets the topology of this TapiTopologyTopologyContext. + + none # noqa: E501 + + :return: The topology of this TapiTopologyTopologyContext. + :rtype: List[TapiTopologyTopology] + """ + return self._topology + + @topology.setter + def topology(self, topology: List[TapiTopologyTopology]): + """Sets the topology of this TapiTopologyTopologyContext. + + none # noqa: E501 + + :param topology: The topology of this TapiTopologyTopologyContext. + :type topology: List[TapiTopologyTopology] + """ + + self._topology = topology diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_context_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_context_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..08c38f43433d025171c10c7fc7fb9e902e643119 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_context_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_topology_context import TapiTopologyTopologyContext # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyTopologyContextWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, tapi_topologytopology_context: TapiTopologyTopologyContext=None): # noqa: E501 + """TapiTopologyTopologyContextWrapper - a model defined in Swagger + + :param tapi_topologytopology_context: The tapi_topologytopology_context of this TapiTopologyTopologyContextWrapper. # noqa: E501 + :type tapi_topologytopology_context: TapiTopologyTopologyContext + """ + self.swagger_types = { + 'tapi_topologytopology_context': TapiTopologyTopologyContext + } + + self.attribute_map = { + 'tapi_topologytopology_context': 'tapi-topology:topology-context' + } + self._tapi_topologytopology_context = tapi_topologytopology_context + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTopologyContextWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.TopologyContextWrapper of this TapiTopologyTopologyContextWrapper. # noqa: E501 + :rtype: TapiTopologyTopologyContextWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def tapi_topologytopology_context(self) -> TapiTopologyTopologyContext: + """Gets the tapi_topologytopology_context of this TapiTopologyTopologyContextWrapper. + + + :return: The tapi_topologytopology_context of this TapiTopologyTopologyContextWrapper. + :rtype: TapiTopologyTopologyContext + """ + return self._tapi_topologytopology_context + + @tapi_topologytopology_context.setter + def tapi_topologytopology_context(self, tapi_topologytopology_context: TapiTopologyTopologyContext): + """Sets the tapi_topologytopology_context of this TapiTopologyTopologyContextWrapper. + + + :param tapi_topologytopology_context: The tapi_topologytopology_context of this TapiTopologyTopologyContextWrapper. + :type tapi_topologytopology_context: TapiTopologyTopologyContext + """ + + self._tapi_topologytopology_context = tapi_topologytopology_context diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_node.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_node.py new file mode 100644 index 0000000000000000000000000000000000000000..e804dab5ec586fade93a476114474305339914dc --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_node.py @@ -0,0 +1,602 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_common_admin_state_pac import TapiCommonAdminStatePac # noqa: F401,E501 +from tapi_server.models.tapi_common_administrative_state import TapiCommonAdministrativeState # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity import TapiCommonCapacity # noqa: F401,E501 +from tapi_server.models.tapi_common_capacity_pac import TapiCommonCapacityPac # noqa: F401,E501 +from tapi_server.models.tapi_common_global_class import TapiCommonGlobalClass # noqa: F401,E501 +from tapi_server.models.tapi_common_layer_protocol_name import TapiCommonLayerProtocolName # noqa: F401,E501 +from tapi_server.models.tapi_common_lifecycle_state import TapiCommonLifecycleState # noqa: F401,E501 +from tapi_server.models.tapi_common_name_and_value import TapiCommonNameAndValue # noqa: F401,E501 +from tapi_server.models.tapi_common_operational_state import TapiCommonOperationalState # noqa: F401,E501 +from tapi_server.models.tapi_topology_cost_characteristic import TapiTopologyCostCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_edge_point_ref import TapiTopologyNodeEdgePointRef # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_owned_node_edge_point import TapiTopologyNodeOwnedNodeEdgePoint # noqa: F401,E501 +from tapi_server.models.tapi_topology_node_rule_group import TapiTopologyNodeRuleGroup # noqa: F401,E501 +from tapi_server.models.tapi_topology_topology_ref import TapiTopologyTopologyRef # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_cost_pac import TapiTopologyTransferCostPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_integrity_pac import TapiTopologyTransferIntegrityPac # noqa: F401,E501 +from tapi_server.models.tapi_topology_transfer_timing_pac import TapiTopologyTransferTimingPac # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyTopologyNode(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, available_capacity: TapiCommonCapacity=None, total_potential_capacity: TapiCommonCapacity=None, name: List[TapiCommonNameAndValue]=None, uuid: str=None, cost_characteristic: List[TapiTopologyCostCharacteristic]=None, error_characteristic: str=None, unavailable_time_characteristic: str=None, server_integrity_process_characteristic: str=None, delivery_order_characteristic: str=None, repeat_delivery_characteristic: str=None, loss_characteristic: str=None, latency_characteristic: List[TapiTopologyLatencyCharacteristic]=None, operational_state: TapiCommonOperationalState=None, lifecycle_state: TapiCommonLifecycleState=None, administrative_state: TapiCommonAdministrativeState=None, layer_protocol_name: List[TapiCommonLayerProtocolName]=None, encap_topology: TapiTopologyTopologyRef=None, owned_node_edge_point: List[TapiTopologyNodeOwnedNodeEdgePoint]=None, node_rule_group: List[TapiTopologyNodeRuleGroup]=None, aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef]=None): # noqa: E501 + """TapiTopologyTopologyNode - a model defined in Swagger + + :param available_capacity: The available_capacity of this TapiTopologyTopologyNode. # noqa: E501 + :type available_capacity: TapiCommonCapacity + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyTopologyNode. # noqa: E501 + :type total_potential_capacity: TapiCommonCapacity + :param name: The name of this TapiTopologyTopologyNode. # noqa: E501 + :type name: List[TapiCommonNameAndValue] + :param uuid: The uuid of this TapiTopologyTopologyNode. # noqa: E501 + :type uuid: str + :param cost_characteristic: The cost_characteristic of this TapiTopologyTopologyNode. # noqa: E501 + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + :param error_characteristic: The error_characteristic of this TapiTopologyTopologyNode. # noqa: E501 + :type error_characteristic: str + :param unavailable_time_characteristic: The unavailable_time_characteristic of this TapiTopologyTopologyNode. # noqa: E501 + :type unavailable_time_characteristic: str + :param server_integrity_process_characteristic: The server_integrity_process_characteristic of this TapiTopologyTopologyNode. # noqa: E501 + :type server_integrity_process_characteristic: str + :param delivery_order_characteristic: The delivery_order_characteristic of this TapiTopologyTopologyNode. # noqa: E501 + :type delivery_order_characteristic: str + :param repeat_delivery_characteristic: The repeat_delivery_characteristic of this TapiTopologyTopologyNode. # noqa: E501 + :type repeat_delivery_characteristic: str + :param loss_characteristic: The loss_characteristic of this TapiTopologyTopologyNode. # noqa: E501 + :type loss_characteristic: str + :param latency_characteristic: The latency_characteristic of this TapiTopologyTopologyNode. # noqa: E501 + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + :param operational_state: The operational_state of this TapiTopologyTopologyNode. # noqa: E501 + :type operational_state: TapiCommonOperationalState + :param lifecycle_state: The lifecycle_state of this TapiTopologyTopologyNode. # noqa: E501 + :type lifecycle_state: TapiCommonLifecycleState + :param administrative_state: The administrative_state of this TapiTopologyTopologyNode. # noqa: E501 + :type administrative_state: TapiCommonAdministrativeState + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyTopologyNode. # noqa: E501 + :type layer_protocol_name: List[TapiCommonLayerProtocolName] + :param encap_topology: The encap_topology of this TapiTopologyTopologyNode. # noqa: E501 + :type encap_topology: TapiTopologyTopologyRef + :param owned_node_edge_point: The owned_node_edge_point of this TapiTopologyTopologyNode. # noqa: E501 + :type owned_node_edge_point: List[TapiTopologyNodeOwnedNodeEdgePoint] + :param node_rule_group: The node_rule_group of this TapiTopologyTopologyNode. # noqa: E501 + :type node_rule_group: List[TapiTopologyNodeRuleGroup] + :param aggregated_node_edge_point: The aggregated_node_edge_point of this TapiTopologyTopologyNode. # noqa: E501 + :type aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef] + """ + self.swagger_types = { + 'available_capacity': TapiCommonCapacity, + 'total_potential_capacity': TapiCommonCapacity, + 'name': List[TapiCommonNameAndValue], + 'uuid': str, + 'cost_characteristic': List[TapiTopologyCostCharacteristic], + 'error_characteristic': str, + 'unavailable_time_characteristic': str, + 'server_integrity_process_characteristic': str, + 'delivery_order_characteristic': str, + 'repeat_delivery_characteristic': str, + 'loss_characteristic': str, + 'latency_characteristic': List[TapiTopologyLatencyCharacteristic], + 'operational_state': TapiCommonOperationalState, + 'lifecycle_state': TapiCommonLifecycleState, + 'administrative_state': TapiCommonAdministrativeState, + 'layer_protocol_name': List[TapiCommonLayerProtocolName], + 'encap_topology': TapiTopologyTopologyRef, + 'owned_node_edge_point': List[TapiTopologyNodeOwnedNodeEdgePoint], + 'node_rule_group': List[TapiTopologyNodeRuleGroup], + 'aggregated_node_edge_point': List[TapiTopologyNodeEdgePointRef] + } + + self.attribute_map = { + 'available_capacity': 'available-capacity', + 'total_potential_capacity': 'total-potential-capacity', + 'name': 'name', + 'uuid': 'uuid', + 'cost_characteristic': 'cost-characteristic', + 'error_characteristic': 'error-characteristic', + 'unavailable_time_characteristic': 'unavailable-time-characteristic', + 'server_integrity_process_characteristic': 'server-integrity-process-characteristic', + 'delivery_order_characteristic': 'delivery-order-characteristic', + 'repeat_delivery_characteristic': 'repeat-delivery-characteristic', + 'loss_characteristic': 'loss-characteristic', + 'latency_characteristic': 'latency-characteristic', + 'operational_state': 'operational-state', + 'lifecycle_state': 'lifecycle-state', + 'administrative_state': 'administrative-state', + 'layer_protocol_name': 'layer-protocol-name', + 'encap_topology': 'encap-topology', + 'owned_node_edge_point': 'owned-node-edge-point', + 'node_rule_group': 'node-rule-group', + 'aggregated_node_edge_point': 'aggregated-node-edge-point' + } + self._available_capacity = available_capacity + self._total_potential_capacity = total_potential_capacity + self._name = name + self._uuid = uuid + self._cost_characteristic = cost_characteristic + self._error_characteristic = error_characteristic + self._unavailable_time_characteristic = unavailable_time_characteristic + self._server_integrity_process_characteristic = server_integrity_process_characteristic + self._delivery_order_characteristic = delivery_order_characteristic + self._repeat_delivery_characteristic = repeat_delivery_characteristic + self._loss_characteristic = loss_characteristic + self._latency_characteristic = latency_characteristic + self._operational_state = operational_state + self._lifecycle_state = lifecycle_state + self._administrative_state = administrative_state + self._layer_protocol_name = layer_protocol_name + self._encap_topology = encap_topology + self._owned_node_edge_point = owned_node_edge_point + self._node_rule_group = node_rule_group + self._aggregated_node_edge_point = aggregated_node_edge_point + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTopologyNode': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.topology.Node of this TapiTopologyTopologyNode. # noqa: E501 + :rtype: TapiTopologyTopologyNode + """ + return util.deserialize_model(dikt, cls) + + @property + def available_capacity(self) -> TapiCommonCapacity: + """Gets the available_capacity of this TapiTopologyTopologyNode. + + + :return: The available_capacity of this TapiTopologyTopologyNode. + :rtype: TapiCommonCapacity + """ + return self._available_capacity + + @available_capacity.setter + def available_capacity(self, available_capacity: TapiCommonCapacity): + """Sets the available_capacity of this TapiTopologyTopologyNode. + + + :param available_capacity: The available_capacity of this TapiTopologyTopologyNode. + :type available_capacity: TapiCommonCapacity + """ + + self._available_capacity = available_capacity + + @property + def total_potential_capacity(self) -> TapiCommonCapacity: + """Gets the total_potential_capacity of this TapiTopologyTopologyNode. + + + :return: The total_potential_capacity of this TapiTopologyTopologyNode. + :rtype: TapiCommonCapacity + """ + return self._total_potential_capacity + + @total_potential_capacity.setter + def total_potential_capacity(self, total_potential_capacity: TapiCommonCapacity): + """Sets the total_potential_capacity of this TapiTopologyTopologyNode. + + + :param total_potential_capacity: The total_potential_capacity of this TapiTopologyTopologyNode. + :type total_potential_capacity: TapiCommonCapacity + """ + + self._total_potential_capacity = total_potential_capacity + + @property + def name(self) -> List[TapiCommonNameAndValue]: + """Gets the name of this TapiTopologyTopologyNode. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :return: The name of this TapiTopologyTopologyNode. + :rtype: List[TapiCommonNameAndValue] + """ + return self._name + + @name.setter + def name(self, name: List[TapiCommonNameAndValue]): + """Sets the name of this TapiTopologyTopologyNode. + + List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity. # noqa: E501 + + :param name: The name of this TapiTopologyTopologyNode. + :type name: List[TapiCommonNameAndValue] + """ + + self._name = name + + @property + def uuid(self) -> str: + """Gets the uuid of this TapiTopologyTopologyNode. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :return: The uuid of this TapiTopologyTopologyNode. + :rtype: str + """ + return self._uuid + + @uuid.setter + def uuid(self, uuid: str): + """Sets the uuid of this TapiTopologyTopologyNode. + + UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 # noqa: E501 + + :param uuid: The uuid of this TapiTopologyTopologyNode. + :type uuid: str + """ + + self._uuid = uuid + + @property + def cost_characteristic(self) -> List[TapiTopologyCostCharacteristic]: + """Gets the cost_characteristic of this TapiTopologyTopologyNode. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :return: The cost_characteristic of this TapiTopologyTopologyNode. + :rtype: List[TapiTopologyCostCharacteristic] + """ + return self._cost_characteristic + + @cost_characteristic.setter + def cost_characteristic(self, cost_characteristic: List[TapiTopologyCostCharacteristic]): + """Sets the cost_characteristic of this TapiTopologyTopologyNode. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param cost_characteristic: The cost_characteristic of this TapiTopologyTopologyNode. + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + """ + + self._cost_characteristic = cost_characteristic + + @property + def error_characteristic(self) -> str: + """Gets the error_characteristic of this TapiTopologyTopologyNode. + + Describes the degree to which the signal propagated can be errored. Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded. # noqa: E501 + + :return: The error_characteristic of this TapiTopologyTopologyNode. + :rtype: str + """ + return self._error_characteristic + + @error_characteristic.setter + def error_characteristic(self, error_characteristic: str): + """Sets the error_characteristic of this TapiTopologyTopologyNode. + + Describes the degree to which the signal propagated can be errored. Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded. # noqa: E501 + + :param error_characteristic: The error_characteristic of this TapiTopologyTopologyNode. + :type error_characteristic: str + """ + + self._error_characteristic = error_characteristic + + @property + def unavailable_time_characteristic(self) -> str: + """Gets the unavailable_time_characteristic of this TapiTopologyTopologyNode. + + Describes the duration for which there may be no valid signal propagated. # noqa: E501 + + :return: The unavailable_time_characteristic of this TapiTopologyTopologyNode. + :rtype: str + """ + return self._unavailable_time_characteristic + + @unavailable_time_characteristic.setter + def unavailable_time_characteristic(self, unavailable_time_characteristic: str): + """Sets the unavailable_time_characteristic of this TapiTopologyTopologyNode. + + Describes the duration for which there may be no valid signal propagated. # noqa: E501 + + :param unavailable_time_characteristic: The unavailable_time_characteristic of this TapiTopologyTopologyNode. + :type unavailable_time_characteristic: str + """ + + self._unavailable_time_characteristic = unavailable_time_characteristic + + @property + def server_integrity_process_characteristic(self) -> str: + """Gets the server_integrity_process_characteristic of this TapiTopologyTopologyNode. + + Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity. # noqa: E501 + + :return: The server_integrity_process_characteristic of this TapiTopologyTopologyNode. + :rtype: str + """ + return self._server_integrity_process_characteristic + + @server_integrity_process_characteristic.setter + def server_integrity_process_characteristic(self, server_integrity_process_characteristic: str): + """Sets the server_integrity_process_characteristic of this TapiTopologyTopologyNode. + + Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity. # noqa: E501 + + :param server_integrity_process_characteristic: The server_integrity_process_characteristic of this TapiTopologyTopologyNode. + :type server_integrity_process_characteristic: str + """ + + self._server_integrity_process_characteristic = server_integrity_process_characteristic + + @property + def delivery_order_characteristic(self) -> str: + """Gets the delivery_order_characteristic of this TapiTopologyTopologyNode. + + Describes the degree to which packets will be delivered out of sequence. Does not apply to TDM as the TDM protocols maintain strict order. # noqa: E501 + + :return: The delivery_order_characteristic of this TapiTopologyTopologyNode. + :rtype: str + """ + return self._delivery_order_characteristic + + @delivery_order_characteristic.setter + def delivery_order_characteristic(self, delivery_order_characteristic: str): + """Sets the delivery_order_characteristic of this TapiTopologyTopologyNode. + + Describes the degree to which packets will be delivered out of sequence. Does not apply to TDM as the TDM protocols maintain strict order. # noqa: E501 + + :param delivery_order_characteristic: The delivery_order_characteristic of this TapiTopologyTopologyNode. + :type delivery_order_characteristic: str + """ + + self._delivery_order_characteristic = delivery_order_characteristic + + @property + def repeat_delivery_characteristic(self) -> str: + """Gets the repeat_delivery_characteristic of this TapiTopologyTopologyNode. + + Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example). It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay. # noqa: E501 + + :return: The repeat_delivery_characteristic of this TapiTopologyTopologyNode. + :rtype: str + """ + return self._repeat_delivery_characteristic + + @repeat_delivery_characteristic.setter + def repeat_delivery_characteristic(self, repeat_delivery_characteristic: str): + """Sets the repeat_delivery_characteristic of this TapiTopologyTopologyNode. + + Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example). It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay. # noqa: E501 + + :param repeat_delivery_characteristic: The repeat_delivery_characteristic of this TapiTopologyTopologyNode. + :type repeat_delivery_characteristic: str + """ + + self._repeat_delivery_characteristic = repeat_delivery_characteristic + + @property + def loss_characteristic(self) -> str: + """Gets the loss_characteristic of this TapiTopologyTopologyNode. + + Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow. Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips). # noqa: E501 + + :return: The loss_characteristic of this TapiTopologyTopologyNode. + :rtype: str + """ + return self._loss_characteristic + + @loss_characteristic.setter + def loss_characteristic(self, loss_characteristic: str): + """Sets the loss_characteristic of this TapiTopologyTopologyNode. + + Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow. Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips). # noqa: E501 + + :param loss_characteristic: The loss_characteristic of this TapiTopologyTopologyNode. + :type loss_characteristic: str + """ + + self._loss_characteristic = loss_characteristic + + @property + def latency_characteristic(self) -> List[TapiTopologyLatencyCharacteristic]: + """Gets the latency_characteristic of this TapiTopologyTopologyNode. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :return: The latency_characteristic of this TapiTopologyTopologyNode. + :rtype: List[TapiTopologyLatencyCharacteristic] + """ + return self._latency_characteristic + + @latency_characteristic.setter + def latency_characteristic(self, latency_characteristic: List[TapiTopologyLatencyCharacteristic]): + """Sets the latency_characteristic of this TapiTopologyTopologyNode. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param latency_characteristic: The latency_characteristic of this TapiTopologyTopologyNode. + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + """ + + self._latency_characteristic = latency_characteristic + + @property + def operational_state(self) -> TapiCommonOperationalState: + """Gets the operational_state of this TapiTopologyTopologyNode. + + + :return: The operational_state of this TapiTopologyTopologyNode. + :rtype: TapiCommonOperationalState + """ + return self._operational_state + + @operational_state.setter + def operational_state(self, operational_state: TapiCommonOperationalState): + """Sets the operational_state of this TapiTopologyTopologyNode. + + + :param operational_state: The operational_state of this TapiTopologyTopologyNode. + :type operational_state: TapiCommonOperationalState + """ + + self._operational_state = operational_state + + @property + def lifecycle_state(self) -> TapiCommonLifecycleState: + """Gets the lifecycle_state of this TapiTopologyTopologyNode. + + + :return: The lifecycle_state of this TapiTopologyTopologyNode. + :rtype: TapiCommonLifecycleState + """ + return self._lifecycle_state + + @lifecycle_state.setter + def lifecycle_state(self, lifecycle_state: TapiCommonLifecycleState): + """Sets the lifecycle_state of this TapiTopologyTopologyNode. + + + :param lifecycle_state: The lifecycle_state of this TapiTopologyTopologyNode. + :type lifecycle_state: TapiCommonLifecycleState + """ + + self._lifecycle_state = lifecycle_state + + @property + def administrative_state(self) -> TapiCommonAdministrativeState: + """Gets the administrative_state of this TapiTopologyTopologyNode. + + + :return: The administrative_state of this TapiTopologyTopologyNode. + :rtype: TapiCommonAdministrativeState + """ + return self._administrative_state + + @administrative_state.setter + def administrative_state(self, administrative_state: TapiCommonAdministrativeState): + """Sets the administrative_state of this TapiTopologyTopologyNode. + + + :param administrative_state: The administrative_state of this TapiTopologyTopologyNode. + :type administrative_state: TapiCommonAdministrativeState + """ + + self._administrative_state = administrative_state + + @property + def layer_protocol_name(self) -> List[TapiCommonLayerProtocolName]: + """Gets the layer_protocol_name of this TapiTopologyTopologyNode. + + none # noqa: E501 + + :return: The layer_protocol_name of this TapiTopologyTopologyNode. + :rtype: List[TapiCommonLayerProtocolName] + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: List[TapiCommonLayerProtocolName]): + """Sets the layer_protocol_name of this TapiTopologyTopologyNode. + + none # noqa: E501 + + :param layer_protocol_name: The layer_protocol_name of this TapiTopologyTopologyNode. + :type layer_protocol_name: List[TapiCommonLayerProtocolName] + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def encap_topology(self) -> TapiTopologyTopologyRef: + """Gets the encap_topology of this TapiTopologyTopologyNode. + + + :return: The encap_topology of this TapiTopologyTopologyNode. + :rtype: TapiTopologyTopologyRef + """ + return self._encap_topology + + @encap_topology.setter + def encap_topology(self, encap_topology: TapiTopologyTopologyRef): + """Sets the encap_topology of this TapiTopologyTopologyNode. + + + :param encap_topology: The encap_topology of this TapiTopologyTopologyNode. + :type encap_topology: TapiTopologyTopologyRef + """ + + self._encap_topology = encap_topology + + @property + def owned_node_edge_point(self) -> List[TapiTopologyNodeOwnedNodeEdgePoint]: + """Gets the owned_node_edge_point of this TapiTopologyTopologyNode. + + none # noqa: E501 + + :return: The owned_node_edge_point of this TapiTopologyTopologyNode. + :rtype: List[TapiTopologyNodeOwnedNodeEdgePoint] + """ + return self._owned_node_edge_point + + @owned_node_edge_point.setter + def owned_node_edge_point(self, owned_node_edge_point: List[TapiTopologyNodeOwnedNodeEdgePoint]): + """Sets the owned_node_edge_point of this TapiTopologyTopologyNode. + + none # noqa: E501 + + :param owned_node_edge_point: The owned_node_edge_point of this TapiTopologyTopologyNode. + :type owned_node_edge_point: List[TapiTopologyNodeOwnedNodeEdgePoint] + """ + + self._owned_node_edge_point = owned_node_edge_point + + @property + def node_rule_group(self) -> List[TapiTopologyNodeRuleGroup]: + """Gets the node_rule_group of this TapiTopologyTopologyNode. + + none # noqa: E501 + + :return: The node_rule_group of this TapiTopologyTopologyNode. + :rtype: List[TapiTopologyNodeRuleGroup] + """ + return self._node_rule_group + + @node_rule_group.setter + def node_rule_group(self, node_rule_group: List[TapiTopologyNodeRuleGroup]): + """Sets the node_rule_group of this TapiTopologyTopologyNode. + + none # noqa: E501 + + :param node_rule_group: The node_rule_group of this TapiTopologyTopologyNode. + :type node_rule_group: List[TapiTopologyNodeRuleGroup] + """ + + self._node_rule_group = node_rule_group + + @property + def aggregated_node_edge_point(self) -> List[TapiTopologyNodeEdgePointRef]: + """Gets the aggregated_node_edge_point of this TapiTopologyTopologyNode. + + none # noqa: E501 + + :return: The aggregated_node_edge_point of this TapiTopologyTopologyNode. + :rtype: List[TapiTopologyNodeEdgePointRef] + """ + return self._aggregated_node_edge_point + + @aggregated_node_edge_point.setter + def aggregated_node_edge_point(self, aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef]): + """Sets the aggregated_node_edge_point of this TapiTopologyTopologyNode. + + none # noqa: E501 + + :param aggregated_node_edge_point: The aggregated_node_edge_point of this TapiTopologyTopologyNode. + :type aggregated_node_edge_point: List[TapiTopologyNodeEdgePointRef] + """ + + self._aggregated_node_edge_point = aggregated_node_edge_point diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_node_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_node_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..0c868058b3b29a86d04842df89ac0ccf44ff8ad1 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_node_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_topology_node import TapiTopologyTopologyNode # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyTopologyNodeWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node: TapiTopologyTopologyNode=None): # noqa: E501 + """TapiTopologyTopologyNodeWrapper - a model defined in Swagger + + :param node: The node of this TapiTopologyTopologyNodeWrapper. # noqa: E501 + :type node: TapiTopologyTopologyNode + """ + self.swagger_types = { + 'node': TapiTopologyTopologyNode + } + + self.attribute_map = { + 'node': 'node' + } + self._node = node + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTopologyNodeWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.topology.NodeWrapper of this TapiTopologyTopologyNodeWrapper. # noqa: E501 + :rtype: TapiTopologyTopologyNodeWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def node(self) -> TapiTopologyTopologyNode: + """Gets the node of this TapiTopologyTopologyNodeWrapper. + + + :return: The node of this TapiTopologyTopologyNodeWrapper. + :rtype: TapiTopologyTopologyNode + """ + return self._node + + @node.setter + def node(self, node: TapiTopologyTopologyNode): + """Sets the node of this TapiTopologyTopologyNodeWrapper. + + + :param node: The node of this TapiTopologyTopologyNodeWrapper. + :type node: TapiTopologyTopologyNode + """ + + self._node = node diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_ref.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_ref.py new file mode 100644 index 0000000000000000000000000000000000000000..21a7b2d61775862dac7767ca6378f291f7494053 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_ref.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyTopologyRef(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology_uuid: str=None): # noqa: E501 + """TapiTopologyTopologyRef - a model defined in Swagger + + :param topology_uuid: The topology_uuid of this TapiTopologyTopologyRef. # noqa: E501 + :type topology_uuid: str + """ + self.swagger_types = { + 'topology_uuid': str + } + + self.attribute_map = { + 'topology_uuid': 'topology-uuid' + } + self._topology_uuid = topology_uuid + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTopologyRef': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.TopologyRef of this TapiTopologyTopologyRef. # noqa: E501 + :rtype: TapiTopologyTopologyRef + """ + return util.deserialize_model(dikt, cls) + + @property + def topology_uuid(self) -> str: + """Gets the topology_uuid of this TapiTopologyTopologyRef. + + none # noqa: E501 + + :return: The topology_uuid of this TapiTopologyTopologyRef. + :rtype: str + """ + return self._topology_uuid + + @topology_uuid.setter + def topology_uuid(self, topology_uuid: str): + """Sets the topology_uuid of this TapiTopologyTopologyRef. + + none # noqa: E501 + + :param topology_uuid: The topology_uuid of this TapiTopologyTopologyRef. + :type topology_uuid: str + """ + + self._topology_uuid = topology_uuid diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_ref_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_ref_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..7e4c3259c120c96f8064a612a2f09a0003346f29 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_ref_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_topology_ref import TapiTopologyTopologyRef # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyTopologyRefWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology: TapiTopologyTopologyRef=None): # noqa: E501 + """TapiTopologyTopologyRefWrapper - a model defined in Swagger + + :param topology: The topology of this TapiTopologyTopologyRefWrapper. # noqa: E501 + :type topology: TapiTopologyTopologyRef + """ + self.swagger_types = { + 'topology': TapiTopologyTopologyRef + } + + self.attribute_map = { + 'topology': 'topology' + } + self._topology = topology + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTopologyRefWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.TopologyRefWrapper of this TapiTopologyTopologyRefWrapper. # noqa: E501 + :rtype: TapiTopologyTopologyRefWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def topology(self) -> TapiTopologyTopologyRef: + """Gets the topology of this TapiTopologyTopologyRefWrapper. + + + :return: The topology of this TapiTopologyTopologyRefWrapper. + :rtype: TapiTopologyTopologyRef + """ + return self._topology + + @topology.setter + def topology(self, topology: TapiTopologyTopologyRef): + """Sets the topology of this TapiTopologyTopologyRefWrapper. + + + :param topology: The topology of this TapiTopologyTopologyRefWrapper. + :type topology: TapiTopologyTopologyRef + """ + + self._topology = topology diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..47908b0cc4ab2a0114d52a0c2d4b3df8ec66a5ee --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_topology_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_topology import TapiTopologyTopology # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyTopologyWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, topology: TapiTopologyTopology=None): # noqa: E501 + """TapiTopologyTopologyWrapper - a model defined in Swagger + + :param topology: The topology of this TapiTopologyTopologyWrapper. # noqa: E501 + :type topology: TapiTopologyTopology + """ + self.swagger_types = { + 'topology': TapiTopologyTopology + } + + self.attribute_map = { + 'topology': 'topology' + } + self._topology = topology + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTopologyWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.TopologyWrapper of this TapiTopologyTopologyWrapper. # noqa: E501 + :rtype: TapiTopologyTopologyWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def topology(self) -> TapiTopologyTopology: + """Gets the topology of this TapiTopologyTopologyWrapper. + + + :return: The topology of this TapiTopologyTopologyWrapper. + :rtype: TapiTopologyTopology + """ + return self._topology + + @topology.setter + def topology(self, topology: TapiTopologyTopology): + """Sets the topology of this TapiTopologyTopologyWrapper. + + + :param topology: The topology of this TapiTopologyTopologyWrapper. + :type topology: TapiTopologyTopology + """ + + self._topology = topology diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_transfer_cost_pac.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_transfer_cost_pac.py new file mode 100644 index 0000000000000000000000000000000000000000..f868fd807b8c3dcc8674fdbd837b630312835400 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_transfer_cost_pac.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_cost_characteristic import TapiTopologyCostCharacteristic # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyTransferCostPac(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, cost_characteristic: List[TapiTopologyCostCharacteristic]=None): # noqa: E501 + """TapiTopologyTransferCostPac - a model defined in Swagger + + :param cost_characteristic: The cost_characteristic of this TapiTopologyTransferCostPac. # noqa: E501 + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + """ + self.swagger_types = { + 'cost_characteristic': List[TapiTopologyCostCharacteristic] + } + + self.attribute_map = { + 'cost_characteristic': 'cost-characteristic' + } + self._cost_characteristic = cost_characteristic + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTransferCostPac': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.TransferCostPac of this TapiTopologyTransferCostPac. # noqa: E501 + :rtype: TapiTopologyTransferCostPac + """ + return util.deserialize_model(dikt, cls) + + @property + def cost_characteristic(self) -> List[TapiTopologyCostCharacteristic]: + """Gets the cost_characteristic of this TapiTopologyTransferCostPac. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :return: The cost_characteristic of this TapiTopologyTransferCostPac. + :rtype: List[TapiTopologyCostCharacteristic] + """ + return self._cost_characteristic + + @cost_characteristic.setter + def cost_characteristic(self, cost_characteristic: List[TapiTopologyCostCharacteristic]): + """Sets the cost_characteristic of this TapiTopologyTransferCostPac. + + The list of costs where each cost relates to some aspect of the TopologicalEntity. # noqa: E501 + + :param cost_characteristic: The cost_characteristic of this TapiTopologyTransferCostPac. + :type cost_characteristic: List[TapiTopologyCostCharacteristic] + """ + + self._cost_characteristic = cost_characteristic diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_transfer_integrity_pac.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_transfer_integrity_pac.py new file mode 100644 index 0000000000000000000000000000000000000000..47570f8728f8fa61b03effb3c5df688df7f7bdd9 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_transfer_integrity_pac.py @@ -0,0 +1,204 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyTransferIntegrityPac(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, error_characteristic: str=None, unavailable_time_characteristic: str=None, server_integrity_process_characteristic: str=None, delivery_order_characteristic: str=None, repeat_delivery_characteristic: str=None, loss_characteristic: str=None): # noqa: E501 + """TapiTopologyTransferIntegrityPac - a model defined in Swagger + + :param error_characteristic: The error_characteristic of this TapiTopologyTransferIntegrityPac. # noqa: E501 + :type error_characteristic: str + :param unavailable_time_characteristic: The unavailable_time_characteristic of this TapiTopologyTransferIntegrityPac. # noqa: E501 + :type unavailable_time_characteristic: str + :param server_integrity_process_characteristic: The server_integrity_process_characteristic of this TapiTopologyTransferIntegrityPac. # noqa: E501 + :type server_integrity_process_characteristic: str + :param delivery_order_characteristic: The delivery_order_characteristic of this TapiTopologyTransferIntegrityPac. # noqa: E501 + :type delivery_order_characteristic: str + :param repeat_delivery_characteristic: The repeat_delivery_characteristic of this TapiTopologyTransferIntegrityPac. # noqa: E501 + :type repeat_delivery_characteristic: str + :param loss_characteristic: The loss_characteristic of this TapiTopologyTransferIntegrityPac. # noqa: E501 + :type loss_characteristic: str + """ + self.swagger_types = { + 'error_characteristic': str, + 'unavailable_time_characteristic': str, + 'server_integrity_process_characteristic': str, + 'delivery_order_characteristic': str, + 'repeat_delivery_characteristic': str, + 'loss_characteristic': str + } + + self.attribute_map = { + 'error_characteristic': 'error-characteristic', + 'unavailable_time_characteristic': 'unavailable-time-characteristic', + 'server_integrity_process_characteristic': 'server-integrity-process-characteristic', + 'delivery_order_characteristic': 'delivery-order-characteristic', + 'repeat_delivery_characteristic': 'repeat-delivery-characteristic', + 'loss_characteristic': 'loss-characteristic' + } + self._error_characteristic = error_characteristic + self._unavailable_time_characteristic = unavailable_time_characteristic + self._server_integrity_process_characteristic = server_integrity_process_characteristic + self._delivery_order_characteristic = delivery_order_characteristic + self._repeat_delivery_characteristic = repeat_delivery_characteristic + self._loss_characteristic = loss_characteristic + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTransferIntegrityPac': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.TransferIntegrityPac of this TapiTopologyTransferIntegrityPac. # noqa: E501 + :rtype: TapiTopologyTransferIntegrityPac + """ + return util.deserialize_model(dikt, cls) + + @property + def error_characteristic(self) -> str: + """Gets the error_characteristic of this TapiTopologyTransferIntegrityPac. + + Describes the degree to which the signal propagated can be errored. Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded. # noqa: E501 + + :return: The error_characteristic of this TapiTopologyTransferIntegrityPac. + :rtype: str + """ + return self._error_characteristic + + @error_characteristic.setter + def error_characteristic(self, error_characteristic: str): + """Sets the error_characteristic of this TapiTopologyTransferIntegrityPac. + + Describes the degree to which the signal propagated can be errored. Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded. # noqa: E501 + + :param error_characteristic: The error_characteristic of this TapiTopologyTransferIntegrityPac. + :type error_characteristic: str + """ + + self._error_characteristic = error_characteristic + + @property + def unavailable_time_characteristic(self) -> str: + """Gets the unavailable_time_characteristic of this TapiTopologyTransferIntegrityPac. + + Describes the duration for which there may be no valid signal propagated. # noqa: E501 + + :return: The unavailable_time_characteristic of this TapiTopologyTransferIntegrityPac. + :rtype: str + """ + return self._unavailable_time_characteristic + + @unavailable_time_characteristic.setter + def unavailable_time_characteristic(self, unavailable_time_characteristic: str): + """Sets the unavailable_time_characteristic of this TapiTopologyTransferIntegrityPac. + + Describes the duration for which there may be no valid signal propagated. # noqa: E501 + + :param unavailable_time_characteristic: The unavailable_time_characteristic of this TapiTopologyTransferIntegrityPac. + :type unavailable_time_characteristic: str + """ + + self._unavailable_time_characteristic = unavailable_time_characteristic + + @property + def server_integrity_process_characteristic(self) -> str: + """Gets the server_integrity_process_characteristic of this TapiTopologyTransferIntegrityPac. + + Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity. # noqa: E501 + + :return: The server_integrity_process_characteristic of this TapiTopologyTransferIntegrityPac. + :rtype: str + """ + return self._server_integrity_process_characteristic + + @server_integrity_process_characteristic.setter + def server_integrity_process_characteristic(self, server_integrity_process_characteristic: str): + """Sets the server_integrity_process_characteristic of this TapiTopologyTransferIntegrityPac. + + Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity. # noqa: E501 + + :param server_integrity_process_characteristic: The server_integrity_process_characteristic of this TapiTopologyTransferIntegrityPac. + :type server_integrity_process_characteristic: str + """ + + self._server_integrity_process_characteristic = server_integrity_process_characteristic + + @property + def delivery_order_characteristic(self) -> str: + """Gets the delivery_order_characteristic of this TapiTopologyTransferIntegrityPac. + + Describes the degree to which packets will be delivered out of sequence. Does not apply to TDM as the TDM protocols maintain strict order. # noqa: E501 + + :return: The delivery_order_characteristic of this TapiTopologyTransferIntegrityPac. + :rtype: str + """ + return self._delivery_order_characteristic + + @delivery_order_characteristic.setter + def delivery_order_characteristic(self, delivery_order_characteristic: str): + """Sets the delivery_order_characteristic of this TapiTopologyTransferIntegrityPac. + + Describes the degree to which packets will be delivered out of sequence. Does not apply to TDM as the TDM protocols maintain strict order. # noqa: E501 + + :param delivery_order_characteristic: The delivery_order_characteristic of this TapiTopologyTransferIntegrityPac. + :type delivery_order_characteristic: str + """ + + self._delivery_order_characteristic = delivery_order_characteristic + + @property + def repeat_delivery_characteristic(self) -> str: + """Gets the repeat_delivery_characteristic of this TapiTopologyTransferIntegrityPac. + + Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example). It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay. # noqa: E501 + + :return: The repeat_delivery_characteristic of this TapiTopologyTransferIntegrityPac. + :rtype: str + """ + return self._repeat_delivery_characteristic + + @repeat_delivery_characteristic.setter + def repeat_delivery_characteristic(self, repeat_delivery_characteristic: str): + """Sets the repeat_delivery_characteristic of this TapiTopologyTransferIntegrityPac. + + Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example). It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay. # noqa: E501 + + :param repeat_delivery_characteristic: The repeat_delivery_characteristic of this TapiTopologyTransferIntegrityPac. + :type repeat_delivery_characteristic: str + """ + + self._repeat_delivery_characteristic = repeat_delivery_characteristic + + @property + def loss_characteristic(self) -> str: + """Gets the loss_characteristic of this TapiTopologyTransferIntegrityPac. + + Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow. Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips). # noqa: E501 + + :return: The loss_characteristic of this TapiTopologyTransferIntegrityPac. + :rtype: str + """ + return self._loss_characteristic + + @loss_characteristic.setter + def loss_characteristic(self, loss_characteristic: str): + """Sets the loss_characteristic of this TapiTopologyTransferIntegrityPac. + + Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow. Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips). # noqa: E501 + + :param loss_characteristic: The loss_characteristic of this TapiTopologyTransferIntegrityPac. + :type loss_characteristic: str + """ + + self._loss_characteristic = loss_characteristic diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_transfer_timing_pac.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_transfer_timing_pac.py new file mode 100644 index 0000000000000000000000000000000000000000..f980040c4f07ef66bc155bd4d2e87224b93c979f --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_transfer_timing_pac.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_latency_characteristic import TapiTopologyLatencyCharacteristic # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyTransferTimingPac(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, latency_characteristic: List[TapiTopologyLatencyCharacteristic]=None): # noqa: E501 + """TapiTopologyTransferTimingPac - a model defined in Swagger + + :param latency_characteristic: The latency_characteristic of this TapiTopologyTransferTimingPac. # noqa: E501 + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + """ + self.swagger_types = { + 'latency_characteristic': List[TapiTopologyLatencyCharacteristic] + } + + self.attribute_map = { + 'latency_characteristic': 'latency-characteristic' + } + self._latency_characteristic = latency_characteristic + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyTransferTimingPac': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.TransferTimingPac of this TapiTopologyTransferTimingPac. # noqa: E501 + :rtype: TapiTopologyTransferTimingPac + """ + return util.deserialize_model(dikt, cls) + + @property + def latency_characteristic(self) -> List[TapiTopologyLatencyCharacteristic]: + """Gets the latency_characteristic of this TapiTopologyTransferTimingPac. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :return: The latency_characteristic of this TapiTopologyTransferTimingPac. + :rtype: List[TapiTopologyLatencyCharacteristic] + """ + return self._latency_characteristic + + @latency_characteristic.setter + def latency_characteristic(self, latency_characteristic: List[TapiTopologyLatencyCharacteristic]): + """Sets the latency_characteristic of this TapiTopologyTransferTimingPac. + + The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic. # noqa: E501 + + :param latency_characteristic: The latency_characteristic of this TapiTopologyTransferTimingPac. + :type latency_characteristic: List[TapiTopologyLatencyCharacteristic] + """ + + self._latency_characteristic = latency_characteristic diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_validation_mechanism.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_validation_mechanism.py new file mode 100644 index 0000000000000000000000000000000000000000..4404a512f34a2341977ccd2223d28a386e6c42d9 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_validation_mechanism.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server import util + + +class TapiTopologyValidationMechanism(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, layer_protocol_adjacency_validated: str=None, validation_mechanism: str=None, validation_robustness: str=None): # noqa: E501 + """TapiTopologyValidationMechanism - a model defined in Swagger + + :param layer_protocol_adjacency_validated: The layer_protocol_adjacency_validated of this TapiTopologyValidationMechanism. # noqa: E501 + :type layer_protocol_adjacency_validated: str + :param validation_mechanism: The validation_mechanism of this TapiTopologyValidationMechanism. # noqa: E501 + :type validation_mechanism: str + :param validation_robustness: The validation_robustness of this TapiTopologyValidationMechanism. # noqa: E501 + :type validation_robustness: str + """ + self.swagger_types = { + 'layer_protocol_adjacency_validated': str, + 'validation_mechanism': str, + 'validation_robustness': str + } + + self.attribute_map = { + 'layer_protocol_adjacency_validated': 'layer-protocol-adjacency-validated', + 'validation_mechanism': 'validation-mechanism', + 'validation_robustness': 'validation-robustness' + } + self._layer_protocol_adjacency_validated = layer_protocol_adjacency_validated + self._validation_mechanism = validation_mechanism + self._validation_robustness = validation_robustness + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyValidationMechanism': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.ValidationMechanism of this TapiTopologyValidationMechanism. # noqa: E501 + :rtype: TapiTopologyValidationMechanism + """ + return util.deserialize_model(dikt, cls) + + @property + def layer_protocol_adjacency_validated(self) -> str: + """Gets the layer_protocol_adjacency_validated of this TapiTopologyValidationMechanism. + + State of validatiion # noqa: E501 + + :return: The layer_protocol_adjacency_validated of this TapiTopologyValidationMechanism. + :rtype: str + """ + return self._layer_protocol_adjacency_validated + + @layer_protocol_adjacency_validated.setter + def layer_protocol_adjacency_validated(self, layer_protocol_adjacency_validated: str): + """Sets the layer_protocol_adjacency_validated of this TapiTopologyValidationMechanism. + + State of validatiion # noqa: E501 + + :param layer_protocol_adjacency_validated: The layer_protocol_adjacency_validated of this TapiTopologyValidationMechanism. + :type layer_protocol_adjacency_validated: str + """ + + self._layer_protocol_adjacency_validated = layer_protocol_adjacency_validated + + @property + def validation_mechanism(self) -> str: + """Gets the validation_mechanism of this TapiTopologyValidationMechanism. + + Name of mechanism used to validate adjacency # noqa: E501 + + :return: The validation_mechanism of this TapiTopologyValidationMechanism. + :rtype: str + """ + return self._validation_mechanism + + @validation_mechanism.setter + def validation_mechanism(self, validation_mechanism: str): + """Sets the validation_mechanism of this TapiTopologyValidationMechanism. + + Name of mechanism used to validate adjacency # noqa: E501 + + :param validation_mechanism: The validation_mechanism of this TapiTopologyValidationMechanism. + :type validation_mechanism: str + """ + + self._validation_mechanism = validation_mechanism + + @property + def validation_robustness(self) -> str: + """Gets the validation_robustness of this TapiTopologyValidationMechanism. + + Quality of validation (i.e. how likely is the stated validation to be invalid) # noqa: E501 + + :return: The validation_robustness of this TapiTopologyValidationMechanism. + :rtype: str + """ + return self._validation_robustness + + @validation_robustness.setter + def validation_robustness(self, validation_robustness: str): + """Sets the validation_robustness of this TapiTopologyValidationMechanism. + + Quality of validation (i.e. how likely is the stated validation to be invalid) # noqa: E501 + + :param validation_robustness: The validation_robustness of this TapiTopologyValidationMechanism. + :type validation_robustness: str + """ + + self._validation_robustness = validation_robustness diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_validation_mechanism_wrapper.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_validation_mechanism_wrapper.py new file mode 100644 index 0000000000000000000000000000000000000000..3038e8381ecfb71d98e2059fa79ac7d335c3221b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_validation_mechanism_wrapper.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_validation_mechanism import TapiTopologyValidationMechanism # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyValidationMechanismWrapper(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, validation_mechanism: TapiTopologyValidationMechanism=None): # noqa: E501 + """TapiTopologyValidationMechanismWrapper - a model defined in Swagger + + :param validation_mechanism: The validation_mechanism of this TapiTopologyValidationMechanismWrapper. # noqa: E501 + :type validation_mechanism: TapiTopologyValidationMechanism + """ + self.swagger_types = { + 'validation_mechanism': TapiTopologyValidationMechanism + } + + self.attribute_map = { + 'validation_mechanism': 'validation-mechanism' + } + self._validation_mechanism = validation_mechanism + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyValidationMechanismWrapper': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.ValidationMechanismWrapper of this TapiTopologyValidationMechanismWrapper. # noqa: E501 + :rtype: TapiTopologyValidationMechanismWrapper + """ + return util.deserialize_model(dikt, cls) + + @property + def validation_mechanism(self) -> TapiTopologyValidationMechanism: + """Gets the validation_mechanism of this TapiTopologyValidationMechanismWrapper. + + + :return: The validation_mechanism of this TapiTopologyValidationMechanismWrapper. + :rtype: TapiTopologyValidationMechanism + """ + return self._validation_mechanism + + @validation_mechanism.setter + def validation_mechanism(self, validation_mechanism: TapiTopologyValidationMechanism): + """Sets the validation_mechanism of this TapiTopologyValidationMechanismWrapper. + + + :param validation_mechanism: The validation_mechanism of this TapiTopologyValidationMechanismWrapper. + :type validation_mechanism: TapiTopologyValidationMechanism + """ + + self._validation_mechanism = validation_mechanism diff --git a/hackfest/tapi/server/tapi_server/models/tapi_topology_validation_pac.py b/hackfest/tapi/server/tapi_server/models/tapi_topology_validation_pac.py new file mode 100644 index 0000000000000000000000000000000000000000..f90dbb029321110d664c72655b17f0523f474e23 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/models/tapi_topology_validation_pac.py @@ -0,0 +1,65 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from tapi_server.models.base_model_ import Model +from tapi_server.models.tapi_topology_validation_mechanism import TapiTopologyValidationMechanism # noqa: F401,E501 +from tapi_server import util + + +class TapiTopologyValidationPac(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, validation_mechanism: List[TapiTopologyValidationMechanism]=None): # noqa: E501 + """TapiTopologyValidationPac - a model defined in Swagger + + :param validation_mechanism: The validation_mechanism of this TapiTopologyValidationPac. # noqa: E501 + :type validation_mechanism: List[TapiTopologyValidationMechanism] + """ + self.swagger_types = { + 'validation_mechanism': List[TapiTopologyValidationMechanism] + } + + self.attribute_map = { + 'validation_mechanism': 'validation-mechanism' + } + self._validation_mechanism = validation_mechanism + + @classmethod + def from_dict(cls, dikt) -> 'TapiTopologyValidationPac': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The tapi.topology.ValidationPac of this TapiTopologyValidationPac. # noqa: E501 + :rtype: TapiTopologyValidationPac + """ + return util.deserialize_model(dikt, cls) + + @property + def validation_mechanism(self) -> List[TapiTopologyValidationMechanism]: + """Gets the validation_mechanism of this TapiTopologyValidationPac. + + Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity. # noqa: E501 + + :return: The validation_mechanism of this TapiTopologyValidationPac. + :rtype: List[TapiTopologyValidationMechanism] + """ + return self._validation_mechanism + + @validation_mechanism.setter + def validation_mechanism(self, validation_mechanism: List[TapiTopologyValidationMechanism]): + """Sets the validation_mechanism of this TapiTopologyValidationPac. + + Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity. # noqa: E501 + + :param validation_mechanism: The validation_mechanism of this TapiTopologyValidationPac. + :type validation_mechanism: List[TapiTopologyValidationMechanism] + """ + + self._validation_mechanism = validation_mechanism diff --git a/hackfest/tapi/server/tapi_server/swagger/swagger.yaml b/hackfest/tapi/server/tapi_server/swagger/swagger.yaml new file mode 100644 index 0000000000000000000000000000000000000000..abb88f1d1d4472c3725e3744fc5841dff1b3be0b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/swagger/swagger.yaml @@ -0,0 +1,20565 @@ +openapi: 3.0.1 +info: + title: "tapi-notification,tapi-connectivity,tapi-topology,tapi-common,tapi-path-computation\ + \ API" + description: "\r\n This module contains TAPI Notification Model definitions.\r\ + \n Source: TapiNotification.uml\r\n - The TAPI YANG models included\ + \ in this TAPI release are a *normative* part of the TAPI SDK.\r\n - The\ + \ YANG specifications have been generated from the corresponding UML model using\ + \ the [ONF EAGLE UML2YANG mapping tool]\r\n \r\n and further edited manually to comply with the [ONF IISOMI UML2YANG\ + \ mapping guidelines]\r\n \r\n - Status of YANG model artifacts can be determined by referring\ + \ to the corresponding UML artifacts.\r\n As described in the UML models,\ + \ some artifacts are considered *experimental*, and thus the corresponding YANG\ + \ artifacts.\r\n - The ONF TAPI release process does not guarantee backward\ + \ compatibility of YANG models across major versions of TAPI releases.\r\n \ + \ The YANG model backward compatibility criteria are outlined in section\ + \ 11 of .\r\n YANG models included in this release may not be backward compatible\ + \ with previous TAPI releases.\r\n Copyright (c) 2018 Open Networking Foundation\ + \ (ONF). All rights reserved.\r\n License: This module is distributed under\ + \ the Apache License 2.0,\r\n This module contains TAPI Connectivity Model\ + \ definitions.\r\n Source: TapiConnectivity.uml\r\n - The TAPI YANG\ + \ models included in this TAPI release are a *normative* part of the TAPI SDK.\r\ + \n - The YANG specifications have been generated from the corresponding\ + \ UML model using the [ONF EAGLE UML2YANG mapping tool]\r\n \r\n and further edited manually to comply with the [ONF IISOMI UML2YANG\ + \ mapping guidelines]\r\n \r\n - Status of YANG model artifacts can be determined by referring\ + \ to the corresponding UML artifacts.\r\n As described in the UML models,\ + \ some artifacts are considered *experimental*, and thus the corresponding YANG\ + \ artifacts.\r\n - The ONF TAPI release process does not guarantee backward\ + \ compatibility of YANG models across major versions of TAPI releases.\r\n \ + \ The YANG model backward compatibility criteria are outlined in section 11\ + \ of .\r\n YANG models included in this release may not be backward compatible\ + \ with previous TAPI releases.\r\n Copyright (c) 2018 Open Networking Foundation\ + \ (ONF). All rights reserved.\r\n License: This module is distributed under\ + \ the Apache License 2.0.,\r\n This module contains TAPI Topology Model\ + \ definitions.\r\n Source: TapiTopology.uml\r\n - The TAPI YANG\ + \ models included in this TAPI release are a *normative* part of the TAPI SDK.\r\ + \n - The YANG specifications have been generated from the corresponding\ + \ UML model using the [ONF EAGLE UML2YANG mapping tool]\r\n \r\n and further edited manually to comply with the [ONF IISOMI UML2YANG\ + \ mapping guidelines]\r\n \r\n - Status of YANG model artifacts can be determined by referring\ + \ to the corresponding UML artifacts.\r\n As described in the UML models,\ + \ some artifacts are considered *experimental*, and thus the corresponding YANG\ + \ artifacts.\r\n - The ONF TAPI release process does not guarantee backward\ + \ compatibility of YANG models across major versions of TAPI releases.\r\n \ + \ The YANG model backward compatibility criteria are outlined in section\ + \ 11 of .\r\n YANG models included in this release may not be backward compatible\ + \ with previous TAPI releases.\r\n Copyright (c) 2018 Open Networking Foundation\ + \ (ONF). All rights reserved.\r\n License: This module is distributed under\ + \ the Apache License 2.0.,\r\n This module contains TAPI Common Model definitions.\r\ + \n Source: TapiCommon.uml\r\n - The TAPI YANG models included in\ + \ this TAPI release are a *normative* part of the TAPI SDK.\r\n - The YANG\ + \ specifications have been generated from the corresponding UML model using the\ + \ [ONF EAGLE UML2YANG mapping tool]\r\n \r\ + \n and further edited manually to comply with the [ONF IISOMI UML2YANG\ + \ mapping guidelines]\r\n \r\ + \n - Status of YANG model artifacts can be determined by referring to the\ + \ corresponding UML artifacts.\r\n As described in the UML models, some\ + \ artifacts are considered *experimental*, and thus the corresponding YANG artifacts.\r\ + \n - The ONF TAPI release process does not guarantee backward compatibility\ + \ of YANG models across major versions of TAPI releases.\r\n The YANG model\ + \ backward compatibility criteria are outlined in section 11 of .\r\ + \n YANG models included in this release may not be backward compatible\ + \ with previous TAPI releases.\r\n Copyright (c) 2018 Open Networking Foundation\ + \ (ONF). All rights reserved.\r\n License: This module is distributed under\ + \ the Apache License 2.0.,\r\n This module contains TAPI Path Computation\ + \ Model definitions.\r\n Source: TapiPathComputation.uml\r\n - The\ + \ TAPI YANG models included in this TAPI release are a *normative* part of the\ + \ TAPI SDK.\r\n - The YANG specifications have been generated from the\ + \ corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]\r\n \ + \ \r\n and\ + \ further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]\r\ + \n \r\ + \n - Status of YANG model artifacts can be determined by referring to the\ + \ corresponding UML artifacts.\r\n As described in the UML models, some\ + \ artifacts are considered *experimental*, and thus the corresponding YANG artifacts.\r\ + \n - The ONF TAPI release process does not guarantee backward compatibility\ + \ of YANG models across major versions of TAPI releases.\r\n The YANG model\ + \ backward compatibility criteria are outlined in section 11 of .\r\ + \n YANG models included in this release may not be backward compatible\ + \ with previous TAPI releases.\r\n Copyright (c) 2018 Open Networking Foundation\ + \ (ONF). All rights reserved.\r\n License: This module is distributed under\ + \ the Apache License 2.0." + version: 2.1.3 +servers: +- url: //localhost:1234/ +paths: + /data/tapi-common:context/: + get: + tags: + - tapi-common + summary: returns tapi.common.Context + description: none + operationId: data_tapi_commoncontext_get + responses: + "200": + description: tapi.common.Context + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ContextWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + put: + tags: + - tapi-common + summary: creates or updates tapi.common.Context + description: none + operationId: data_tapi_commoncontext_put + requestBody: + description: tapi.common.Context to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ContextWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.Context.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + post: + tags: + - tapi-common + summary: creates tapi.common.Context + description: none + operationId: data_tapi_commoncontext_post + requestBody: + description: tapi.common.Context to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ContextWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.Context.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + delete: + tags: + - tapi-common + summary: removes tapi.common.Context + description: none + operationId: data_tapi_commoncontext_delete + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/name/: + post: + tags: + - tapi-common + summary: creates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_name_post + requestBody: + description: tapi.common.NameAndValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/name={value-name}/: + get: + tags: + - tapi-common + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_namevalue_name_get + parameters: + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + put: + tags: + - tapi-common + summary: creates or updates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_namevalue_name_put + parameters: + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + delete: + tags: + - tapi-common + summary: removes tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_namevalue_name_delete + parameters: + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point/: + post: + tags: + - tapi-common + summary: creates tapi.common.ServiceInterfacePoint + description: none + operationId: data_tapi_commoncontext_service_interface_point_post + requestBody: + description: tapi.common.ServiceInterfacePoint to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.ServiceInterfacePoint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/: + get: + tags: + - tapi-common + summary: returns tapi.common.ServiceInterfacePoint + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.ServiceInterfacePoint + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + put: + tags: + - tapi-common + summary: creates or updates tapi.common.ServiceInterfacePoint + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_put + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.ServiceInterfacePoint to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.ServiceInterfacePoint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + delete: + tags: + - tapi-common + summary: removes tapi.common.ServiceInterfacePoint + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_delete + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/: + get: + tags: + - tapi-common + summary: returns tapi.common.Capacity + description: Capacity available to be assigned. + operationId: data_tapi_commoncontext_service_interface_pointuuid_available_capacity_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/: + get: + tags: + - tapi-common + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/committed-burst-size/: + get: + tags: + - tapi-common + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/committed-information-rate/: + get: + tags: + - tapi-common + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/peak-burst-size/: + get: + tags: + - tapi-common + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/peak-information-rate/: + get: + tags: + - tapi-common + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/total-size/: + get: + tags: + - tapi-common + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_service_interface_pointuuid_available_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/name/: + post: + tags: + - tapi-common + summary: creates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_service_interface_pointuuid_name_post + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/name={value-name}/: + get: + tags: + - tapi-common + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + put: + tags: + - tapi-common + summary: creates or updates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_put + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + delete: + tags: + - tapi-common + summary: removes tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_delete + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/: + get: + tags: + - tapi-common + summary: returns tapi.common.Capacity + description: An optimistic view of the capacity of the TopologicalEntity assuming + that any shared capacity is available to be taken. + operationId: data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/: + get: + tags: + - tapi-common + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/: + get: + tags: + - tapi-common + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/: + get: + tags: + - tapi-common + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/: + get: + tags: + - tapi-common + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/: + get: + tags: + - tapi-common + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/total-size/: + get: + tags: + - tapi-common + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectivityContext + description: Augments the base TAPI Context with ConnectivityService information + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_get + responses: + "200": + description: tapi.connectivity.ConnectivityContext + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityContextWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.connectivity.ConnectivityContext + description: Augments the base TAPI Context with ConnectivityService information + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_put + requestBody: + description: tapi.connectivity.ConnectivityContext to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityContextWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityContext.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.connectivity.ConnectivityContext + description: Augments the base TAPI Context with ConnectivityService information + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_post + requestBody: + description: tapi.connectivity.ConnectivityContext to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityContextWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityContext.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.connectivity.ConnectivityContext + description: Augments the base TAPI Context with ConnectivityService information + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_delete + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.Connection + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.Connection + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectionEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectionEndPointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/connection-spec-reference/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectionSpecReference + description: Provides the reference to the spec that defines the connection + type and cepRoles. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_connection_spec_reference_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectionSpecReference + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionSpecReferenceWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/lower-connection={connection-uuid}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectionRef + description: "An Connection object supports a recursive aggregation relationship\ + \ such that the internal construction of an Connection can be exposed as multiple\ + \ lower level Connection objects (partitioning).\r\n Aggregation\ + \ is used as for the Node/Topology to allow changes in hierarchy. \r\n \ + \ Connection aggregation reflects Node/Topology aggregation.\ + \ \r\n The FC represents a Cross-Connection in an NE. The Cross-Connection\ + \ in an NE is not necessarily the lowest level of FC partitioning." + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_lower_connectionconnection_uuid_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: connection_uuid + in: path + description: Id of lower-connection + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectionRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/name={value-name}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.Route + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of route + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.Route + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.RouteWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectionEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of route + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectionEndPointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/name={value-name}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of route + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/resilience-route-pac/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ResilienceRoute + description: Provides optional resilience and state attributes to the Route. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_resilience_route_pac_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of route + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ResilienceRoute + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ResilienceRouteWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/resilience-route-pac/name={value-name}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_resilience_route_pac_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of route + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/supported-client-link={topology-uuid},{link-uuid}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.topology.LinkRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_supported_client_linktopology_uuidlink_uuid_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of supported-client-link + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of supported-client-link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.LinkRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LinkRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.SwitchControl + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: switch_control_uuid + in: path + description: Id of switch-control + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.SwitchControl + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.SwitchControlWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/name={value-name}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: switch_control_uuid + in: path + description: Id of switch-control + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/resilience-type/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.topology.ResilienceType + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_resilience_type_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: switch_control_uuid + in: path + description: Id of switch-control + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.ResilienceType + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.ResilienceTypeWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/sub-switch-control={connection-uuid},{sub-switch-control-switch-control-uuid}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.SwitchControlRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_sub_switch_controlconnection_uuidsub_switch_control_switch_control_uuid_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: switch_control_uuid + in: path + description: Id of switch-control + required: true + style: simple + explode: false + schema: + type: string + - name: connection_uuid + in: path + description: Id of sub-switch-control + required: true + style: simple + explode: false + schema: + type: string + - name: sub_switch_control_switch_control_uuid + in: path + description: Id of sub-switch-control + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.SwitchControlRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.SwitchControlRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.Switch + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: switch_control_uuid + in: path + description: Id of switch-control + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of switch + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.Switch + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.SwitchWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/name={value-name}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: switch_control_uuid + in: path + description: Id of switch-control + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of switch + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/selected-connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectionEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_selected_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: switch_control_uuid + in: path + description: Id of switch-control + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of switch + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of selected-connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of selected-connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_uuid + in: path + description: Id of selected-connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of selected-connection-end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectionEndPointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/selected-route={connection-uuid},{route-local-id}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.RouteRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_selected_routeconnection_uuidroute_local_id_get + parameters: + - name: uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + - name: switch_control_uuid + in: path + description: Id of switch-control + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of switch + required: true + style: simple + explode: false + schema: + type: string + - name: connection_uuid + in: path + description: Id of selected-route + required: true + style: simple + explode: false + schema: + type: string + - name: route_local_id + in: path + description: Id of selected-route + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.RouteRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.RouteRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service/: + post: + tags: + - tapi-connectivity + summary: creates tapi.connectivity.ConnectivityService + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_service_post + requestBody: + description: tapi.connectivity.ConnectivityService to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityService.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectivityService + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectivityService + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.connectivity.ConnectivityService + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityService to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityService.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.connectivity.ConnectivityService + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/connection={connection-uuid}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectionRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_connectionconnection_uuid_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: connection_uuid + in: path + description: Id of connection + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectionRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/coroute-inclusion/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectivityServiceRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectivityServiceRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.connectivity.ConnectivityServiceRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceRef to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.connectivity.ConnectivityServiceRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceRef to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.connectivity.ConnectivityServiceRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/cost-characteristic/: + post: + tags: + - tapi-connectivity + summary: creates tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristic_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.CostCharacteristic to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.topology.CostCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/cost-characteristic={cost-name}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.CostCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.CostCharacteristic to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.topology.CostCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/diversity-exclusion/: + post: + tags: + - tapi-connectivity + summary: creates tapi.connectivity.ConnectivityServiceRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusion_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceRef to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/diversity-exclusion={connectivity-service-uuid}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectivityServiceRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: connectivity_service_uuid + in: path + description: Id of diversity-exclusion + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectivityServiceRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.connectivity.ConnectivityServiceRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: connectivity_service_uuid + in: path + description: Id of diversity-exclusion + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceRef to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.connectivity.ConnectivityServiceRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: connectivity_service_uuid + in: path + description: Id of diversity-exclusion + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point/: + post: + tags: + - tapi-connectivity + summary: creates tapi.connectivity.ConnectivityServiceEndPoint + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_point_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceEndPoint to be added to + list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceEndPoint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectivityServiceEndPoint + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectivityServiceEndPoint + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.connectivity.ConnectivityServiceEndPoint + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceEndPoint to be added or + updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceEndPoint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.connectivity.ConnectivityServiceEndPoint + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/: + get: + tags: + - tapi-connectivity + summary: returns tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.Capacity to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.Capacity.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.Capacity to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.Capacity.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.BandwidthProfile to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.BandwidthProfile.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.BandwidthProfile to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.BandwidthProfile.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/total-size/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectionEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectionEndPointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/name/: + post: + tags: + - tapi-connectivity + summary: creates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_name_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/name={value-name}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/peer-fwd-connectivity-service-end-point/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectivityServiceEndPointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceEndPointRef to be added + or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceEndPointRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceEndPointRef to be added + to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceEndPointRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/protecting-connectivity-service-end-point/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectivityServiceEndPointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceEndPointRef to be added + or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceEndPointRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceEndPointRef to be added + to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceEndPointRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/server-connectivity-service-end-point/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectivityServiceEndPointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceEndPointRef to be added + or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceEndPointRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.connectivity.ConnectivityServiceEndPointRef to be added + to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.connectivity.ConnectivityServiceEndPointRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.connectivity.ConnectivityServiceEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/service-interface-point/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.ServiceInterfacePointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.ServiceInterfacePointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.ServiceInterfacePointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.ServiceInterfacePointRef to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.ServiceInterfacePointRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.ServiceInterfacePointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.ServiceInterfacePointRef to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.ServiceInterfacePointRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.ServiceInterfacePointRef + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/latency-characteristic/: + post: + tags: + - tapi-connectivity + summary: creates tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristic_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.LatencyCharacteristic to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.topology.LatencyCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/latency-characteristic={traffic-property-name}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.LatencyCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.LatencyCharacteristic to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.topology.LatencyCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-cost/: + get: + tags: + - tapi-connectivity + summary: returns tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.ValueOrPriority + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-delay/: + get: + tags: + - tapi-connectivity + summary: returns tapi.path.computation.ValueOrPriority + description: Delay unit is microseconds. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.ValueOrPriority + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.path.computation.ValueOrPriority + description: Delay unit is microseconds. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.path.computation.ValueOrPriority + description: Delay unit is microseconds. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.path.computation.ValueOrPriority + description: Delay unit is microseconds. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-hops/: + get: + tags: + - tapi-connectivity + summary: returns tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.ValueOrPriority + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/name/: + post: + tags: + - tapi-connectivity + summary: creates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_name_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/name={value-name}/: + get: + tags: + - tapi-connectivity + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/: + get: + tags: + - tapi-connectivity + summary: returns tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.Capacity to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.Capacity.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.Capacity to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.Capacity.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.BandwidthProfile to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.BandwidthProfile.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.BandwidthProfile to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.BandwidthProfile.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/total-size/: + get: + tags: + - tapi-connectivity + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/resilience-type/: + get: + tags: + - tapi-connectivity + summary: returns tapi.topology.ResilienceType + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.ResilienceType + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.ResilienceTypeWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.topology.ResilienceType + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.ResilienceType to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.ResilienceTypeWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.topology.ResilienceType.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.topology.ResilienceType + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.ResilienceType to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.ResilienceTypeWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.topology.ResilienceType.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.topology.ResilienceType + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/risk-diversity-characteristic/: + post: + tags: + - tapi-connectivity + summary: creates tapi.topology.RiskCharacteristic + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristic_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.RiskCharacteristic to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.topology.RiskCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/risk-diversity-characteristic={risk-characteristic-name}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.topology.RiskCharacteristic + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: risk_characteristic_name + in: path + description: Id of risk-diversity-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.RiskCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.topology.RiskCharacteristic + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: risk_characteristic_name + in: path + description: Id of risk-diversity-characteristic + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.RiskCharacteristic to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.topology.RiskCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.topology.RiskCharacteristic + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + - name: risk_characteristic_name + in: path + description: Id of risk-diversity-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/schedule/: + get: + tags: + - tapi-connectivity + summary: returns tapi.common.TimeRange + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_get + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.TimeRange + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.TimeRangeWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + put: + tags: + - tapi-connectivity + summary: creates or updates tapi.common.TimeRange + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_put + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.TimeRange to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.TimeRangeWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.TimeRange.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + post: + tags: + - tapi-connectivity + summary: creates tapi.common.TimeRange + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_post + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.TimeRange to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.TimeRangeWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.TimeRange.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + delete: + tags: + - tapi-connectivity + summary: removes tapi.common.TimeRange + description: none + operationId: data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_delete + parameters: + - name: uuid + in: path + description: Id of connectivity-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /data/tapi-common:context/tapi-notification:notification-context/: + get: + tags: + - tapi-notification + summary: returns tapi.notification.NotificationContext + description: Augments the base TAPI Context with NotificationService information + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_get + responses: + "200": + description: tapi.notification.NotificationContext + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NotificationContextWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + put: + tags: + - tapi-notification + summary: creates or updates tapi.notification.NotificationContext + description: Augments the base TAPI Context with NotificationService information + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_put + requestBody: + description: tapi.notification.NotificationContext to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NotificationContextWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.notification.NotificationContext.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + post: + tags: + - tapi-notification + summary: creates tapi.notification.NotificationContext + description: Augments the base TAPI Context with NotificationService information + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_post + requestBody: + description: tapi.notification.NotificationContext to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NotificationContextWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.notification.NotificationContext.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + delete: + tags: + - tapi-notification + summary: removes tapi.notification.NotificationContext + description: Augments the base TAPI Context with NotificationService information + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_delete + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription/: + post: + tags: + - tapi-notification + summary: creates tapi.notification.NotificationSubscriptionService + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscription_post + requestBody: + description: tapi.notification.NotificationSubscriptionService to be added + to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NotificationSubscriptionServiceWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.notification.NotificationSubscriptionService.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/: + get: + tags: + - tapi-notification + summary: returns tapi.notification.NotificationSubscriptionService + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.NotificationSubscriptionService + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NotificationSubscriptionServiceWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + put: + tags: + - tapi-notification + summary: creates or updates tapi.notification.NotificationSubscriptionService + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_put + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.notification.NotificationSubscriptionService to be added + or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NotificationSubscriptionServiceWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.notification.NotificationSubscriptionService.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + delete: + tags: + - tapi-notification + summary: removes tapi.notification.NotificationSubscriptionService + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_delete + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/name/: + post: + tags: + - tapi-notification + summary: creates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_name_post + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/name={value-name}/: + get: + tags: + - tapi-notification + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + put: + tags: + - tapi-notification + summary: creates or updates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_put + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + delete: + tags: + - tapi-notification + summary: removes tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_delete + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification-channel/: + get: + tags: + - tapi-notification + summary: returns tapi.notification.NotificationChannel + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notification_channel_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.NotificationChannel + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NotificationChannelWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification-channel/name={value-name}/ + : get: + tags: + - tapi-notification + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notification_channel_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/: + get: + tags: + - tapi-notification + summary: returns tapi.notification.Notification + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: notification_uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.Notification + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NotificationWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/additional-info={value-name}/ + : get: + tags: + - tapi-notification + summary: returns tapi.common.NameAndValue + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_additional_infovalue_name_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: notification_uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of additional-info + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/alarm-info/ + : get: + tags: + - tapi-notification + summary: returns tapi.notification.AlarmInfo + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_alarm_info_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: notification_uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.AlarmInfo + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.AlarmInfoWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/changed-attributes={value-name}/ + : get: + tags: + - tapi-notification + summary: returns tapi.notification.NameAndValueChange + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_changed_attributesvalue_name_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: notification_uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of changed-attributes + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.NameAndValueChange + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NameAndValueChangeWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/name={value-name}/ + : get: + tags: + - tapi-notification + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: notification_uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/target-object-name={value-name}/ + : get: + tags: + - tapi-notification + summary: returns tapi.common.NameAndValue + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_target_object_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: notification_uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of target-object-name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/tca-info/ + : get: + tags: + - tapi-notification + summary: returns tapi.notification.TcaInfo + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_tca_info_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: notification_uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.TcaInfo + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.TcaInfoWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/: + get: + tags: + - tapi-notification + summary: returns tapi.notification.SubscriptionFilter + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.SubscriptionFilter + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.SubscriptionFilterWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + put: + tags: + - tapi-notification + summary: creates or updates tapi.notification.SubscriptionFilter + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_put + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.notification.SubscriptionFilter to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.SubscriptionFilterWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.notification.SubscriptionFilter.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + post: + tags: + - tapi-notification + summary: creates tapi.notification.SubscriptionFilter + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_post + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.notification.SubscriptionFilter to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.SubscriptionFilterWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.notification.SubscriptionFilter.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + delete: + tags: + - tapi-notification + summary: removes tapi.notification.SubscriptionFilter + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_delete + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/name/: + post: + tags: + - tapi-notification + summary: creates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_name_post + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/name={value-name}/ + : get: + tags: + - tapi-notification + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + put: + tags: + - tapi-notification + summary: creates or updates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_put + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + delete: + tags: + - tapi-notification + summary: removes tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_delete + parameters: + - name: uuid + in: path + description: Id of notif-subscription + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/: + get: + tags: + - tapi-notification + summary: returns tapi.notification.Notification + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_get + parameters: + - name: uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.Notification + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NotificationWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/additional-info={value-name}/: + get: + tags: + - tapi-notification + summary: returns tapi.common.NameAndValue + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_additional_infovalue_name_get + parameters: + - name: uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of additional-info + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/alarm-info/: + get: + tags: + - tapi-notification + summary: returns tapi.notification.AlarmInfo + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_alarm_info_get + parameters: + - name: uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.AlarmInfo + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.AlarmInfoWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/changed-attributes={value-name}/: + get: + tags: + - tapi-notification + summary: returns tapi.notification.NameAndValueChange + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_changed_attributesvalue_name_get + parameters: + - name: uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of changed-attributes + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.NameAndValueChange + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.NameAndValueChangeWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/name={value-name}/: + get: + tags: + - tapi-notification + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/target-object-name={value-name}/: + get: + tags: + - tapi-notification + summary: returns tapi.common.NameAndValue + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_target_object_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of target-object-name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/tca-info/: + get: + tags: + - tapi-notification + summary: returns tapi.notification.TcaInfo + description: none + operationId: data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_tca_info_get + parameters: + - name: uuid + in: path + description: Id of notification + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.notification.TcaInfo + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.TcaInfoWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.PathComputationContext + description: Augments the base TAPI Context with PathComputationService information + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_get + responses: + "200": + description: tapi.path.computation.PathComputationContext + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathComputationContextWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.path.computation.PathComputationContext + description: Augments the base TAPI Context with PathComputationService information + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_put + requestBody: + description: tapi.path.computation.PathComputationContext to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathComputationContextWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.PathComputationContext.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.path.computation.PathComputationContext + description: Augments the base TAPI Context with PathComputationService information + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_post + requestBody: + description: tapi.path.computation.PathComputationContext to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathComputationContextWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.PathComputationContext.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.path.computation.PathComputationContext + description: Augments the base TAPI Context with PathComputationService information + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_delete + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service/: + post: + tags: + - tapi-path-computation + summary: creates tapi.path.computation.PathComputationService + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_service_post + requestBody: + description: tapi.path.computation.PathComputationService to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathComputationServiceWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.PathComputationService.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.PathComputationService + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.PathComputationService + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathComputationServiceWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.path.computation.PathComputationService + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.PathComputationService to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathComputationServiceWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.PathComputationService.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.path.computation.PathComputationService + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point/: + post: + tags: + - tapi-path-computation + summary: creates tapi.path.computation.PathServiceEndPoint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_point_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.PathServiceEndPoint to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathServiceEndPointWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.PathServiceEndPoint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.PathServiceEndPoint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.PathServiceEndPoint + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathServiceEndPointWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.path.computation.PathServiceEndPoint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.PathServiceEndPoint to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathServiceEndPointWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.PathServiceEndPoint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.path.computation.PathServiceEndPoint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.Capacity to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.Capacity.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.Capacity to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.Capacity.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.Capacity + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.BandwidthProfile to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.BandwidthProfile.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.BandwidthProfile to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.BandwidthProfile.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/total-size/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.CapacityValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.CapacityValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/name/: + post: + tags: + - tapi-path-computation + summary: creates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_name_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/name={value-name}/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/service-interface-point/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.ServiceInterfacePointRef + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.ServiceInterfacePointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.ServiceInterfacePointRef + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.ServiceInterfacePointRef to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.ServiceInterfacePointRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.common.ServiceInterfacePointRef + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.ServiceInterfacePointRef to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRefWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.ServiceInterfacePointRef.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.ServiceInterfacePointRef + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/name/: + post: + tags: + - tapi-path-computation + summary: creates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_name_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/name={value-name}/: + get: + tags: + - tapi-path-computation + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.PathObjectiveFunction + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.PathObjectiveFunction + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathObjectiveFunctionWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.path.computation.PathObjectiveFunction + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.PathObjectiveFunction to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathObjectiveFunctionWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.PathObjectiveFunction.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.path.computation.PathObjectiveFunction + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.PathObjectiveFunction to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathObjectiveFunctionWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.PathObjectiveFunction.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.path.computation.PathObjectiveFunction + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/name/: + post: + tags: + - tapi-path-computation + summary: creates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_name_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/name={value-name}/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.PathOptimizationConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.PathOptimizationConstraint + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathOptimizationConstraintWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.path.computation.PathOptimizationConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.PathOptimizationConstraint to be added + or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathOptimizationConstraintWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.PathOptimizationConstraint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.path.computation.PathOptimizationConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.PathOptimizationConstraint to be added + to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathOptimizationConstraintWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.PathOptimizationConstraint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.path.computation.PathOptimizationConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/name/: + post: + tags: + - tapi-path-computation + summary: creates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_name_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/name={value-name}/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.common.NameAndValue to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.common.NameAndValue.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/path={path-uuid}/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.PathRef + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_pathpath_uuid_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: path_uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.PathRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.RoutingConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.RoutingConstraint + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraintWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.path.computation.RoutingConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.RoutingConstraint to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraintWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.RoutingConstraint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.path.computation.RoutingConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.RoutingConstraint to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraintWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.RoutingConstraint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.path.computation.RoutingConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/cost-characteristic/ + : post: + tags: + - tapi-path-computation + summary: creates tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristic_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.CostCharacteristic to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.topology.CostCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/cost-characteristic={cost-name}/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.CostCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.CostCharacteristic to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.topology.CostCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/latency-characteristic/ + : post: + tags: + - tapi-path-computation + summary: creates tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristic_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.LatencyCharacteristic to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.topology.LatencyCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/latency-characteristic={traffic-property-name}/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.LatencyCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.LatencyCharacteristic to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.topology.LatencyCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-cost/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.ValueOrPriority + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-delay/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.ValueOrPriority + description: Delay unit is microseconds. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.ValueOrPriority + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.path.computation.ValueOrPriority + description: Delay unit is microseconds. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.path.computation.ValueOrPriority + description: Delay unit is microseconds. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.path.computation.ValueOrPriority + description: Delay unit is microseconds. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-hops/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.ValueOrPriority + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.ValueOrPriority to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.ValueOrPriority.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/risk-diversity-characteristic/ + : post: + tags: + - tapi-path-computation + summary: creates tapi.topology.RiskCharacteristic + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristic_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.RiskCharacteristic to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.topology.RiskCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/risk-diversity-characteristic={risk-characteristic-name}/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.topology.RiskCharacteristic + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: risk_characteristic_name + in: path + description: Id of risk-diversity-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.RiskCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.topology.RiskCharacteristic + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: risk_characteristic_name + in: path + description: Id of risk-diversity-characteristic + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.topology.RiskCharacteristic to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristicWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.topology.RiskCharacteristic.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.topology.RiskCharacteristic + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + - name: risk_characteristic_name + in: path + description: Id of risk-diversity-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/topology-constraint/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.TopologyConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_get + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.TopologyConstraint + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.TopologyConstraintWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + put: + tags: + - tapi-path-computation + summary: creates or updates tapi.path.computation.TopologyConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_put + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.TopologyConstraint to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.TopologyConstraintWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.path.computation.TopologyConstraint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + post: + tags: + - tapi-path-computation + summary: creates tapi.path.computation.TopologyConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_post + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: tapi.path.computation.TopologyConstraint to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.TopologyConstraintWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.path.computation.TopologyConstraint.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + delete: + tags: + - tapi-path-computation + summary: removes tapi.path.computation.TopologyConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_delete + parameters: + - name: uuid + in: path + description: Id of path-comp-service + required: true + style: simple + explode: false + schema: + type: string + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.Path + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_get + parameters: + - name: uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.Path + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.PathWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/link={topology-uuid},{link-uuid}/: + get: + tags: + - tapi-path-computation + summary: returns tapi.topology.LinkRef + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_linktopology_uuidlink_uuid_get + parameters: + - name: uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.LinkRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LinkRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/name={value-name}/: + get: + tags: + - tapi-path-computation + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.RoutingConstraint + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_get + parameters: + - name: uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.RoutingConstraint + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraintWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/cost-characteristic={cost-name}/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_cost_characteristiccost_name_get + parameters: + - name: uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.CostCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/latency-characteristic={traffic-property-name}/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_latency_characteristictraffic_property_name_get + parameters: + - name: uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.LatencyCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/max-allowed-cost/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_cost_get + parameters: + - name: uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.ValueOrPriority + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/max-allowed-delay/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.ValueOrPriority + description: Delay unit is microseconds. + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_delay_get + parameters: + - name: uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.ValueOrPriority + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/max-allowed-hops/: + get: + tags: + - tapi-path-computation + summary: returns tapi.path.computation.ValueOrPriority + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_hops_get + parameters: + - name: uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.path.computation.ValueOrPriority + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriorityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/risk-diversity-characteristic={risk-characteristic-name}/ + : get: + tags: + - tapi-path-computation + summary: returns tapi.topology.RiskCharacteristic + description: none + operationId: data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_get + parameters: + - name: uuid + in: path + description: Id of path + required: true + style: simple + explode: false + schema: + type: string + - name: risk_characteristic_name + in: path + description: Id of risk-diversity-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.RiskCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /data/tapi-common:context/tapi-topology:topology-context/: + get: + tags: + - tapi-topology + summary: returns tapi.topology.context.TopologyContext + description: Augments the base TAPI Context with TopologyService information + operationId: data_tapi_commoncontext_tapi_topologytopology_context_get + responses: + "200": + description: tapi.topology.TopologyContext + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.TopologyContextWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + put: + tags: + - tapi-topology + summary: creates or updates tapi.topology.context.TopologyContext + description: Augments the base TAPI Context with TopologyService information + operationId: data_tapi_commoncontext_tapi_topologytopology_context_put + requestBody: + description: tapi.topology.TopologyContext to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.TopologyContextWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "204": + description: Object modified + content: {} + x-codegen-request-body-name: tapi.topology.context.TopologyContext.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + post: + tags: + - tapi-topology + summary: creates tapi.topology.context.TopologyContext + description: Augments the base TAPI Context with TopologyService information + operationId: data_tapi_commoncontext_tapi_topologytopology_context_post + requestBody: + description: tapi.topology.TopologyContext to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.TopologyContextWrapper' + required: false + responses: + "201": + description: Object created + content: {} + "400": + description: Internal error + content: {} + "409": + description: Object already exists + content: {} + x-codegen-request-body-name: tapi.topology.context.TopologyContext.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + delete: + tags: + - tapi-topology + summary: removes tapi.topology.context.TopologyContext + description: Augments the base TAPI Context with TopologyService information + operationId: data_tapi_commoncontext_tapi_topologytopology_context_delete + responses: + "400": + description: Internal error + content: {} + "204": + description: Object deleted + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/nw-topology-service/: + get: + tags: + - tapi-topology + summary: returns tapi.topology.NetworkTopologyService + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_get + responses: + "200": + description: tapi.topology.NetworkTopologyService + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.NetworkTopologyServiceWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/nw-topology-service/name={value-name}/: + get: + tags: + - tapi-topology + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_namevalue_name_get + parameters: + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/nw-topology-service/topology={topology-uuid}/: + get: + tags: + - tapi-topology + summary: returns tapi.topology.TopologyRef + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_topologytopology_uuid_get + parameters: + - name: topology_uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.TopologyRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.TopologyRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/: + get: + tags: + - tapi-topology + summary: returns tapi.topology.topologycontext.Topology + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.Topology + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.TopologyWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/: + get: + tags: + - tapi-topology + summary: returns tapi.topology.Link + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.Link + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LinkWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/: + get: + tags: + - tapi-topology + summary: returns tapi.common.Capacity + description: Capacity available to be assigned. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/: + get: + tags: + - tapi-topology + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/total-size/: + get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/cost-characteristic={cost-name}/: + get: + tags: + - tapi-topology + summary: returns tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_cost_characteristiccost_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.CostCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/latency-characteristic={traffic-property-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_latency_characteristictraffic_property_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.LatencyCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/name={value-name}/: + get: + tags: + - tapi-topology + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/node-edge-point={topology-uuid},{node-uuid},{node-edge-point-uuid}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.NodeEdgePointRef + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_node_edge_pointtopology_uuidnode_uuidnode_edge_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_uuid + in: path + description: Id of node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.NodeEdgePointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/resilience-type/: + get: + tags: + - tapi-topology + summary: returns tapi.topology.ResilienceType + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_resilience_type_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.ResilienceType + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.ResilienceTypeWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/risk-characteristic={risk-characteristic-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.RiskCharacteristic + description: A list of risk characteristics for consideration in an analysis + of shared risk. Each element of the list represents a specific risk consideration. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_risk_characteristicrisk_characteristic_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + - name: risk_characteristic_name + in: path + description: Id of risk-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.RiskCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/: + get: + tags: + - tapi-topology + summary: returns tapi.common.Capacity + description: An optimistic view of the capacity of the TopologicalEntity assuming + that any shared capacity is available to be taken. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/total-size/: + get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/validation-mechanism={validation-mechanism}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.ValidationMechanism + description: Provides details of the specific validation mechanism(s) used to + confirm the presence of an intended topologicalEntity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_validation_mechanismvalidation_mechanism_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: link_uuid + in: path + description: Id of link + required: true + style: simple + explode: false + schema: + type: string + - name: validation_mechanism + in: path + description: Id of validation-mechanism + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.ValidationMechanism + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.ValidationMechanismWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/name={value-name}/: + get: + tags: + - tapi-topology + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/: + get: + tags: + - tapi-topology + summary: returns tapi.topology.topology.Node + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.topology.Node + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.topology.NodeWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/aggregated-node-edge-point={topology-uuid},{aggregated-node-edge-point-node-uuid},{node-edge-point-uuid}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.NodeEdgePointRef + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_aggregated_node_edge_pointtopology_uuidaggregated_node_edge_point_node_uuidnode_edge_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of aggregated-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: aggregated_node_edge_point_node_uuid + in: path + description: Id of aggregated-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_uuid + in: path + description: Id of aggregated-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.NodeEdgePointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/: + get: + tags: + - tapi-topology + summary: returns tapi.common.Capacity + description: Capacity available to be assigned. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/: + get: + tags: + - tapi-topology + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/total-size/: + get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/cost-characteristic={cost-name}/: + get: + tags: + - tapi-topology + summary: returns tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_cost_characteristiccost_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.CostCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/encap-topology/: + get: + tags: + - tapi-topology + summary: returns tapi.topology.TopologyRef + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_encap_topology_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.TopologyRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.TopologyRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/latency-characteristic={traffic-property-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_latency_characteristictraffic_property_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.LatencyCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/name={value-name}/: + get: + tags: + - tapi-topology + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.NodeRuleGroup + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.NodeRuleGroup + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.NodeRuleGroupWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.Capacity + description: Capacity available to be assigned. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/total-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/cost-characteristic={cost-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_cost_characteristiccost_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.CostCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.InterRuleGroup + description: "Nested NodeRuleGroups may have InterRuleGroups. The Superior NodeRuleGroup\ + \ contains the nested NodeRuleGroups and their associated InterRuleGroups.\r\ + \n This is equivalent to the Node-Topology hierarchy." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.InterRuleGroup + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.InterRuleGroupWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/associated-node-rule-group={topology-uuid},{associated-node-rule-group-node-uuid},{associated-node-rule-group-node-rule-group-uuid}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.NodeRuleGroupRef + description: "The NodeRuleGroups that the InterRuleGroup constrains interconnection\ + \ between.\r\n The CEPs of the NEPs of a referenced NodeRuleGroup\ + \ can interconnect to the CEPs of the NEPs of another referenced NodeRuleGroup\ + \ constrained by the rules of the InterRuleGroup." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_associated_node_rule_grouptopology_uuidassociated_node_rule_group_node_uuidassociated_node_rule_group_node_rule_group_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of associated-node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: associated_node_rule_group_node_uuid + in: path + description: Id of associated-node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: associated_node_rule_group_node_rule_group_uuid + in: path + description: Id of associated-node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.NodeRuleGroupRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.NodeRuleGroupRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.Capacity + description: Capacity available to be assigned. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/total-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/cost-characteristic={cost-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.CostCharacteristic + description: The list of costs where each cost relates to some aspect of the + TopologicalEntity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_cost_characteristiccost_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: cost_name + in: path + description: Id of cost-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.CostCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.CostCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/latency-characteristic={traffic-property-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_latency_characteristictraffic_property_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.LatencyCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/name={value-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/risk-characteristic={risk-characteristic-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.RiskCharacteristic + description: A list of risk characteristics for consideration in an analysis + of shared risk. Each element of the list represents a specific risk consideration. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_risk_characteristicrisk_characteristic_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: risk_characteristic_name + in: path + description: Id of risk-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.RiskCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.Rule + description: The list of rules of the InterRuleGroup. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of rule + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.Rule + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RuleWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/cep-port-role/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.PortRoleRule + description: "Indicates the port role to which the rule applies. \r\n \ + \ The port role is interpreted in the context of the connection type\ + \ which is identified by the connection spec. \r\n The port\ + \ role is not meaningful in the absence of a connection spec reference.\r\n\ + \ If a node rule group carries a port role, that role applies\ + \ also to the associated inter rule where the combination of the roles in\ + \ the node rule groups at the ends of the inter group rule define the connection\ + \ orientation.\r\n For example a root-and-leaf connection may\ + \ be used in a node where a node rule group collects one set of NEPs has the\ + \ port role 'root' and another node rule group collects another set of NEPs\ + \ has the port role 'leaf' where these are joined by an inter rule group.\ + \ This combination specifies an allowed orientation of the root-and-leaf connection.\r\ + \n No port role statement means all port roles are allowed." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_cep_port_role_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of rule + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.PortRoleRule + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.PortRoleRuleWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/connection-spec-reference/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.ConnectionSpecReference + description: "Identifies the type of connection that the rule applies to. \r\ + \n If the attribute is not present then the rule applies to\ + \ all types of connection supported by the device." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_connection_spec_reference_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of rule + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.ConnectionSpecReference + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.ConnectionSpecReferenceWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/name={value-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of rule + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/signal-property/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.SignalPropertyRule + description: "The rule only applies to signals with the properties listed. \r\ + \n If the attribute is not present then the rule applies to\ + \ all signals." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_signal_property_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of rule + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.SignalPropertyRule + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.SignalPropertyRuleWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.Capacity + description: An optimistic view of the capacity of the TopologicalEntity assuming + that any shared capacity is available to be taken. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/total-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: inter_rule_group_uuid + in: path + description: Id of inter-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/latency-characteristic={traffic-property-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.LatencyCharacteristic + description: The effect on the latency of a queuing process. This only has significant + effect for packet based systems and has a complex characteristic. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_latency_characteristictraffic_property_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: traffic_property_name + in: path + description: Id of latency-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.LatencyCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/name={value-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/node-edge-point={topology-uuid},{node-edge-point-node-uuid},{node-edge-point-uuid}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.NodeEdgePointRef + description: NEPs and their client CEPs that the rules apply to. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_node_edge_pointtopology_uuidnode_edge_point_node_uuidnode_edge_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_node_uuid + in: path + description: Id of node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_uuid + in: path + description: Id of node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.NodeEdgePointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/node-rule-group={topology-uuid},{node-rule-group-node-uuid},{node-rule-group-node-rule-group-uuid}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.NodeRuleGroupRef + description: "NodeRuleGroups may be nested such that finer grained rules may\ + \ be applied.\r\n A nested rule group should have a subset\ + \ of the NEPs of the superior rule group." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_node_rule_grouptopology_uuidnode_rule_group_node_uuidnode_rule_group_node_rule_group_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_node_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.NodeRuleGroupRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.NodeRuleGroupRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/risk-characteristic={risk-characteristic-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.RiskCharacteristic + description: A list of risk characteristics for consideration in an analysis + of shared risk. Each element of the list represents a specific risk consideration. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_risk_characteristicrisk_characteristic_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: risk_characteristic_name + in: path + description: Id of risk-characteristic + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.RiskCharacteristic + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristicWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.Rule + description: The list of rules of the NodeRuleGroup. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of rule + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.Rule + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.RuleWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/cep-port-role/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.PortRoleRule + description: "Indicates the port role to which the rule applies. \r\n \ + \ The port role is interpreted in the context of the connection type\ + \ which is identified by the connection spec. \r\n The port\ + \ role is not meaningful in the absence of a connection spec reference.\r\n\ + \ If a node rule group carries a port role, that role applies\ + \ also to the associated inter rule where the combination of the roles in\ + \ the node rule groups at the ends of the inter group rule define the connection\ + \ orientation.\r\n For example a root-and-leaf connection may\ + \ be used in a node where a node rule group collects one set of NEPs has the\ + \ port role 'root' and another node rule group collects another set of NEPs\ + \ has the port role 'leaf' where these are joined by an inter rule group.\ + \ This combination specifies an allowed orientation of the root-and-leaf connection.\r\ + \n No port role statement means all port roles are allowed." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_cep_port_role_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of rule + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.PortRoleRule + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.PortRoleRuleWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/connection-spec-reference/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.ConnectionSpecReference + description: "Identifies the type of connection that the rule applies to. \r\ + \n If the attribute is not present then the rule applies to\ + \ all types of connection supported by the device." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_connection_spec_reference_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of rule + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.ConnectionSpecReference + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.ConnectionSpecReferenceWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/name={value-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of rule + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/signal-property/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.SignalPropertyRule + description: "The rule only applies to signals with the properties listed. \r\ + \n If the attribute is not present then the rule applies to\ + \ all signals." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_signal_property_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + - name: local_id + in: path + description: Id of rule + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.SignalPropertyRule + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.SignalPropertyRuleWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.Capacity + description: An optimistic view of the capacity of the TopologicalEntity assuming + that any shared capacity is available to be taken. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/total-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: node_rule_group_uuid + in: path + description: Id of node-rule-group + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.node.OwnedNodeEdgePoint + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.node.OwnedNodeEdgePoint + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.node.OwnedNodeEdgePointWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/aggregated-node-edge-point={topology-uuid},{aggregated-node-edge-point-node-uuid},{node-edge-point-uuid}/ + : get: + tags: + - tapi-topology + summary: returns tapi.topology.NodeEdgePointRef + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_aggregated_node_edge_pointtopology_uuidaggregated_node_edge_point_node_uuidnode_edge_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of aggregated-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: aggregated_node_edge_point_node_uuid + in: path + description: Id of aggregated-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_uuid + in: path + description: Id of aggregated-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.NodeEdgePointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.Capacity + description: Capacity available to be assigned. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/total-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/mapped-service-interface-point={service-interface-point-uuid}/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.ServiceInterfacePointRef + description: NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) + or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) + should be considered experimental + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_mapped_service_interface_pointservice_interface_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: service_interface_point_uuid + in: path + description: Id of mapped-service-interface-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.ServiceInterfacePointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/name={value-name}/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.CepList + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.CepList + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.CepListWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectionEndPoint + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectionEndPoint + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/aggregated-connection-end-point={topology-uuid},{aggregated-connection-end-point-node-uuid},{node-edge-point-uuid},{aggregated-connection-end-point-connection-end-point-uuid}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectionEndPointRef + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_aggregated_connection_end_pointtopology_uuidaggregated_connection_end_point_node_uuidnode_edge_point_uuidaggregated_connection_end_point_connection_end_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of aggregated-connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: aggregated_connection_end_point_node_uuid + in: path + description: Id of aggregated-connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_uuid + in: path + description: Id of aggregated-connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: aggregated_connection_end_point_connection_end_point_uuid + in: path + description: Id of aggregated-connection-end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectionEndPointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/cep-role/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.CepRole + description: "Defines the role of the CEP in the context of the connection spec.\r\ + \n There may be many cep role - connection spec combinations\ + \ for a particular CEP where each corresponds to a specific connection associated\ + \ with the CEP." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_cep_role_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.CepRole + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.CepRoleWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/cep-role/connection-spec-reference/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.connectivity.ConnectionSpecReference + description: The reference to the spec that defines the cep role. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_cep_role_connection_spec_reference_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.connectivity.ConnectionSpecReference + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.ConnectionSpecReferenceWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/client-node-edge-point={topology-uuid},{client-node-edge-point-node-uuid},{node-edge-point-uuid}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.topology.NodeEdgePointRef + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_client_node_edge_pointtopology_uuidclient_node_edge_point_node_uuidnode_edge_point_uuid_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: topology_uuid + in: path + description: Id of client-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: client_node_edge_point_node_uuid + in: path + description: Id of client-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: node_edge_point_uuid + in: path + description: Id of client-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.NodeEdgePointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/name={value-name}/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.common.NameAndValue + description: List of names. A property of an entity with a value that is unique + in some namespace but may change during the life of the entity. A name carries + no semantics with respect to the purpose of the entity. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_namevalue_name_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + - name: value_name + in: path + description: Id of name + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.NameAndValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.NameAndValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/parent-node-edge-point/ + : get: + tags: + - tapi-connectivity + summary: returns tapi.topology.NodeEdgePointRef + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_parent_node_edge_point_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + - name: connection_end_point_uuid + in: path + description: Id of connection-end-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.topology.NodeEdgePointRef + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRefWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.Capacity + description: An optimistic view of the capacity of the TopologicalEntity assuming + that any shared capacity is available to be taken. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/total-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + - name: owned_node_edge_point_uuid + in: path + description: Id of owned-node-edge-point + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/: + get: + tags: + - tapi-topology + summary: returns tapi.common.Capacity + description: An optimistic view of the capacity of the TopologicalEntity assuming + that any shared capacity is available to be taken. + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.Capacity + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.BandwidthProfile + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.BandwidthProfile + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.BandwidthProfileWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: none + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/total-size/: + get: + tags: + - tapi-topology + summary: returns tapi.common.CapacityValue + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + operationId: data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_total_size_get + parameters: + - name: uuid + in: path + description: Id of topology + required: true + style: simple + explode: false + schema: + type: string + - name: node_uuid + in: path + description: Id of node + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: tapi.common.CapacityValue + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.CapacityValueWrapper' + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /operations/tapi-common:get-service-interface-point-details/: + post: + tags: + - tapi-common + summary: operates on tapi.common.GetServiceInterfacePointDetails + description: operates on tapi.common.GetServiceInterfacePointDetails + operationId: operations_tapi_commonget_service_interface_point_details_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapicommongetserviceinterfacepointdetails_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.GetServiceInterfacePointDetails' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.common.getserviceinterfacepointdetails.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /operations/tapi-common:get-service-interface-point-list/: + post: + tags: + - tapi-common + operationId: operations_tapi_commonget_service_interface_point_list_post + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.common.GetServiceInterfacePointList' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /operations/tapi-common:update-service-interface-point/: + post: + tags: + - tapi-common + summary: operates on tapi.common.UpdateServiceInterfacePoint + description: operates on tapi.common.UpdateServiceInterfacePoint + operationId: operations_tapi_commonupdate_service_interface_point_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapicommonupdateserviceinterfacepoint_body' + required: false + responses: + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.common.updateserviceinterfacepoint.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_common_controller + /operations/tapi-connectivity:create-connectivity-service/: + post: + tags: + - tapi-connectivity + summary: operates on tapi.connectivity.CreateConnectivityService + description: operates on tapi.connectivity.CreateConnectivityService + operationId: operations_tapi_connectivitycreate_connectivity_service_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapiconnectivitycreateconnectivityservice_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.CreateConnectivityService' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.connectivity.createconnectivityservice.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /operations/tapi-connectivity:delete-connectivity-service/: + post: + tags: + - tapi-connectivity + summary: operates on tapi.connectivity.DeleteConnectivityService + description: operates on tapi.connectivity.DeleteConnectivityService + operationId: operations_tapi_connectivitydelete_connectivity_service_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapiconnectivitydeleteconnectivityservice_body' + required: false + responses: + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.connectivity.deleteconnectivityservice.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /operations/tapi-connectivity:get-connection-details/: + post: + tags: + - tapi-connectivity + summary: operates on tapi.connectivity.GetConnectionDetails + description: operates on tapi.connectivity.GetConnectionDetails + operationId: operations_tapi_connectivityget_connection_details_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapiconnectivitygetconnectiondetails_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.GetConnectionDetails' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.connectivity.getconnectiondetails.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /operations/tapi-connectivity:get-connection-end-point-details/: + post: + tags: + - tapi-connectivity + summary: operates on tapi.connectivity.GetConnectionEndPointDetails + description: operates on tapi.connectivity.GetConnectionEndPointDetails + operationId: operations_tapi_connectivityget_connection_end_point_details_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapiconnectivitygetconnectionendpointdetails_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.GetConnectionEndPointDetails' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.connectivity.getconnectionendpointdetails.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /operations/tapi-connectivity:get-connectivity-service-details/: + post: + tags: + - tapi-connectivity + summary: operates on tapi.connectivity.GetConnectivityServiceDetails + description: operates on tapi.connectivity.GetConnectivityServiceDetails + operationId: operations_tapi_connectivityget_connectivity_service_details_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapiconnectivitygetconnectivityservicedetails_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.GetConnectivityServiceDetails' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.connectivity.getconnectivityservicedetails.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /operations/tapi-connectivity:get-connectivity-service-list/: + post: + tags: + - tapi-connectivity + operationId: operations_tapi_connectivityget_connectivity_service_list_post + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.GetConnectivityServiceList' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /operations/tapi-connectivity:update-connectivity-service/: + post: + tags: + - tapi-connectivity + summary: operates on tapi.connectivity.UpdateConnectivityService + description: operates on tapi.connectivity.UpdateConnectivityService + operationId: operations_tapi_connectivityupdate_connectivity_service_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapiconnectivityupdateconnectivityservice_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.connectivity.UpdateConnectivityService' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.connectivity.updateconnectivityservice.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_connectivity_controller + /operations/tapi-notification:create-notification-subscription-service/: + post: + tags: + - tapi-notification + summary: operates on tapi.notification.CreateNotificationSubscriptionService + description: operates on tapi.notification.CreateNotificationSubscriptionService + operationId: operations_tapi_notificationcreate_notification_subscription_service_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapinotificationcreatenotificationsubscriptionservice_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.CreateNotificationSubscriptionService' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.notification.createnotificationsubscriptionservice.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /operations/tapi-notification:delete-notification-subscription-service/: + post: + tags: + - tapi-notification + summary: operates on tapi.notification.DeleteNotificationSubscriptionService + description: operates on tapi.notification.DeleteNotificationSubscriptionService + operationId: operations_tapi_notificationdelete_notification_subscription_service_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapinotificationdeletenotificationsubscriptionservice_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.DeleteNotificationSubscriptionService' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.notification.deletenotificationsubscriptionservice.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /operations/tapi-notification:get-notification-list/: + post: + tags: + - tapi-notification + summary: operates on tapi.notification.GetNotificationList + description: operates on tapi.notification.GetNotificationList + operationId: operations_tapi_notificationget_notification_list_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapinotificationgetnotificationlist_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.GetNotificationList' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.notification.getnotificationlist.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /operations/tapi-notification:get-notification-subscription-service-details/: + post: + tags: + - tapi-notification + summary: operates on tapi.notification.GetNotificationSubscriptionServiceDetails + description: operates on tapi.notification.GetNotificationSubscriptionServiceDetails + operationId: operations_tapi_notificationget_notification_subscription_service_details_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapinotificationgetnotificationsubscriptionservicedetails_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.GetNotificationSubscriptionServiceDetails' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.notification.getnotificationsubscriptionservicedetails.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /operations/tapi-notification:get-notification-subscription-service-list/: + post: + tags: + - tapi-notification + operationId: operations_tapi_notificationget_notification_subscription_service_list_post + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.GetNotificationSubscriptionServiceList' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /operations/tapi-notification:get-supported-notification-types/: + post: + tags: + - tapi-notification + operationId: operations_tapi_notificationget_supported_notification_types_post + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.GetSupportedNotificationTypes' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /operations/tapi-notification:update-notification-subscription-service/: + post: + tags: + - tapi-notification + summary: operates on tapi.notification.UpdateNotificationSubscriptionService + description: operates on tapi.notification.UpdateNotificationSubscriptionService + operationId: operations_tapi_notificationupdate_notification_subscription_service_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapinotificationupdatenotificationsubscriptionservice_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.notification.UpdateNotificationSubscriptionService' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.notification.updatenotificationsubscriptionservice.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_notification_controller + /operations/tapi-path-computation:compute-p-2-p-path/: + post: + tags: + - tapi-path-computation + summary: operates on tapi.path.computation.ComputeP2PPath + description: operates on tapi.path.computation.ComputeP2PPath + operationId: operations_tapi_path_computationcompute_p_2_p_path_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapipathcomputationcomputep2ppath_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.ComputeP2PPath' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.path.computation.computep2ppath.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /operations/tapi-path-computation:delete-p-2-p-path/: + post: + tags: + - tapi-path-computation + summary: operates on tapi.path.computation.DeleteP2PPath + description: operates on tapi.path.computation.DeleteP2PPath + operationId: operations_tapi_path_computationdelete_p_2_p_path_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapipathcomputationdeletep2ppath_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.DeleteP2PPath' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.path.computation.deletep2ppath.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /operations/tapi-path-computation:optimize-p-2-ppath/: + post: + tags: + - tapi-path-computation + summary: operates on tapi.path.computation.OptimizeP2Ppath + description: operates on tapi.path.computation.OptimizeP2Ppath + operationId: operations_tapi_path_computationoptimize_p_2_ppath_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapipathcomputationoptimizep2ppath_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.path.computation.OptimizeP2Ppath' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.path.computation.optimizep2ppath.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_path_computation_controller + /operations/tapi-topology:get-link-details/: + post: + tags: + - tapi-topology + summary: operates on tapi.topology.GetLinkDetails + description: operates on tapi.topology.GetLinkDetails + operationId: operations_tapi_topologyget_link_details_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapitopologygetlinkdetails_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.GetLinkDetails' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.topology.getlinkdetails.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /operations/tapi-topology:get-node-details/: + post: + tags: + - tapi-topology + summary: operates on tapi.topology.GetNodeDetails + description: operates on tapi.topology.GetNodeDetails + operationId: operations_tapi_topologyget_node_details_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapitopologygetnodedetails_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.GetNodeDetails' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.topology.getnodedetails.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /operations/tapi-topology:get-node-edge-point-details/: + post: + tags: + - tapi-topology + summary: operates on tapi.topology.GetNodeEdgePointDetails + description: operates on tapi.topology.GetNodeEdgePointDetails + operationId: operations_tapi_topologyget_node_edge_point_details_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapitopologygetnodeedgepointdetails_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.GetNodeEdgePointDetails' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.topology.getnodeedgepointdetails.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /operations/tapi-topology:get-topology-details/: + post: + tags: + - tapi-topology + summary: operates on tapi.topology.GetTopologyDetails + description: operates on tapi.topology.GetTopologyDetails + operationId: operations_tapi_topologyget_topology_details_post + requestBody: + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/operations_tapitopologygettopologydetails_body' + required: false + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.GetTopologyDetails' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-codegen-request-body-name: tapi.topology.gettopologydetails.Input.body-param + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller + /operations/tapi-topology:get-topology-list/: + post: + tags: + - tapi-topology + operationId: operations_tapi_topologyget_topology_list_post + responses: + "200": + description: Correct response + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/tapi.topology.GetTopologyList' + "201": + description: No response + content: {} + "400": + description: Internal error + content: {} + x-openapi-router-controller: tapi_server.controllers.tapi_topology_controller +components: + schemas: + tapi.common.AdminStatePac: + type: object + properties: + operational-state: + $ref: '#/components/schemas/tapi.common.OperationalState' + lifecycle-state: + $ref: '#/components/schemas/tapi.common.LifecycleState' + administrative-state: + $ref: '#/components/schemas/tapi.common.AdministrativeState' + tapi.common.AdministrativeState: + type: string + enum: + - LOCKED + - UNLOCKED + tapi.common.BandwidthProfile: + type: object + properties: + committed-information-rate: + $ref: '#/components/schemas/tapi.common.CapacityValue' + coupling-flag: + type: boolean + description: none + default: false + bw-profile-type: + $ref: '#/components/schemas/tapi.common.BandwidthProfileType' + peak-information-rate: + $ref: '#/components/schemas/tapi.common.CapacityValue' + committed-burst-size: + $ref: '#/components/schemas/tapi.common.CapacityValue' + peak-burst-size: + $ref: '#/components/schemas/tapi.common.CapacityValue' + color-aware: + type: boolean + description: none + default: false + tapi.common.BandwidthProfileType: + type: string + enum: + - MEF_10.x + - RFC_2697 + - RFC_2698 + - RFC_4115 + tapi.common.BandwidthProfileWrapper: + type: object + properties: + bandwidth-profile: + $ref: '#/components/schemas/tapi.common.BandwidthProfile' + tapi.common.Capacity: + type: object + properties: + bandwidth-profile: + $ref: '#/components/schemas/tapi.common.BandwidthProfile' + total-size: + $ref: '#/components/schemas/tapi.common.CapacityValue' + tapi.common.CapacityPac: + type: object + properties: + available-capacity: + $ref: '#/components/schemas/tapi.common.Capacity' + total-potential-capacity: + $ref: '#/components/schemas/tapi.common.Capacity' + tapi.common.CapacityUnit: + type: string + enum: + - TB + - TBPS + - GB + - GBPS + - MB + - MBPS + - KB + - KBPS + - GHz + - MHz + tapi.common.CapacityValue: + type: object + properties: + value: + type: integer + description: none + format: int32 + unit: + $ref: '#/components/schemas/tapi.common.CapacityUnit' + tapi.common.CapacityValueWrapper: + type: object + properties: + committed-burst-size: + $ref: '#/components/schemas/tapi.common.CapacityValue' + tapi.common.CapacityWrapper: + type: object + properties: + available-capacity: + $ref: '#/components/schemas/tapi.common.Capacity' + tapi.common.Context: + allOf: + - $ref: '#/components/schemas/tapi.common.TapiContext' + - $ref: '#/components/schemas/tapi.connectivity.ContextAugmentation3' + - $ref: '#/components/schemas/tapi.notification.ContextAugmentation1' + - $ref: '#/components/schemas/tapi.path.computation.ContextAugmentation2' + - $ref: '#/components/schemas/tapi.topology.ContextAugmentation4' + tapi.common.ContextWrapper: + type: object + properties: + tapi-common:context: + $ref: '#/components/schemas/tapi.common.Context' + tapi.common.DirectiveValue: + type: string + enum: + - MINIMIZE + - MAXIMIZE + - ALLOW + - DISALLOW + - DONT_CARE + tapi.common.ForwardingDirection: + type: string + enum: + - BIDIRECTIONAL + - UNIDIRECTIONAL + - UNDEFINED_OR_UNKNOWN + tapi.common.GetServiceInterfacePointDetails: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.common.getserviceinterfacepointdetails.Output' + tapi.common.GetServiceInterfacePointList: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.common.getserviceinterfacepointlist.Output' + tapi.common.GlobalClass: + type: object + properties: + name: + type: array + description: List of names. A property of an entity with a value that is + unique in some namespace but may change during the life of the entity. + A name carries no semantics with respect to the purpose of the entity. + items: + $ref: '#/components/schemas/tapi.common.NameAndValue' + uuid: + type: string + description: "UUID: An identifier that is universally unique within an identifier\ + \ space, where the identifier space is itself globally unique, and immutable.\ + \ An UUID carries no semantics with respect to the purpose or state of\ + \ the entity.\r\n UUID here uses string representation\ + \ as defined in RFC 4122. The canonical representation uses lowercase\ + \ characters.\r\n Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'\ + \ + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} \r\n Example of a UUID\ + \ in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6" + tapi.common.LayerProtocolName: + type: string + enum: + - ODU + - ETH + - DSR + - PHOTONIC_MEDIA + tapi.common.LifecycleState: + type: string + enum: + - PLANNED + - POTENTIAL_AVAILABLE + - POTENTIAL_BUSY + - INSTALLED + - PENDING_REMOVAL + tapi.common.LocalClass: + type: object + properties: + name: + type: array + description: List of names. A property of an entity with a value that is + unique in some namespace but may change during the life of the entity. + A name carries no semantics with respect to the purpose of the entity. + items: + $ref: '#/components/schemas/tapi.common.NameAndValue' + local-id: + type: string + description: none + tapi.common.NameAndValue: + type: object + properties: + value-name: + type: string + description: The name of the value. The value need not have a name. + value: + type: string + description: The value + tapi.common.NameAndValueWrapper: + type: object + properties: + name: + $ref: '#/components/schemas/tapi.common.NameAndValue' + tapi.common.OperationalState: + type: string + enum: + - DISABLED + - ENABLED + tapi.common.OperationalStatePac: + type: object + properties: + operational-state: + $ref: '#/components/schemas/tapi.common.OperationalState' + lifecycle-state: + $ref: '#/components/schemas/tapi.common.LifecycleState' + tapi.common.PortDirection: + type: string + enum: + - BIDIRECTIONAL + - INPUT + - OUTPUT + - UNIDENTIFIED_OR_UNKNOWN + tapi.common.PortRole: + type: string + enum: + - SYMMETRIC + - ROOT + - LEAF + - TRUNK + - UNKNOWN + tapi.common.ServiceInterfacePoint: + allOf: + - $ref: '#/components/schemas/tapi.common.AdminStatePac' + - $ref: '#/components/schemas/tapi.common.CapacityPac' + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - type: object + properties: + supported-layer-protocol-qualifier: + type: array + description: none + items: + type: string + layer-protocol-name: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + direction: + $ref: '#/components/schemas/tapi.common.PortDirection' + description: "The LogicalTerminationPoint (LTP) object class encapsulates\ + \ the termination and adaptation functions of one or more transport layers.\ + \ \r\n The structure of LTP supports all transport protocols\ + \ including circuit and packet forms." + tapi.common.ServiceInterfacePointRef: + type: object + properties: + service-interface-point-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid + tapi.common.ServiceInterfacePointRefWrapper: + type: object + properties: + service-interface-point: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRef' + tapi.common.ServiceInterfacePointWrapper: + type: object + properties: + service-interface-point: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePoint' + tapi.common.TapiContext: + allOf: + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - type: object + properties: + service-interface-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePoint' + description: "The Network Control Domain (NCD) object class represents the\ + \ scope of control that a particular SDN controller has with respect to\ + \ a particular network, (i.e., encompassing a designated set of interconnected\ + \ (virtual) network elements)." + tapi.common.TerminationDirection: + type: string + enum: + - BIDIRECTIONAL + - SINK + - SOURCE + - UNDEFINED_OR_UNKNOWN + tapi.common.TerminationPac: + type: object + properties: + termination-direction: + $ref: '#/components/schemas/tapi.common.TerminationDirection' + termination-state: + $ref: '#/components/schemas/tapi.common.TerminationState' + tapi.common.TerminationState: + type: string + enum: + - LP_CAN_NEVER_TERMINATE + - LT_NOT_TERMINATED + - TERMINATED_SERVER_TO_CLIENT_FLOW + - TERMINATED_CLIENT_TO_SERVER_FLOW + - TERMINATED_BIDIRECTIONAL + - LT_PERMENANTLY_TERMINATED + - TERMINATION_STATE_UNKNOWN + tapi.common.TimeRange: + type: object + properties: + end-time: + type: string + description: none + start-time: + type: string + description: none + tapi.common.TimeRangeWrapper: + type: object + properties: + schedule: + $ref: '#/components/schemas/tapi.common.TimeRange' + tapi.common.getserviceinterfacepointdetails.Input: + type: object + properties: + sip-id-or-name: + type: string + description: none + tapi.common.getserviceinterfacepointdetails.Output: + type: object + properties: + sip: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePoint' + tapi.common.getserviceinterfacepointlist.Output: + type: object + properties: + sip: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePoint' + tapi.common.updateserviceinterfacepoint.Input: + type: object + properties: + sip-id-or-name: + type: string + description: none + state: + $ref: '#/components/schemas/tapi.common.AdministrativeState' + tapi.connectivity.CepList: + type: object + properties: + connection-end-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPoint' + tapi.connectivity.CepListWrapper: + type: object + properties: + tapi-connectivity:cep-list: + $ref: '#/components/schemas/tapi.connectivity.CepList' + tapi.connectivity.CepRole: + type: object + properties: + role-name: + type: string + description: The name of the cep role in the context of the referenced spec. + connection-spec-reference: + $ref: '#/components/schemas/tapi.connectivity.ConnectionSpecReference' + tapi.connectivity.CepRoleWrapper: + type: object + properties: + cep-role: + $ref: '#/components/schemas/tapi.connectivity.CepRole' + tapi.connectivity.Connection: + allOf: + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - $ref: '#/components/schemas/tapi.common.OperationalStatePac' + - type: object + properties: + supported-client-link: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.LinkRef' + lower-connection: + type: array + description: "An Connection object supports a recursive aggregation relationship\ + \ such that the internal construction of an Connection can be exposed\ + \ as multiple lower level Connection objects (partitioning).\r\n \ + \ Aggregation is used as for the Node/Topology to allow\ + \ changes in hierarchy. \r\n Connection aggregation reflects\ + \ Node/Topology aggregation. \r\n The FC represents a\ + \ Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily\ + \ the lowest level of FC partitioning." + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectionRef' + switch-control: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.SwitchControl' + route: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.Route' + connection-spec-reference: + $ref: '#/components/schemas/tapi.connectivity.ConnectionSpecReference' + layer-protocol-name: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + connection-end-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRef' + direction: + $ref: '#/components/schemas/tapi.common.ForwardingDirection' + description: "The ForwardingConstruct (FC) object class models enabled potential\ + \ for forwarding between two or more LTPs and like the LTP supports any\ + \ transport protocol including all circuit and packet forms.\r\n \ + \ At the lowest level of recursion, a FC represents a cross-connection\ + \ within an NE." + tapi.connectivity.ConnectionEndPoint: + allOf: + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - $ref: '#/components/schemas/tapi.common.OperationalStatePac' + - $ref: '#/components/schemas/tapi.common.TerminationPac' + - type: object + properties: + client-node-edge-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRef' + connection-port-role: + $ref: '#/components/schemas/tapi.common.PortRole' + layer-protocol-name: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + layer-protocol-qualifier: + type: string + description: none + parent-node-edge-point: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRef' + cep-role: + type: array + description: "Defines the role of the CEP in the context of the connection\ + \ spec.\r\n There may be many cep role - connection spec\ + \ combinations for a particular CEP where each corresponds to a specific\ + \ connection associated with the CEP." + items: + $ref: '#/components/schemas/tapi.connectivity.CepRole' + aggregated-connection-end-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRef' + connection-port-direction: + $ref: '#/components/schemas/tapi.common.PortDirection' + description: "The LogicalTerminationPoint (LTP) object class encapsulates\ + \ the termination and adaptation functions of one or more transport layers.\ + \ \r\n The structure of LTP supports all transport protocols\ + \ including circuit and packet forms." + tapi.connectivity.ConnectionEndPointRef: + allOf: + - $ref: '#/components/schemas/tapi.topology.NodeEdgePointRef' + - type: object + properties: + connection-end-point-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point/tapi-connectivity:uuid + description: none + tapi.connectivity.ConnectionEndPointRefWrapper: + type: object + properties: + connection-end-point: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRef' + tapi.connectivity.ConnectionEndPointWrapper: + type: object + properties: + connection-end-point: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPoint' + tapi.connectivity.ConnectionRef: + type: object + properties: + connection-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:uuid + tapi.connectivity.ConnectionRefWrapper: + type: object + properties: + lower-connection: + $ref: '#/components/schemas/tapi.connectivity.ConnectionRef' + tapi.connectivity.ConnectionSpecReference: + type: object + properties: + connection-spec-name: + type: string + description: "The name of the connection spec.\r\n This can\ + \ be used alone (with no spec reference) where there is only a paper spec." + connection-spec-id: + type: string + description: "The reference to a formal spec. \r\n This reference\ + \ need not be provided (e.g., where there is no formal machine interpretable\ + \ spec for the type of connection)." + tapi.connectivity.ConnectionSpecReferenceWrapper: + type: object + properties: + connection-spec-reference: + $ref: '#/components/schemas/tapi.connectivity.ConnectionSpecReference' + tapi.connectivity.ConnectionWrapper: + type: object + properties: + connection: + $ref: '#/components/schemas/tapi.connectivity.Connection' + tapi.connectivity.ConnectivityConstraint: + type: object + properties: + service-layer: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + schedule: + $ref: '#/components/schemas/tapi.common.TimeRange' + connectivity-direction: + $ref: '#/components/schemas/tapi.common.ForwardingDirection' + requested-capacity: + $ref: '#/components/schemas/tapi.common.Capacity' + diversity-exclusion: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceRef' + connection-inclusion: + type: array + description: "A ConnectivityService may use one or more existing Connections.\r\ + \n A common traditional strategy is to set up “stranded”\ + \ connectivity in the core of the network as “express channels” (this\ + \ is essentially a serial compound link, but can be treated as simple\ + \ connections)\r\n A connection inclusion capability allows\ + \ for adoption of a discovered Connections.\r\n A ConnectivityService\ + \ is requested with a connection inclusion constraint that identifies\ + \ a connection (or chain of connections) that is bounded by CEPs that\ + \ each belong to a NEP that references a SIP that is referenced by a CSEP\ + \ of the ConnectivityService such that all CSEPs are satisfied by CEPs\ + \ of the existing Connection. will allow discovered Connections with no\ + \ stated intent to be associated with an intent via the ConnectivityService." + items: + type: string + service-level: + type: string + description: "An abstract value the meaning of which is mutually agreed\ + \ – typically represents metrics such as - Class of service, priority,\ + \ resiliency, availability" + service-type: + $ref: '#/components/schemas/tapi.connectivity.ServiceType' + connection-exclusion: + type: array + description: none + items: + type: string + coroute-inclusion: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceRef' + tapi.connectivity.ConnectivityContext: + type: object + properties: + connectivity-service: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityService' + connection: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.Connection' + tapi.connectivity.ConnectivityContextWrapper: + type: object + properties: + tapi-connectivity:connectivity-context: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityContext' + tapi.connectivity.ConnectivityService: + allOf: + - $ref: '#/components/schemas/tapi.common.AdminStatePac' + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - $ref: '#/components/schemas/tapi.connectivity.ConnectivityConstraint' + - $ref: '#/components/schemas/tapi.connectivity.ResilienceConstraint' + - $ref: '#/components/schemas/tapi.path.computation.RoutingConstraint' + - $ref: '#/components/schemas/tapi.path.computation.TopologyConstraint' + - type: object + properties: + end-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPoint' + connection: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectionRef' + description: "The ForwardingConstruct (FC) object class models enabled potential\ + \ for forwarding between two or more LTPs and like the LTP supports any\ + \ transport protocol including all circuit and packet forms.\r\n \ + \ At the lowest level of recursion, a FC represents a cross-connection\ + \ within an NE." + tapi.connectivity.ConnectivityServiceEndPoint: + allOf: + - $ref: '#/components/schemas/tapi.common.AdminStatePac' + - $ref: '#/components/schemas/tapi.common.LocalClass' + - type: object + properties: + protection-role: + $ref: '#/components/schemas/tapi.connectivity.ProtectionRole' + role: + $ref: '#/components/schemas/tapi.common.PortRole' + service-interface-point: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRef' + peer-fwd-connectivity-service-end-point: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRef' + layer-protocol-name: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + layer-protocol-qualifier: + type: string + description: none + connection-end-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRef' + server-connectivity-service-end-point: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRef' + protecting-connectivity-service-end-point: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRef' + direction: + $ref: '#/components/schemas/tapi.common.PortDirection' + capacity: + $ref: '#/components/schemas/tapi.common.Capacity' + description: "The association of the FC to LTPs is made via EndPoints.\r\n\ + \ The EndPoint (EP) object class models the access to the FC\ + \ function. \r\n The traffic forwarding between the associated\ + \ EPs of the FC depends upon the type of FC and may be associated with FcSwitch\ + \ object instances. \r\n In cases where there is resilience\ + \ the EndPoint may convey the resilience role of the access to the FC. \r\ + \n It can represent a protected (resilient/reliable) point or\ + \ a protecting (unreliable working or protection) point.\r\n \ + \ The EP replaces the Protection Unit of a traditional protection model.\ + \ \r\n The ForwadingConstruct can be considered as a component\ + \ and the EndPoint as a Port on that component" + tapi.connectivity.ConnectivityServiceEndPointRef: + allOf: + - $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceRef' + - type: object + properties: + connectivity-service-end-point-local-id: + type: string + description: none + x-path: /tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id + description: none + tapi.connectivity.ConnectivityServiceEndPointRefWrapper: + type: object + properties: + peer-fwd-connectivity-service-end-point: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPointRef' + tapi.connectivity.ConnectivityServiceEndPointWrapper: + type: object + properties: + end-point: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPoint' + tapi.connectivity.ConnectivityServiceRef: + type: object + properties: + connectivity-service-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid + tapi.connectivity.ConnectivityServiceRefWrapper: + type: object + properties: + coroute-inclusion: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceRef' + tapi.connectivity.ConnectivityServiceWrapper: + type: object + properties: + connectivity-service: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityService' + tapi.connectivity.ContextAugmentation3: + type: object + properties: + connectivity-context: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityContext' + x-augmentation: + prefix: tapi-connectivity + namespace: urn:onf:otcc:yang:tapi-connectivity + tapi.connectivity.CoordinateType: + type: string + enum: + - NO_COORDINATE + - HOLD_OFF_TIME + - WAIT_FOR_NOTIFICATION + tapi.connectivity.CreateConnectivityService: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.connectivity.createconnectivityservice.Output' + tapi.connectivity.GetConnectionDetails: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.connectivity.getconnectiondetails.Output' + tapi.connectivity.GetConnectionEndPointDetails: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.connectivity.getconnectionendpointdetails.Output' + tapi.connectivity.GetConnectivityServiceDetails: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.connectivity.getconnectivityservicedetails.Output' + tapi.connectivity.GetConnectivityServiceList: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.connectivity.getconnectivityservicelist.Output' + tapi.connectivity.OwnedNodeEdgePointAugmentation1: + type: object + properties: + cep-list: + $ref: '#/components/schemas/tapi.connectivity.CepList' + x-augmentation: + prefix: tapi-connectivity + namespace: urn:onf:otcc:yang:tapi-connectivity + tapi.connectivity.ProtectionRole: + type: string + enum: + - WORK + - PROTECT + - PROTECTED + - NA + - WORK_RESTORE + - PROTECT_RESTORE + tapi.connectivity.ResilienceConstraint: + type: object + properties: + is-lock-out: + type: boolean + description: "The resource is configured to temporarily not be available\ + \ for use in the protection scheme(s) it is part of.\r\n \ + \ This overrides all other protection control states including forced.\r\ + \n If the item is locked out then it cannot be used under\ + \ any circumstances.\r\n Note: Only relevant when part\ + \ of a protection scheme." + default: false + max-switch-times: + type: integer + description: "Used to limit the maximum swtich times. When work fault disappears\ + \ , and traffic return to the original work path, switch counter reset." + format: int32 + restoration-coordinate-type: + $ref: '#/components/schemas/tapi.connectivity.CoordinateType' + is-coordinated-switching-both-ends: + type: boolean + description: Is operating such that switching at both ends of each flow + acorss the FC is coordinated at both ingress and egress ends. + default: false + hold-off-time: + type: integer + description: "This attribute indicates the time, in milliseconds, between\ + \ declaration of signal degrade or signal fail, and the initialization\ + \ of the protection switching algorithm." + format: int32 + is-frozen: + type: boolean + description: "Temporarily prevents any switch action to be taken and, as\ + \ such, freezes the current state. \r\n Until the freeze\ + \ is cleared, additional near-end external commands are rejected and fault\ + \ condition changes and received APS messages are ignored.\r\n \ + \ All administrative controls of any aspect of protection are\ + \ rejected." + default: false + wait-to-revert-time: + type: integer + description: "If the protection system is revertive, this attribute specifies\ + \ the time, in minutes, to wait after a fault clears on a higher priority\ + \ (preferred) resource before reverting to the preferred resource." + format: int32 + default: 15 + resilience-type: + $ref: '#/components/schemas/tapi.topology.ResilienceType' + preferred-restoration-layer: + type: array + description: Indicate which layer this resilience parameters package configured + for. + items: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + restore-priority: + type: integer + description: none + format: int32 + reversion-mode: + $ref: '#/components/schemas/tapi.connectivity.ReversionMode' + tapi.connectivity.ResilienceRoute: + allOf: + - $ref: '#/components/schemas/tapi.common.LocalClass' + - type: object + properties: + priority: + type: integer + description: "Value of 0 (zero) means 'unspecified priority'.\r\n \ + \ Highest priority is 1, sometimes referred as 'preferred'\ + \ or 'main' or 'intended' route.\r\n 2 has lower priority\ + \ than 1, 3 has lower priority than 2, etc." + format: int32 + route-state: + type: string + description: Current information on the route selection. + description: "This object adds resilience and state attributes to the Route.\r\ + \n When this object is not present, then the Route is intendend\ + \ as 'current' Route of the Connection." + tapi.connectivity.ResilienceRouteWrapper: + type: object + properties: + resilience-route-pac: + $ref: '#/components/schemas/tapi.connectivity.ResilienceRoute' + tapi.connectivity.ReversionMode: + type: string + enum: + - REVERTIVE + - NON-REVERTIVE + tapi.connectivity.Route: + allOf: + - $ref: '#/components/schemas/tapi.common.LocalClass' + - type: object + properties: + connection-end-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRef' + resilience-route-pac: + $ref: '#/components/schemas/tapi.connectivity.ResilienceRoute' + description: "The Route of a Connection is modeled as a collection of Connection\ + \ End Points.\r\n The logical order of the Connection End Points\ + \ within the Route object can be inferred by the TAPI client by the knowledge\ + \ of the Topology information." + tapi.connectivity.RouteRef: + allOf: + - $ref: '#/components/schemas/tapi.connectivity.ConnectionRef' + - type: object + properties: + route-local-id: + type: string + description: none + x-path: /tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id + description: none + tapi.connectivity.RouteRefWrapper: + type: object + properties: + selected-route: + $ref: '#/components/schemas/tapi.connectivity.RouteRef' + tapi.connectivity.RouteWrapper: + type: object + properties: + route: + $ref: '#/components/schemas/tapi.connectivity.Route' + tapi.connectivity.SelectionControl: + type: string + enum: + - LOCK_OUT + - NORMAL + - MANUAL + - FORCED + tapi.connectivity.SelectionReason: + type: string + enum: + - LOCKOUT + - NORMAL + - MANUAL + - FORCED + - WAIT_TO_REVERT + - SIGNAL_DEGRADE + - SIGNAL_FAIL + tapi.connectivity.ServiceType: + type: string + enum: + - POINT_TO_POINT_CONNECTIVITY + - POINT_TO_MULTIPOINT_CONNECTIVITY + - MULTIPOINT_CONNECTIVITY + - ROOTED_MULTIPOINT_CONNECTIVITY + tapi.connectivity.Switch: + allOf: + - $ref: '#/components/schemas/tapi.common.LocalClass' + - type: object + properties: + selected-connection-end-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPointRef' + selected-route: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.RouteRef' + selection-control: + $ref: '#/components/schemas/tapi.connectivity.SelectionControl' + selection-reason: + $ref: '#/components/schemas/tapi.connectivity.SelectionReason' + switch-direction: + $ref: '#/components/schemas/tapi.common.PortDirection' + description: "The class models the switched forwarding of traffic (traffic\ + \ flow) between FcPorts (ConnectionEndPoints) and is present where there\ + \ is protection functionality in the FC (Connection). \r\n If\ + \ an FC exposes protection (having two or more FcPorts that provide alternative\ + \ identical inputs/outputs), the FC will have one or more associated FcSwitch\ + \ objects to represent the alternative flow choices visible at the edge\ + \ of the FC.\r\n The FC switch represents and defines a protection\ + \ switch structure encapsulated in the FC. \r\n Essentially performs\ + \ one of the functions of the Protection Group in a traditional model. It\ + \ associates to 2 or more FcPorts each playing the role of a Protection\ + \ Unit. \r\n One or more protection, i.e. standby/backup, FcPorts\ + \ provide protection for one or more working (i.e. regular/main/preferred)\ + \ FcPorts where either protection or working can feed one or more protected\ + \ FcPort.\r\n The switch may be used in revertive or non-revertive\ + \ (symmetric) mode. When in revertive mode it may define a waitToRestore\ + \ time.\r\n It may be used in one of several modes including\ + \ source switch, destination switched, source and destination switched etc\ + \ (covering cases such as 1+1 and 1:1).\r\n It may be locked\ + \ out (prevented from switching), force switched or manual switched.\r\n\ + \ It will indicate switch state and change of state.\r\n \ + \ The switch can be switched away from all sources such that it becomes\ + \ open and hence two coordinated switches can both feed the same LTP so\ + \ long as at least one of the two is switched away from all sources (is\ + \ 'open').\r\n The ability for a Switch to be 'high impedance'\ + \ allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional\ + \ LTP where the appropriate control is enabled to prevent signal conflict.\r\ + \n This ability allows multiple alternate routes to be present\ + \ that otherwise would be in conflict." + tapi.connectivity.SwitchControl: + allOf: + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - $ref: '#/components/schemas/tapi.connectivity.ResilienceConstraint' + - type: object + properties: + sub-switch-control: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.SwitchControlRef' + switch: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.Switch' + description: "Represents the capability to control and coordinate switches,\ + \ to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize\ + \ a protection scheme." + tapi.connectivity.SwitchControlRef: + allOf: + - $ref: '#/components/schemas/tapi.connectivity.ConnectionRef' + - type: object + properties: + switch-control-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid + description: none + tapi.connectivity.SwitchControlRefWrapper: + type: object + properties: + sub-switch-control: + $ref: '#/components/schemas/tapi.connectivity.SwitchControlRef' + tapi.connectivity.SwitchControlWrapper: + type: object + properties: + switch-control: + $ref: '#/components/schemas/tapi.connectivity.SwitchControl' + tapi.connectivity.SwitchWrapper: + type: object + properties: + switch: + $ref: '#/components/schemas/tapi.connectivity.Switch' + tapi.connectivity.UpdateConnectivityService: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.connectivity.updateconnectivityservice.Output' + tapi.connectivity.createconnectivityservice.Input: + type: object + properties: + topology-constraint: + $ref: '#/components/schemas/tapi.path.computation.TopologyConstraint' + end-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPoint' + resilience-constraint: + $ref: '#/components/schemas/tapi.connectivity.ResilienceConstraint' + routing-constraint: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraint' + state: + type: string + description: none + connectivity-constraint: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityConstraint' + tapi.connectivity.createconnectivityservice.Output: + type: object + properties: + service: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityService' + tapi.connectivity.deleteconnectivityservice.Input: + type: object + properties: + service-id-or-name: + type: string + description: none + tapi.connectivity.getconnectiondetails.Input: + type: object + properties: + connection-id-or-name: + type: string + description: none + tapi.connectivity.getconnectiondetails.Output: + type: object + properties: + connection: + $ref: '#/components/schemas/tapi.connectivity.Connection' + tapi.connectivity.getconnectionendpointdetails.Input: + type: object + properties: + cep-id-or-name: + type: string + description: none + nep-id-or-name: + type: string + description: none + node-id-or-name: + type: string + description: none + topology-id-or-name: + type: string + description: none + tapi.connectivity.getconnectionendpointdetails.Output: + type: object + properties: + connection-end-point: + $ref: '#/components/schemas/tapi.connectivity.ConnectionEndPoint' + tapi.connectivity.getconnectivityservicedetails.Input: + type: object + properties: + service-id-or-name: + type: string + description: none + tapi.connectivity.getconnectivityservicedetails.Output: + type: object + properties: + service: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityService' + tapi.connectivity.getconnectivityservicelist.Output: + type: object + properties: + service: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityService' + tapi.connectivity.updateconnectivityservice.Input: + type: object + properties: + service-id-or-name: + type: string + description: none + topology-constraint: + $ref: '#/components/schemas/tapi.path.computation.TopologyConstraint' + end-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityServiceEndPoint' + resilience-constraint: + $ref: '#/components/schemas/tapi.connectivity.ResilienceConstraint' + routing-constraint: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraint' + state: + type: string + description: none + connectivity-constraint: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityConstraint' + tapi.connectivity.updateconnectivityservice.Output: + type: object + properties: + service: + $ref: '#/components/schemas/tapi.connectivity.ConnectivityService' + tapi.notification.AlarmInfo: + type: object + properties: + perceived-severity: + $ref: '#/components/schemas/tapi.notification.PerceivedSeverityType' + probable-cause: + type: string + description: none + service-affecting: + $ref: '#/components/schemas/tapi.notification.ServiceAffecting' + is-transient: + type: boolean + description: none + default: false + tapi.notification.AlarmInfoWrapper: + type: object + properties: + alarm-info: + $ref: '#/components/schemas/tapi.notification.AlarmInfo' + tapi.notification.ContextAugmentation1: + type: object + properties: + notification-context: + $ref: '#/components/schemas/tapi.notification.NotificationContext' + x-augmentation: + prefix: tapi-notification + namespace: urn:onf:otcc:yang:tapi-notification + tapi.notification.CreateNotificationSubscriptionService: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.notification.createnotificationsubscriptionservice.Output' + tapi.notification.DeleteNotificationSubscriptionService: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.notification.deletenotificationsubscriptionservice.Output' + tapi.notification.GetNotificationList: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.notification.getnotificationlist.Output' + tapi.notification.GetNotificationSubscriptionServiceDetails: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.notification.getnotificationsubscriptionservicedetails.Output' + tapi.notification.GetNotificationSubscriptionServiceList: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.notification.getnotificationsubscriptionservicelist.Output' + tapi.notification.GetSupportedNotificationTypes: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.notification.getsupportednotificationtypes.Output' + tapi.notification.NameAndValueChange: + type: object + properties: + value-name: + type: string + description: The name of the value. The value need not have a name. + old-value: + type: string + description: The value + new-value: + type: string + description: The value + tapi.notification.NameAndValueChangeWrapper: + type: object + properties: + changed-attributes: + $ref: '#/components/schemas/tapi.notification.NameAndValueChange' + tapi.notification.Notification: + allOf: + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - type: object + properties: + target-object-type: + $ref: '#/components/schemas/tapi.notification.ObjectType' + additional-text: + type: string + description: none + event-time-stamp: + type: string + description: none + additional-info: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.common.NameAndValue' + sequence-number: + type: integer + description: "A monotonous increasing sequence number associated with\ + \ the notification.\r\n The exact semantics of how this\ + \ sequence number is assigned (per channel or subscription or source\ + \ or system) is left undefined." + format: int32 + tca-info: + $ref: '#/components/schemas/tapi.notification.TcaInfo' + target-object-identifier: + type: string + description: none + notification-type: + $ref: '#/components/schemas/tapi.notification.NotificationType' + target-object-name: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.common.NameAndValue' + layer-protocol-name: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + source-indicator: + $ref: '#/components/schemas/tapi.notification.SourceIndicator' + alarm-info: + $ref: '#/components/schemas/tapi.notification.AlarmInfo' + changed-attributes: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.NameAndValueChange' + description: none + tapi.notification.NotificationChannel: + allOf: + - $ref: '#/components/schemas/tapi.common.LocalClass' + - type: object + properties: + next-sequence-no: + type: integer + description: The sequence number of the next notification that will be + published on the channel + format: int32 + stream-address: + type: string + description: "The address/location/URI of the channel/stream to which\ + \ the subscribed notifications are published.\r\n This\ + \ specifics of this is typically dependent on the implementation protocol\ + \ & mechanism and hence is typed as a string." + description: none + tapi.notification.NotificationChannelWrapper: + type: object + properties: + notification-channel: + $ref: '#/components/schemas/tapi.notification.NotificationChannel' + tapi.notification.NotificationContext: + type: object + properties: + notif-subscription: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.NotificationSubscriptionService' + notification: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.Notification' + tapi.notification.NotificationContextWrapper: + type: object + properties: + tapi-notification:notification-context: + $ref: '#/components/schemas/tapi.notification.NotificationContext' + tapi.notification.NotificationSubscriptionService: + allOf: + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - type: object + properties: + notification: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.Notification' + notification-channel: + $ref: '#/components/schemas/tapi.notification.NotificationChannel' + subscription-state: + $ref: '#/components/schemas/tapi.notification.SubscriptionState' + supported-object-types: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.ObjectType' + supported-notification-types: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.NotificationType' + subscription-filter: + $ref: '#/components/schemas/tapi.notification.SubscriptionFilter' + description: none + tapi.notification.NotificationSubscriptionServiceWrapper: + type: object + properties: + notif-subscription: + $ref: '#/components/schemas/tapi.notification.NotificationSubscriptionService' + tapi.notification.NotificationType: + type: string + enum: + - OBJECT_CREATION + - OBJECT_DELETION + - ATTRIBUTE_VALUE_CHANGE + - ALARM_EVENT + - THRESHOLD_CROSSING_ALERT + tapi.notification.NotificationWrapper: + type: object + properties: + notification: + $ref: '#/components/schemas/tapi.notification.Notification' + tapi.notification.ObjectType: + type: string + enum: + - TOPOLOGY + - NODE + - LINK + - CONNECTION + - PATH + - CONNECTIVITY_SERVICE + - VIRTUAL_NETWORK_SERVICE + - PATH_COMPUTATION_SERVICE + - NODE_EDGE_POINT + - SERVICE_INTERFACE_POINT + - CONNECTION_END_POINT + - MAINTENANCE_ENTITY_GROUP + - MAINTENANCE_ENTITY + - MEG_END_POINT + - MEG_INTERMEDIATE_POINT + - SWITCH_CONTROL + - SWITCH + - ROUTE + - NODE_RULE_GROUP + - INTER_RULE_GROUP + - RULE + - OAM_JOB + - ACCESS_PORT + - EQUIPMENT + - HOLDER + - PHYSICAL_SPAN + - ABSTRACT_STRAND + - DEVICE + tapi.notification.PerceivedSeverityType: + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - CLEARED + tapi.notification.PerceivedTcaSeverity: + type: string + enum: + - WARNING + - CLEAR + tapi.notification.ServiceAffecting: + type: string + enum: + - SERVICE_AFFECTING + - NOT_SERVICE_AFFECTING + - UNKNOWN + tapi.notification.SourceIndicator: + type: string + enum: + - RESOURCE_OPERATION + - MANAGEMENT_OPERATION + - UNKNOWN + tapi.notification.SubscriptionFilter: + allOf: + - $ref: '#/components/schemas/tapi.common.LocalClass' + - type: object + properties: + requested-notification-types: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.NotificationType' + requested-object-identifier: + type: array + description: none + items: + type: string + requested-layer-protocols: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + include-content: + type: boolean + description: Indicates whether the published Notification includes content + or just the Notification Id (which enables retrieval of the notification + at the later stage) + default: false + requested-object-types: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.ObjectType' + description: none + tapi.notification.SubscriptionFilterWrapper: + type: object + properties: + subscription-filter: + $ref: '#/components/schemas/tapi.notification.SubscriptionFilter' + tapi.notification.SubscriptionState: + type: string + enum: + - SUSPENDED + - ACTIVE + tapi.notification.TcaInfo: + type: object + properties: + threshold-crossing: + $ref: '#/components/schemas/tapi.notification.ThresholdCrossingType' + threshold-parameter: + type: string + description: none + is-transient: + type: boolean + description: none + default: false + threshold-value: + type: integer + description: none + format: int32 + perceived-severity: + $ref: '#/components/schemas/tapi.notification.PerceivedTcaSeverity' + suspect-interval-flag: + type: boolean + description: none + default: false + measurement-interval: + type: string + description: none + tapi.notification.TcaInfoWrapper: + type: object + properties: + tca-info: + $ref: '#/components/schemas/tapi.notification.TcaInfo' + tapi.notification.ThresholdCrossingType: + type: string + enum: + - THRESHOLD_ABOVE + - THRESHOLD_BELOW + - CLEARED + tapi.notification.UpdateNotificationSubscriptionService: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.notification.updatenotificationsubscriptionservice.Output' + tapi.notification.createnotificationsubscriptionservice.Input: + type: object + properties: + subscription-state: + $ref: '#/components/schemas/tapi.notification.SubscriptionState' + subscription-filter: + $ref: '#/components/schemas/tapi.notification.SubscriptionFilter' + tapi.notification.createnotificationsubscriptionservice.Output: + type: object + properties: + subscription-service: + $ref: '#/components/schemas/tapi.notification.NotificationSubscriptionService' + tapi.notification.deletenotificationsubscriptionservice.Input: + type: object + properties: + subscription-id-or-name: + type: string + description: none + tapi.notification.deletenotificationsubscriptionservice.Output: + type: object + properties: + subscription-service: + $ref: '#/components/schemas/tapi.notification.NotificationSubscriptionService' + tapi.notification.getnotificationlist.Input: + type: object + properties: + time-period: + type: string + description: none + subscription-id-or-name: + type: string + description: none + tapi.notification.getnotificationlist.Output: + type: object + properties: + notification: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.Notification' + tapi.notification.getnotificationsubscriptionservicedetails.Input: + type: object + properties: + subscription-id-or-name: + type: string + description: none + tapi.notification.getnotificationsubscriptionservicedetails.Output: + type: object + properties: + subscription-service: + $ref: '#/components/schemas/tapi.notification.NotificationSubscriptionService' + tapi.notification.getnotificationsubscriptionservicelist.Output: + type: object + properties: + subscription-service: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.NotificationSubscriptionService' + tapi.notification.getsupportednotificationtypes.Output: + type: object + properties: + supported-object-types: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.ObjectType' + supported-notification-types: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.notification.NotificationType' + tapi.notification.updatenotificationsubscriptionservice.Input: + type: object + properties: + subscription-state: + $ref: '#/components/schemas/tapi.notification.SubscriptionState' + subscription-filter: + $ref: '#/components/schemas/tapi.notification.SubscriptionFilter' + subscription-id-or-name: + type: string + description: none + tapi.notification.updatenotificationsubscriptionservice.Output: + type: object + properties: + subscription-service: + $ref: '#/components/schemas/tapi.notification.NotificationSubscriptionService' + tapi.path.computation.ComputeP2PPath: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.path.computation.computep2ppath.Output' + tapi.path.computation.ContextAugmentation2: + type: object + properties: + path-computation-context: + $ref: '#/components/schemas/tapi.path.computation.PathComputationContext' + x-augmentation: + prefix: tapi-path-computation + namespace: urn:onf:otcc:yang:tapi-path-computation + tapi.path.computation.DeleteP2PPath: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.path.computation.deletep2ppath.Output' + tapi.path.computation.DiversityPolicy: + type: string + enum: + - SRLG + - SRNG + - SNG + - NODE + - LINK + tapi.path.computation.OptimizeP2Ppath: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.path.computation.optimizep2ppath.Output' + tapi.path.computation.Path: + allOf: + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - type: object + properties: + layer-protocol-name: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + link: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.LinkRef' + routing-constraint: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraint' + direction: + $ref: '#/components/schemas/tapi.common.ForwardingDirection' + description: Path is described by an ordered list of TE Links. A TE Link is + defined by a pair of Node/NodeEdgePoint IDs. A Connection is realized by + concatenating link resources (associated with a Link) and the lower-level + connections (cross-connections) in the different nodes + tapi.path.computation.PathComputationContext: + type: object + properties: + path-comp-service: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.path.computation.PathComputationService' + path: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.path.computation.Path' + tapi.path.computation.PathComputationContextWrapper: + type: object + properties: + tapi-path-computation:path-computation-context: + $ref: '#/components/schemas/tapi.path.computation.PathComputationContext' + tapi.path.computation.PathComputationService: + allOf: + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - type: object + properties: + topology-constraint: + $ref: '#/components/schemas/tapi.path.computation.TopologyConstraint' + path: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.path.computation.PathRef' + objective-function: + $ref: '#/components/schemas/tapi.path.computation.PathObjectiveFunction' + end-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.path.computation.PathServiceEndPoint' + routing-constraint: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraint' + optimization-constraint: + $ref: '#/components/schemas/tapi.path.computation.PathOptimizationConstraint' + description: none + tapi.path.computation.PathComputationServiceWrapper: + type: object + properties: + path-comp-service: + $ref: '#/components/schemas/tapi.path.computation.PathComputationService' + tapi.path.computation.PathObjectiveFunction: + allOf: + - $ref: '#/components/schemas/tapi.common.LocalClass' + - type: object + properties: + link-utilization: + $ref: '#/components/schemas/tapi.common.DirectiveValue' + bandwidth-optimization: + $ref: '#/components/schemas/tapi.common.DirectiveValue' + cost-optimization: + $ref: '#/components/schemas/tapi.common.DirectiveValue' + resource-sharing: + $ref: '#/components/schemas/tapi.common.DirectiveValue' + concurrent-paths: + $ref: '#/components/schemas/tapi.common.DirectiveValue' + description: none + tapi.path.computation.PathObjectiveFunctionWrapper: + type: object + properties: + objective-function: + $ref: '#/components/schemas/tapi.path.computation.PathObjectiveFunction' + tapi.path.computation.PathOptimizationConstraint: + allOf: + - $ref: '#/components/schemas/tapi.common.LocalClass' + - type: object + properties: + traffic-interruption: + $ref: '#/components/schemas/tapi.common.DirectiveValue' + description: none + tapi.path.computation.PathOptimizationConstraintWrapper: + type: object + properties: + optimization-constraint: + $ref: '#/components/schemas/tapi.path.computation.PathOptimizationConstraint' + tapi.path.computation.PathRef: + type: object + properties: + path-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-path-computation:path-computation-context/tapi-path-computation:path/tapi-path-computation:uuid + tapi.path.computation.PathRefWrapper: + type: object + properties: + path: + $ref: '#/components/schemas/tapi.path.computation.PathRef' + tapi.path.computation.PathServiceEndPoint: + allOf: + - $ref: '#/components/schemas/tapi.common.LocalClass' + - type: object + properties: + role: + $ref: '#/components/schemas/tapi.common.PortRole' + service-interface-point: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRef' + layer-protocol-name: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + layer-protocol-qualifier: + type: string + description: none + direction: + $ref: '#/components/schemas/tapi.common.PortDirection' + capacity: + $ref: '#/components/schemas/tapi.common.Capacity' + description: "The association of the FC to LTPs is made via EndPoints.\r\n\ + \ The EndPoint (EP) object class models the access to the FC\ + \ function. \r\n The traffic forwarding between the associated\ + \ EPs of the FC depends upon the type of FC and may be associated with FcSwitch\ + \ object instances. \r\n In cases where there is resilience\ + \ the EndPoint may convey the resilience role of the access to the FC. \r\ + \n It can represent a protected (resilient/reliable) point or\ + \ a protecting (unreliable working or protection) point.\r\n \ + \ The EP replaces the Protection Unit of a traditional protection model.\ + \ \r\n The ForwadingConstruct can be considered as a component\ + \ and the EndPoint as a Port on that component" + tapi.path.computation.PathServiceEndPointWrapper: + type: object + properties: + end-point: + $ref: '#/components/schemas/tapi.path.computation.PathServiceEndPoint' + tapi.path.computation.PathWrapper: + type: object + properties: + path: + $ref: '#/components/schemas/tapi.path.computation.Path' + tapi.path.computation.RouteObjectiveFunction: + type: string + enum: + - MIN_WORK_ROUTE_HOP + - MIN_WORK_ROUTE_COST + - MIN_WORK_ROUTE_LATENCY + - MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP + - MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST + - MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY + - LOAD_BALANCE_MAX_UNUSED_CAPACITY + tapi.path.computation.RoutingConstraint: + type: object + properties: + is-exclusive: + type: boolean + description: To distinguish if the resources are to be exclusive to the + service + default: true + max-allowed-cost: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriority' + diversity-policy: + $ref: '#/components/schemas/tapi.path.computation.DiversityPolicy' + route-objective-function: + $ref: '#/components/schemas/tapi.path.computation.RouteObjectiveFunction' + cost-characteristic: + type: array + description: The list of costs where each cost relates to some aspect of + the TopologicalEntity. + items: + $ref: '#/components/schemas/tapi.topology.CostCharacteristic' + max-allowed-hops: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriority' + max-allowed-delay: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriority' + latency-characteristic: + type: array + description: The effect on the latency of a queuing process. This only has + significant effect for packet based systems and has a complex characteristic. + items: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristic' + risk-diversity-characteristic: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristic' + route-direction: + $ref: '#/components/schemas/tapi.common.ForwardingDirection' + tapi.path.computation.RoutingConstraintWrapper: + type: object + properties: + routing-constraint: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraint' + tapi.path.computation.TopologyConstraint: + type: object + properties: + include-node: + type: array + description: This is a loose constraint - that is it is unordered and could + be a partial list + items: + type: string + exclude-link: + type: array + description: none + items: + type: string + avoid-topology: + type: array + description: none + items: + type: string + exclude-path: + type: array + description: none + items: + type: string + include-link: + type: array + description: 'This is a loose constraint - that is it is unordered and could + be a partial list ' + items: + type: string + preferred-transport-layer: + type: array + description: soft constraint requested by client to indicate the layer(s) + of transport connection that it prefers to carry the service. This could + be same as the service layer or one of the supported server layers + items: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + exclude-node: + type: array + description: none + items: + type: string + include-topology: + type: array + description: none + items: + type: string + include-path: + type: array + description: none + items: + type: string + tapi.path.computation.TopologyConstraintWrapper: + type: object + properties: + topology-constraint: + $ref: '#/components/schemas/tapi.path.computation.TopologyConstraint' + tapi.path.computation.ValueOrPriority: + type: object + properties: + priority: + type: integer + description: none + format: int32 + value: + type: integer + description: none + format: int32 + tapi.path.computation.ValueOrPriorityWrapper: + type: object + properties: + max-allowed-cost: + $ref: '#/components/schemas/tapi.path.computation.ValueOrPriority' + tapi.path.computation.computep2ppath.Input: + type: object + properties: + topology-constraint: + $ref: '#/components/schemas/tapi.path.computation.TopologyConstraint' + routing-constraint: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraint' + objective-function: + $ref: '#/components/schemas/tapi.path.computation.PathObjectiveFunction' + sep: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.path.computation.PathServiceEndPoint' + tapi.path.computation.computep2ppath.Output: + type: object + properties: + service: + $ref: '#/components/schemas/tapi.path.computation.PathComputationService' + tapi.path.computation.deletep2ppath.Input: + type: object + properties: + path-id-or-name: + type: string + description: none + tapi.path.computation.deletep2ppath.Output: + type: object + properties: + service: + $ref: '#/components/schemas/tapi.path.computation.PathComputationService' + tapi.path.computation.optimizep2ppath.Input: + type: object + properties: + routing-constraint: + $ref: '#/components/schemas/tapi.path.computation.RoutingConstraint' + path-id-or-name: + type: string + description: none + optimization-constraint: + $ref: '#/components/schemas/tapi.path.computation.PathOptimizationConstraint' + objective-function: + $ref: '#/components/schemas/tapi.path.computation.PathObjectiveFunction' + tapi.path.computation.optimizep2ppath.Output: + type: object + properties: + service: + $ref: '#/components/schemas/tapi.path.computation.PathComputationService' + tapi.topology.ConnectionSpecReference: + type: object + properties: + connection-spec-name: + type: string + description: "The name of the connection type spec.\r\n This\ + \ can be used as a reference to a paper document where full formal machine\ + \ interpretable specs are not supported." + connection-spec-id: + type: string + description: "The reference to a formal spec. \r\n This reference\ + \ need not be provided (e.g., where there is no formal machine interpretable\ + \ spec for the type of connection)." + tapi.topology.ConnectionSpecReferenceWrapper: + type: object + properties: + connection-spec-reference: + $ref: '#/components/schemas/tapi.topology.ConnectionSpecReference' + tapi.topology.ContextAugmentation4: + type: object + properties: + topology-context: + $ref: '#/components/schemas/tapi.topology.TopologyContext' + x-augmentation: + prefix: tapi-topology + namespace: urn:onf:otcc:yang:tapi-topology + tapi.topology.CostCharacteristic: + type: object + properties: + cost-value: + type: string + description: The specific cost. + cost-algorithm: + type: string + description: The cost may vary based upon some properties of the TopologicalEntity. + The rules for the variation are conveyed by the costAlgorithm. + cost-name: + type: string + description: "The cost characteristic will related to some aspect of the\ + \ TopologicalEntity (e.g. $ cost, routing weight). This aspect will be\ + \ conveyed by the costName." + tapi.topology.CostCharacteristicWrapper: + type: object + properties: + cost-characteristic: + $ref: '#/components/schemas/tapi.topology.CostCharacteristic' + tapi.topology.ForwardingRule: + type: string + enum: + - MAY_FORWARD_ACROSS_GROUP + - MUST_FORWARD_ACROSS_GROUP + - CANNOT_FORWARD_ACROSS_GROUP + - NO_STATEMENT_ON_FORWARDING + - INTER_CONNECTION_CONTENTION + tapi.topology.GetLinkDetails: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.topology.getlinkdetails.Output' + tapi.topology.GetNodeDetails: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.topology.getnodedetails.Output' + tapi.topology.GetNodeEdgePointDetails: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.topology.getnodeedgepointdetails.Output' + tapi.topology.GetTopologyDetails: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.topology.gettopologydetails.Output' + tapi.topology.GetTopologyList: + type: object + properties: + output: + $ref: '#/components/schemas/tapi.topology.gettopologylist.Output' + tapi.topology.InterRuleGroup: + allOf: + - $ref: '#/components/schemas/tapi.common.CapacityPac' + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - $ref: '#/components/schemas/tapi.topology.RiskParameterPac' + - $ref: '#/components/schemas/tapi.topology.TransferCostPac' + - $ref: '#/components/schemas/tapi.topology.TransferTimingPac' + - type: object + properties: + associated-node-rule-group: + type: array + description: "The NodeRuleGroups that the InterRuleGroup constrains interconnection\ + \ between.\r\n The CEPs of the NEPs of a referenced NodeRuleGroup\ + \ can interconnect to the CEPs of the NEPs of another referenced NodeRuleGroup\ + \ constrained by the rules of the InterRuleGroup." + items: + $ref: '#/components/schemas/tapi.topology.NodeRuleGroupRef' + rule: + type: array + description: The list of rules of the InterRuleGroup. + items: + $ref: '#/components/schemas/tapi.topology.Rule' + description: Rules that apply between groups of NEPs. + tapi.topology.InterRuleGroupWrapper: + type: object + properties: + inter-rule-group: + $ref: '#/components/schemas/tapi.topology.InterRuleGroup' + tapi.topology.LatencyCharacteristic: + type: object + properties: + traffic-property-name: + type: string + description: The identifier of the specific traffic property to which the + queuing latency applies. + jitter-characteristic: + type: string + description: "High frequency deviation from true periodicity of a signal\ + \ and therefore a small high rate of change of transfer latency.\r\n \ + \ Applies to TDM systems (and not packet)." + fixed-latency-characteristic: + type: string + description: A TopologicalEntity suffers delay caused by the realization + of the servers (e.g. distance related; FEC encoding etc.) along with some + client specific processing. This is the total average latency effect of + the TopologicalEntity + wander-characteristic: + type: string + description: "Low frequency deviation from true periodicity of a signal\ + \ and therefore a small low rate of change of transfer latency.\r\n \ + \ Applies to TDM systems (and not packet)." + queing-latency-characteristic: + type: string + description: The specific queuing latency for the traffic property. + tapi.topology.LatencyCharacteristicWrapper: + type: object + properties: + latency-characteristic: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristic' + tapi.topology.LayerProtocolTransitionPac: + type: object + properties: + transitioned-layer-protocol-name: + type: array + description: Provides the ordered structure of layer protocol transitions + encapsulated in the TopologicalEntity. The ordering relates to the LinkPort + role. + items: + type: string + tapi.topology.Link: + allOf: + - $ref: '#/components/schemas/tapi.common.AdminStatePac' + - $ref: '#/components/schemas/tapi.common.CapacityPac' + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - $ref: '#/components/schemas/tapi.topology.LayerProtocolTransitionPac' + - $ref: '#/components/schemas/tapi.topology.RiskParameterPac' + - $ref: '#/components/schemas/tapi.topology.TransferCostPac' + - $ref: '#/components/schemas/tapi.topology.TransferIntegrityPac' + - $ref: '#/components/schemas/tapi.topology.TransferTimingPac' + - $ref: '#/components/schemas/tapi.topology.ValidationPac' + - type: object + properties: + layer-protocol-name: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + resilience-type: + $ref: '#/components/schemas/tapi.topology.ResilienceType' + node-edge-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRef' + direction: + $ref: '#/components/schemas/tapi.common.ForwardingDirection' + description: 'The Link object class models effective adjacency between two + or more ForwardingDomains (FD). ' + tapi.topology.LinkRef: + allOf: + - $ref: '#/components/schemas/tapi.topology.TopologyRef' + - type: object + properties: + link-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid + description: none + tapi.topology.LinkRefWrapper: + type: object + properties: + supported-client-link: + $ref: '#/components/schemas/tapi.topology.LinkRef' + tapi.topology.LinkWrapper: + type: object + properties: + link: + $ref: '#/components/schemas/tapi.topology.Link' + tapi.topology.NetworkTopologyService: + allOf: + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - type: object + properties: + topology: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.TopologyRef' + description: none + tapi.topology.NetworkTopologyServiceWrapper: + type: object + properties: + nw-topology-service: + $ref: '#/components/schemas/tapi.topology.NetworkTopologyService' + tapi.topology.Node: + allOf: + - $ref: '#/components/schemas/tapi.common.AdminStatePac' + - $ref: '#/components/schemas/tapi.common.CapacityPac' + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - $ref: '#/components/schemas/tapi.topology.TransferCostPac' + - $ref: '#/components/schemas/tapi.topology.TransferIntegrityPac' + - $ref: '#/components/schemas/tapi.topology.TransferTimingPac' + - type: object + properties: + layer-protocol-name: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + encap-topology: + $ref: '#/components/schemas/tapi.topology.TopologyRef' + owned-node-edge-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.NodeEdgePoint' + node-rule-group: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.NodeRuleGroup' + aggregated-node-edge-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRef' + description: "The ForwardingDomain (FD) object class models the ForwardingDomain\ + \ topological component which is used to effect forwarding of transport\ + \ characteristic information and offers the potential to enable forwarding.\r\ + \n At the lowest level of recursion, an FD (within a network\ + \ element (NE)) represents a switch matrix (i.e., a fabric). Note that an\ + \ NE can encompass multiple switch matrices (FDs). " + tapi.topology.NodeEdgePoint: + allOf: + - $ref: '#/components/schemas/tapi.common.AdminStatePac' + - $ref: '#/components/schemas/tapi.common.CapacityPac' + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - $ref: '#/components/schemas/tapi.common.TerminationPac' + - type: object + properties: + link-port-role: + $ref: '#/components/schemas/tapi.common.PortRole' + mapped-service-interface-point: + type: array + description: NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) + or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load + balancing/Resilience) should be considered experimental + items: + $ref: '#/components/schemas/tapi.common.ServiceInterfacePointRef' + aggregated-node-edge-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRef' + layer-protocol-name: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + link-port-direction: + $ref: '#/components/schemas/tapi.common.PortDirection' + supported-cep-layer-protocol-qualifier: + type: array + description: none + items: + type: string + description: "The LogicalTerminationPoint (LTP) object class encapsulates\ + \ the termination and adaptation functions of one or more transport layers.\r\ + \n The structure of LTP supports all transport protocols including\ + \ circuit and packet forms." + tapi.topology.NodeEdgePointRef: + allOf: + - $ref: '#/components/schemas/tapi.topology.NodeRef' + - type: object + properties: + node-edge-point-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid + description: none + tapi.topology.NodeEdgePointRefWrapper: + type: object + properties: + node-edge-point: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRef' + tapi.topology.NodeRef: + allOf: + - $ref: '#/components/schemas/tapi.topology.TopologyRef' + - type: object + properties: + node-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid + description: none + tapi.topology.NodeRuleGroup: + allOf: + - $ref: '#/components/schemas/tapi.common.CapacityPac' + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - $ref: '#/components/schemas/tapi.topology.RiskParameterPac' + - $ref: '#/components/schemas/tapi.topology.TransferCostPac' + - $ref: '#/components/schemas/tapi.topology.TransferTimingPac' + - type: object + properties: + inter-rule-group: + type: array + description: "Nested NodeRuleGroups may have InterRuleGroups. The Superior\ + \ NodeRuleGroup contains the nested NodeRuleGroups and their associated\ + \ InterRuleGroups.\r\n This is equivalent to the Node-Topology\ + \ hierarchy." + items: + $ref: '#/components/schemas/tapi.topology.InterRuleGroup' + rule: + type: array + description: The list of rules of the NodeRuleGroup. + items: + $ref: '#/components/schemas/tapi.topology.Rule' + node-rule-group: + type: array + description: "NodeRuleGroups may be nested such that finer grained rules\ + \ may be applied.\r\n A nested rule group should have\ + \ a subset of the NEPs of the superior rule group." + items: + $ref: '#/components/schemas/tapi.topology.NodeRuleGroupRef' + node-edge-point: + type: array + description: NEPs and their client CEPs that the rules apply to. + items: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRef' + description: "Rules that apply to a group of NEPs.\r\n " + tapi.topology.NodeRuleGroupRef: + allOf: + - $ref: '#/components/schemas/tapi.topology.NodeRef' + - type: object + properties: + node-rule-group-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:node-rule-group/tapi-topology:uuid + description: none + tapi.topology.NodeRuleGroupRefWrapper: + type: object + properties: + associated-node-rule-group: + $ref: '#/components/schemas/tapi.topology.NodeRuleGroupRef' + tapi.topology.NodeRuleGroupWrapper: + type: object + properties: + node-rule-group: + $ref: '#/components/schemas/tapi.topology.NodeRuleGroup' + tapi.topology.PortRoleRule: + type: object + properties: + port-role-rule: + type: array + description: "Where the rule references more than one port role or where\ + \ there are rule intersections either as a result of overlay of rules\ + \ or inter rule group usage indicates role matching criteria for a connection\ + \ following the rules.\r\n For example if two port roles,\ + \ 'a' and 'b', are listed and the port role rule is 'different', this\ + \ means that a connection connecting points in that group must have port\ + \ roles that are different for each CEP in that group.\r\n \ + \ In the example if a connection can have n ports of role 'a' and\ + \ m ports of role 'b' then a maximum of two ports can be drawn from the\ + \ NEPs of the group and where there are two, one must be role 'a' and\ + \ one must be role 'b'." + items: + type: string + port-role: + type: array + description: The role(s) of the port(s) considered in the rule. + items: + type: string + tapi.topology.PortRoleRuleWrapper: + type: object + properties: + cep-port-role: + $ref: '#/components/schemas/tapi.topology.PortRoleRule' + tapi.topology.ProtectionType: + type: string + enum: + - NO_PROTECTON + - ONE_PLUS_ONE_PROTECTION + - ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION + - PERMANENT_ONE_PLUS_ONE_PROTECTION + - ONE_FOR_ONE_PROTECTION + - DYNAMIC_RESTORATION + - PRE_COMPUTED_RESTORATION + - ONE_PLUS_ONE_PROTECTION_WITH_PRE_COMPUTED_RESTORATION + tapi.topology.ResilienceType: + type: object + properties: + restoration-policy: + $ref: '#/components/schemas/tapi.topology.RestorationPolicy' + protection-type: + $ref: '#/components/schemas/tapi.topology.ProtectionType' + tapi.topology.ResilienceTypeWrapper: + type: object + properties: + resilience-type: + $ref: '#/components/schemas/tapi.topology.ResilienceType' + tapi.topology.RestorationPolicy: + type: string + enum: + - PER_DOMAIN_RESTORATION + - END_TO_END_RESTORATION + - NA + tapi.topology.RiskCharacteristic: + type: object + properties: + risk-characteristic-name: + type: string + description: "The name of the risk characteristic. The characteristic may\ + \ be related to a specific degree of closeness.\r\n For\ + \ example a particular characteristic may apply to failures that are localized\ + \ (e.g. to one side of a road) where as another characteristic may relate\ + \ to failures that have a broader impact (e.g. both sides of a road that\ + \ crosses a bridge).\r\n Depending upon the importance\ + \ of the traffic being routed different risk characteristics will be evaluated." + risk-identifier-list: + type: array + description: A list of the identifiers of each physical/geographic unit + (with the specific risk characteristic) that is related to a segment of + the TopologicalEntity. + items: + type: string + tapi.topology.RiskCharacteristicWrapper: + type: object + properties: + risk-diversity-characteristic: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristic' + tapi.topology.RiskParameterPac: + type: object + properties: + risk-characteristic: + type: array + description: A list of risk characteristics for consideration in an analysis + of shared risk. Each element of the list represents a specific risk consideration. + items: + $ref: '#/components/schemas/tapi.topology.RiskCharacteristic' + tapi.topology.Rule: + allOf: + - $ref: '#/components/schemas/tapi.common.LocalClass' + - type: object + properties: + complex-rule: + type: array + description: Allows for more complex rules where the basic rule system + is not sufficient. + items: + type: string + rule-type: + $ref: '#/components/schemas/tapi.topology.RuleType' + signal-property: + $ref: '#/components/schemas/tapi.topology.SignalPropertyRule' + connection-spec-reference: + type: array + description: "Identifies the type of connection that the rule applies\ + \ to. \r\n If the attribute is not present then the rule\ + \ applies to all types of connection supported by the device." + items: + $ref: '#/components/schemas/tapi.topology.ConnectionSpecReference' + cep-port-role: + type: array + description: "Indicates the port role to which the rule applies. \r\n\ + \ The port role is interpreted in the context of the\ + \ connection type which is identified by the connection spec. \r\n \ + \ The port role is not meaningful in the absence of a\ + \ connection spec reference.\r\n If a node rule group\ + \ carries a port role, that role applies also to the associated inter\ + \ rule where the combination of the roles in the node rule groups at\ + \ the ends of the inter group rule define the connection orientation.\r\ + \n For example a root-and-leaf connection may be used\ + \ in a node where a node rule group collects one set of NEPs has the\ + \ port role 'root' and another node rule group collects another set\ + \ of NEPs has the port role 'leaf' where these are joined by an inter\ + \ rule group. This combination specifies an allowed orientation of the\ + \ root-and-leaf connection.\r\n No port role statement\ + \ means all port roles are allowed." + items: + $ref: '#/components/schemas/tapi.topology.PortRoleRule' + cep-direction: + type: array + description: "cep direction is a list of port directions that the rule\ + \ applies to.\r\n No entry means all cep directions." + items: + $ref: '#/components/schemas/tapi.common.PortDirection' + override-priority: + type: integer + description: "The overridePriority allows for one rule in a rule group\ + \ to override another.\r\n Priority n rules override\ + \ priority n+1 rules.\r\n Rules of the same priority\ + \ override as follows (n overrides n+1):\r\n 1 - MustNot\r\ + \n 2 - Must\r\n 3 - May\r\n \ + \ 4 - Null\r\n Within a rule the flexibility rules\ + \ (signal, port role...) override as follows (n overriedes n+1):\r\n\ + \ 1 - Any\r\n 2 - Same\r\n \ + \ 3 - Different\r\n Where there are two or more 'Same'\ + \ rules, they will form an intersection where all must be met.\r\n \ + \ " + format: int32 + layer-protocol-qualifier: + type: array + description: "Qualifies a rule for a particular layerProtocol identifying\ + \ the qualifiers that the rule apples to.\r\n If the\ + \ attribute is not present then the rule applies to all relevant qualifiers\ + \ of the layer protocol of the parent entity." + items: + type: string + forwarding-rule: + $ref: '#/components/schemas/tapi.topology.ForwardingRule' + description: "Single complex rule statememt.\r\n A Node with no\ + \ rule group has no restrictions and is essentially May/Any\r\n \ + \ A node rule group constrain the CEP connectability in the Node.\r\n\ + \ A connection from a NEP must abide by all rules that relate\ + \ to that NEP\r\n Rules that are for a particular layerProtocolQualifier,\ + \ connectionSpecReference, cepPortRole and cepDirection combination must\ + \ be abided by in combination as dictated by overridePriority.\r\n \ + \ If a particular\r\n - connectionSpecReference does not\ + \ have any rule statements then it is not supported and connections of that\ + \ type are not possible within the rule group.\r\n - cepPortRole\ + \ of a particular connectionSpecReference does not have any rule statements\ + \ then it is not supported and connections of that connectionSpecReference\ + \ (type) cannot have that cepPortRole for CEPs from NEPs in that rule group.\r\ + \n - cepDirection for a particular connectionSpecReference does\ + \ not have any rule statements then it is not supported and connections\ + \ of that connectionSpecReference (type) cannot have that cepPortDirection\ + \ for CEPs from NEPs in that rule group.\r\n Rules that are for\ + \ different layerProtocolQualifiers or connectionSpecReferences are independent\ + \ and provide options for connection in the rule group.\r\n Some\ + \ rules may apply to multiple connectionSpecReferences and all cepPortRoles\ + \ and all cepDirections." + tapi.topology.RuleType: + type: string + enum: + - FORWARDING + - CAPACITY + - COST + - TIMING + - RISK + - GROUPING + tapi.topology.RuleWrapper: + type: object + properties: + rule: + $ref: '#/components/schemas/tapi.topology.Rule' + tapi.topology.SignalPropertyRule: + type: object + properties: + number-of-signal-values: + type: integer + description: The number of instances of this specific property that can + be supported by the group. + format: int32 + applicable-signal-value: + type: array + description: Specific values of the signal property to which the rule applies. + items: + type: string + signal-property-value-rule: + type: string + description: Indicates how the signal properties should be accounted for. + signal-property-name: + type: string + description: The name of the signal property to which the rule applies. + tapi.topology.SignalPropertyRuleWrapper: + type: object + properties: + signal-property: + $ref: '#/components/schemas/tapi.topology.SignalPropertyRule' + tapi.topology.Topology: + allOf: + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - type: object + properties: + layer-protocol-name: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + link: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.Link' + node: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.Node' + description: "The ForwardingDomain (FD) object class models the ForwardingDomain\ + \ topological component which is used to effect forwarding of transport\ + \ characteristic information and offers the potential to enable forwarding.\ + \ \r\n At the lowest level of recursion, an FD (within a network\ + \ element (NE)) represents a switch matrix (i.e., a fabric). Note that an\ + \ NE can encompass multiple switch matrices (FDs). " + tapi.topology.TopologyContext: + type: object + properties: + nw-topology-service: + $ref: '#/components/schemas/tapi.topology.NetworkTopologyService' + topology: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.Topology' + tapi.topology.TopologyContextWrapper: + type: object + properties: + tapi-topology:topology-context: + $ref: '#/components/schemas/tapi.topology.TopologyContext' + tapi.topology.TopologyRef: + type: object + properties: + topology-uuid: + type: string + description: none + x-path: /tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:uuid + tapi.topology.TopologyRefWrapper: + type: object + properties: + topology: + $ref: '#/components/schemas/tapi.topology.TopologyRef' + tapi.topology.TopologyWrapper: + type: object + properties: + topology: + $ref: '#/components/schemas/tapi.topology.Topology' + tapi.topology.TransferCostPac: + type: object + properties: + cost-characteristic: + type: array + description: The list of costs where each cost relates to some aspect of + the TopologicalEntity. + items: + $ref: '#/components/schemas/tapi.topology.CostCharacteristic' + tapi.topology.TransferIntegrityPac: + type: object + properties: + error-characteristic: + type: string + description: "Describes the degree to which the signal propagated can be\ + \ errored.\r\n Applies to TDM systems as the errored signal\ + \ will be propagated and not packet as errored packets will be discarded." + unavailable-time-characteristic: + type: string + description: Describes the duration for which there may be no valid signal + propagated. + server-integrity-process-characteristic: + type: string + description: Describes the effect of any server integrity enhancement process + on the characteristics of the TopologicalEntity. + delivery-order-characteristic: + type: string + description: "Describes the degree to which packets will be delivered out\ + \ of sequence.\r\n Does not apply to TDM as the TDM protocols\ + \ maintain strict order." + repeat-delivery-characteristic: + type: string + description: "Primarily applies to packet systems where a packet may be\ + \ delivered more than once (in fault recovery for example).\r\n \ + \ It can also apply to TDM where several frames may be received\ + \ twice due to switching in a system with a large differential propagation\ + \ delay." + loss-characteristic: + type: string + description: "Describes the acceptable characteristic of lost packets where\ + \ loss may result from discard due to errors or overflow.\r\n \ + \ Applies to packet systems and not TDM (as for TDM errored signals\ + \ are propagated unless grossly errored and overflow/underflow turns into\ + \ timing slips)." + tapi.topology.TransferTimingPac: + type: object + properties: + latency-characteristic: + type: array + description: The effect on the latency of a queuing process. This only has + significant effect for packet based systems and has a complex characteristic. + items: + $ref: '#/components/schemas/tapi.topology.LatencyCharacteristic' + tapi.topology.ValidationMechanism: + type: object + properties: + layer-protocol-adjacency-validated: + type: string + description: State of validatiion + validation-mechanism: + type: string + description: Name of mechanism used to validate adjacency + validation-robustness: + type: string + description: Quality of validation (i.e. how likely is the stated validation + to be invalid) + tapi.topology.ValidationMechanismWrapper: + type: object + properties: + validation-mechanism: + $ref: '#/components/schemas/tapi.topology.ValidationMechanism' + tapi.topology.ValidationPac: + type: object + properties: + validation-mechanism: + type: array + description: Provides details of the specific validation mechanism(s) used + to confirm the presence of an intended topologicalEntity. + items: + $ref: '#/components/schemas/tapi.topology.ValidationMechanism' + tapi.topology.getlinkdetails.Input: + type: object + properties: + link-id-or-name: + type: string + description: none + topology-id-or-name: + type: string + description: none + tapi.topology.getlinkdetails.Output: + type: object + properties: + link: + $ref: '#/components/schemas/tapi.topology.Link' + tapi.topology.getnodedetails.Input: + type: object + properties: + node-id-or-name: + type: string + description: none + topology-id-or-name: + type: string + description: none + tapi.topology.getnodedetails.Output: + type: object + properties: + node: + $ref: '#/components/schemas/tapi.topology.Node' + tapi.topology.getnodeedgepointdetails.Input: + type: object + properties: + ep-id-or-name: + type: string + description: none + node-id-or-name: + type: string + description: none + topology-id-or-name: + type: string + description: none + tapi.topology.getnodeedgepointdetails.Output: + type: object + properties: + node-edge-point: + $ref: '#/components/schemas/tapi.topology.NodeEdgePoint' + tapi.topology.gettopologydetails.Input: + type: object + properties: + topology-id-or-name: + type: string + description: none + tapi.topology.gettopologydetails.Output: + type: object + properties: + topology: + $ref: '#/components/schemas/tapi.topology.Topology' + tapi.topology.gettopologylist.Output: + type: object + properties: + topology: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.Topology' + tapi.topology.node.OwnedNodeEdgePoint: + allOf: + - $ref: '#/components/schemas/tapi.connectivity.OwnedNodeEdgePointAugmentation1' + - $ref: '#/components/schemas/tapi.topology.NodeEdgePoint' + tapi.topology.node.OwnedNodeEdgePointWrapper: + type: object + properties: + owned-node-edge-point: + $ref: '#/components/schemas/tapi.topology.node.OwnedNodeEdgePoint' + tapi.topology.topology.Node: + allOf: + - $ref: '#/components/schemas/tapi.common.AdminStatePac' + - $ref: '#/components/schemas/tapi.common.CapacityPac' + - $ref: '#/components/schemas/tapi.common.GlobalClass' + - $ref: '#/components/schemas/tapi.topology.TransferCostPac' + - $ref: '#/components/schemas/tapi.topology.TransferIntegrityPac' + - $ref: '#/components/schemas/tapi.topology.TransferTimingPac' + - type: object + properties: + layer-protocol-name: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.common.LayerProtocolName' + encap-topology: + $ref: '#/components/schemas/tapi.topology.TopologyRef' + owned-node-edge-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.node.OwnedNodeEdgePoint' + node-rule-group: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.NodeRuleGroup' + aggregated-node-edge-point: + type: array + description: none + items: + $ref: '#/components/schemas/tapi.topology.NodeEdgePointRef' + description: none + tapi.topology.topology.NodeWrapper: + type: object + properties: + node: + $ref: '#/components/schemas/tapi.topology.topology.Node' + operations_tapicommongetserviceinterfacepointdetails_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.common.getserviceinterfacepointdetails.Input' + operations_tapicommonupdateserviceinterfacepoint_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.common.updateserviceinterfacepoint.Input' + operations_tapiconnectivitycreateconnectivityservice_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.connectivity.createconnectivityservice.Input' + operations_tapiconnectivitydeleteconnectivityservice_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.connectivity.deleteconnectivityservice.Input' + operations_tapiconnectivitygetconnectiondetails_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.connectivity.getconnectiondetails.Input' + operations_tapiconnectivitygetconnectionendpointdetails_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.connectivity.getconnectionendpointdetails.Input' + operations_tapiconnectivitygetconnectivityservicedetails_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.connectivity.getconnectivityservicedetails.Input' + operations_tapiconnectivityupdateconnectivityservice_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.connectivity.updateconnectivityservice.Input' + operations_tapinotificationcreatenotificationsubscriptionservice_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.notification.createnotificationsubscriptionservice.Input' + operations_tapinotificationdeletenotificationsubscriptionservice_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.notification.deletenotificationsubscriptionservice.Input' + operations_tapinotificationgetnotificationlist_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.notification.getnotificationlist.Input' + operations_tapinotificationgetnotificationsubscriptionservicedetails_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.notification.getnotificationsubscriptionservicedetails.Input' + operations_tapinotificationupdatenotificationsubscriptionservice_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.notification.updatenotificationsubscriptionservice.Input' + operations_tapipathcomputationcomputep2ppath_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.path.computation.computep2ppath.Input' + operations_tapipathcomputationdeletep2ppath_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.path.computation.deletep2ppath.Input' + operations_tapipathcomputationoptimizep2ppath_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.path.computation.optimizep2ppath.Input' + operations_tapitopologygetlinkdetails_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.topology.getlinkdetails.Input' + operations_tapitopologygetnodedetails_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.topology.getnodedetails.Input' + operations_tapitopologygetnodeedgepointdetails_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.topology.getnodeedgepointdetails.Input' + operations_tapitopologygettopologydetails_body: + type: object + properties: + input: + $ref: '#/components/schemas/tapi.topology.gettopologydetails.Input' +x-original-swagger-version: "2.0" + diff --git a/hackfest/tapi/server/tapi_server/test/__init__.py b/hackfest/tapi/server/tapi_server/test/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..4f5c01f4cbde45579c46cc85a60a93d1b9f0f0d3 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/test/__init__.py @@ -0,0 +1,16 @@ +import logging + +import connexion +from flask_testing import TestCase + +from tapi_server.encoder import JSONEncoder + + +class BaseTestCase(TestCase): + + def create_app(self): + logging.getLogger('connexion.operation').setLevel('ERROR') + app = connexion.App(__name__, specification_dir='../swagger/') + app.app.json_encoder = JSONEncoder + app.add_api('swagger.yaml') + return app.app diff --git a/hackfest/tapi/server/tapi_server/test/test_tapi_common_controller.py b/hackfest/tapi/server/tapi_server/test/test_tapi_common_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..2566442c18d6fe2f13a880ef15114bbd9c4388dc --- /dev/null +++ b/hackfest/tapi/server/tapi_server/test/test_tapi_common_controller.py @@ -0,0 +1,420 @@ +# coding: utf-8 + +from __future__ import absolute_import + +from flask import json +from six import BytesIO + +from tapi_server.models.operations_tapicommongetserviceinterfacepointdetails_body import OperationsTapicommongetserviceinterfacepointdetailsBody # noqa: E501 +from tapi_server.models.operations_tapicommonupdateserviceinterfacepoint_body import OperationsTapicommonupdateserviceinterfacepointBody # noqa: E501 +from tapi_server.models.tapi_common_bandwidth_profile_wrapper import TapiCommonBandwidthProfileWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_value_wrapper import TapiCommonCapacityValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_wrapper import TapiCommonCapacityWrapper # noqa: E501 +from tapi_server.models.tapi_common_context_wrapper import TapiCommonContextWrapper # noqa: E501 +from tapi_server.models.tapi_common_get_service_interface_point_details import TapiCommonGetServiceInterfacePointDetails # noqa: E501 +from tapi_server.models.tapi_common_get_service_interface_point_list import TapiCommonGetServiceInterfacePointList # noqa: E501 +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_service_interface_point_wrapper import TapiCommonServiceInterfacePointWrapper # noqa: E501 +from tapi_server.test import BaseTestCase + + +class TestTapiCommonController(BaseTestCase): + """TapiCommonController integration test stubs""" + + def test_data_tapi_commoncontext_delete(self): + """Test case for data_tapi_commoncontext_delete + + removes tapi.common.Context + """ + response = self.client.open( + '/data/tapi-common:context/', + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_get(self): + """Test case for data_tapi_commoncontext_get + + returns tapi.common.Context + """ + response = self.client.open( + '/data/tapi-common:context/', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_name_post(self): + """Test case for data_tapi_commoncontext_name_post + + creates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/name/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_namevalue_name_delete(self): + """Test case for data_tapi_commoncontext_namevalue_name_delete + + removes tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/name={value-name}/'.format(value_name='value_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/name={value-name}/'.format(value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_namevalue_name_put(self): + """Test case for data_tapi_commoncontext_namevalue_name_put + + creates or updates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/name={value-name}/'.format(value_name='value_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_post(self): + """Test case for data_tapi_commoncontext_post + + creates tapi.common.Context + """ + body = TapiCommonContextWrapper() + response = self.client.open( + '/data/tapi-common:context/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_put(self): + """Test case for data_tapi_commoncontext_put + + creates or updates tapi.common.Context + """ + body = TapiCommonContextWrapper() + response = self.client.open( + '/data/tapi-common:context/', + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_point_post(self): + """Test case for data_tapi_commoncontext_service_interface_point_post + + creates tapi.common.ServiceInterfacePoint + """ + body = TapiCommonServiceInterfacePointWrapper() + response = self.client.open( + '/data/tapi-common:context/service-interface-point/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_available_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_available_capacity_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_available_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/available-capacity/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_available_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_available_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/available-capacity/total-size/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_delete(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_delete + + removes tapi.common.ServiceInterfacePoint + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_get + + returns tapi.common.ServiceInterfacePoint + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_name_post(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_name_post + + creates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/name/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_delete(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_delete + + removes tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_put(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_namevalue_name_put + + creates or updates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_put(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_put + + creates or updates tapi.common.ServiceInterfacePoint + """ + body = TapiCommonServiceInterfacePointWrapper() + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_service_interface_pointuuid_total_potential_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/total-size/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_commonget_service_interface_point_details_post(self): + """Test case for operations_tapi_commonget_service_interface_point_details_post + + operates on tapi.common.GetServiceInterfacePointDetails + """ + body = OperationsTapicommongetserviceinterfacepointdetailsBody() + response = self.client.open( + '/operations/tapi-common:get-service-interface-point-details/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_commonget_service_interface_point_list_post(self): + """Test case for operations_tapi_commonget_service_interface_point_list_post + + + """ + response = self.client.open( + '/operations/tapi-common:get-service-interface-point-list/', + method='POST') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_commonupdate_service_interface_point_post(self): + """Test case for operations_tapi_commonupdate_service_interface_point_post + + operates on tapi.common.UpdateServiceInterfacePoint + """ + body = OperationsTapicommonupdateserviceinterfacepointBody() + response = self.client.open( + '/operations/tapi-common:update-service-interface-point/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + +if __name__ == '__main__': + import unittest + unittest.main() diff --git a/hackfest/tapi/server/tapi_server/test/test_tapi_connectivity_controller.py b/hackfest/tapi/server/tapi_server/test/test_tapi_connectivity_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..4e909a16114fa0d4373265273230427352afbd97 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/test/test_tapi_connectivity_controller.py @@ -0,0 +1,2124 @@ +# coding: utf-8 + +from __future__ import absolute_import + +from flask import json +from six import BytesIO + +from tapi_server.models.operations_tapiconnectivitycreateconnectivityservice_body import OperationsTapiconnectivitycreateconnectivityserviceBody # noqa: E501 +from tapi_server.models.operations_tapiconnectivitydeleteconnectivityservice_body import OperationsTapiconnectivitydeleteconnectivityserviceBody # noqa: E501 +from tapi_server.models.operations_tapiconnectivitygetconnectiondetails_body import OperationsTapiconnectivitygetconnectiondetailsBody # noqa: E501 +from tapi_server.models.operations_tapiconnectivitygetconnectionendpointdetails_body import OperationsTapiconnectivitygetconnectionendpointdetailsBody # noqa: E501 +from tapi_server.models.operations_tapiconnectivitygetconnectivityservicedetails_body import OperationsTapiconnectivitygetconnectivityservicedetailsBody # noqa: E501 +from tapi_server.models.operations_tapiconnectivityupdateconnectivityservice_body import OperationsTapiconnectivityupdateconnectivityserviceBody # noqa: E501 +from tapi_server.models.tapi_common_bandwidth_profile_wrapper import TapiCommonBandwidthProfileWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_value_wrapper import TapiCommonCapacityValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_wrapper import TapiCommonCapacityWrapper # noqa: E501 +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_service_interface_point_ref_wrapper import TapiCommonServiceInterfacePointRefWrapper # noqa: E501 +from tapi_server.models.tapi_common_time_range_wrapper import TapiCommonTimeRangeWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_cep_list_wrapper import TapiConnectivityCepListWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_cep_role_wrapper import TapiConnectivityCepRoleWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connection_end_point_ref_wrapper import TapiConnectivityConnectionEndPointRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connection_end_point_wrapper import TapiConnectivityConnectionEndPointWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connection_ref_wrapper import TapiConnectivityConnectionRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connection_spec_reference_wrapper import TapiConnectivityConnectionSpecReferenceWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connection_wrapper import TapiConnectivityConnectionWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connectivity_context_wrapper import TapiConnectivityConnectivityContextWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connectivity_service_end_point_ref_wrapper import TapiConnectivityConnectivityServiceEndPointRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connectivity_service_end_point_wrapper import TapiConnectivityConnectivityServiceEndPointWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connectivity_service_ref_wrapper import TapiConnectivityConnectivityServiceRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_connectivity_service_wrapper import TapiConnectivityConnectivityServiceWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_create_connectivity_service import TapiConnectivityCreateConnectivityService # noqa: E501 +from tapi_server.models.tapi_connectivity_get_connection_details import TapiConnectivityGetConnectionDetails # noqa: E501 +from tapi_server.models.tapi_connectivity_get_connection_end_point_details import TapiConnectivityGetConnectionEndPointDetails # noqa: E501 +from tapi_server.models.tapi_connectivity_get_connectivity_service_details import TapiConnectivityGetConnectivityServiceDetails # noqa: E501 +from tapi_server.models.tapi_connectivity_get_connectivity_service_list import TapiConnectivityGetConnectivityServiceList # noqa: E501 +from tapi_server.models.tapi_connectivity_resilience_route_wrapper import TapiConnectivityResilienceRouteWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_route_ref_wrapper import TapiConnectivityRouteRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_route_wrapper import TapiConnectivityRouteWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_switch_control_ref_wrapper import TapiConnectivitySwitchControlRefWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_switch_control_wrapper import TapiConnectivitySwitchControlWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_switch_wrapper import TapiConnectivitySwitchWrapper # noqa: E501 +from tapi_server.models.tapi_connectivity_update_connectivity_service import TapiConnectivityUpdateConnectivityService # noqa: E501 +from tapi_server.models.tapi_path_computation_value_or_priority_wrapper import TapiPathComputationValueOrPriorityWrapper # noqa: E501 +from tapi_server.models.tapi_topology_cost_characteristic_wrapper import TapiTopologyCostCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_latency_characteristic_wrapper import TapiTopologyLatencyCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_link_ref_wrapper import TapiTopologyLinkRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_node_edge_point_ref_wrapper import TapiTopologyNodeEdgePointRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_resilience_type_wrapper import TapiTopologyResilienceTypeWrapper # noqa: E501 +from tapi_server.models.tapi_topology_risk_characteristic_wrapper import TapiTopologyRiskCharacteristicWrapper # noqa: E501 +from tapi_server.test import BaseTestCase + + +class TestTapiConnectivityController(BaseTestCase): + """TapiConnectivityController integration test stubs""" + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get + + returns tapi.connectivity.ConnectionEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/'.format(uuid='uuid_example', topology_uuid='topology_uuid_example', node_uuid='node_uuid_example', node_edge_point_uuid='node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_connection_spec_reference_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_connection_spec_reference_get + + returns tapi.connectivity.ConnectionSpecReference + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/connection-spec-reference/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_get + + returns tapi.connectivity.Connection + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_lower_connectionconnection_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_lower_connectionconnection_uuid_get + + returns tapi.connectivity.ConnectionRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/lower-connection={connection-uuid}/'.format(uuid='uuid_example', connection_uuid='connection_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get + + returns tapi.connectivity.ConnectionEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/'.format(uuid='uuid_example', local_id='local_id_example', topology_uuid='topology_uuid_example', node_uuid='node_uuid_example', node_edge_point_uuid='node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_get + + returns tapi.connectivity.Route + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/name={value-name}/'.format(uuid='uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_resilience_route_pac_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_resilience_route_pac_get + + returns tapi.connectivity.ResilienceRoute + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/resilience-route-pac/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_resilience_route_pac_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_routelocal_id_resilience_route_pac_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/resilience-route-pac/name={value-name}/'.format(uuid='uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_supported_client_linktopology_uuidlink_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_supported_client_linktopology_uuidlink_uuid_get + + returns tapi.topology.LinkRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/supported-client-link={topology-uuid},{link-uuid}/'.format(uuid='uuid_example', topology_uuid='topology_uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_get + + returns tapi.connectivity.SwitchControl + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/'.format(uuid='uuid_example', switch_control_uuid='switch_control_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/name={value-name}/'.format(uuid='uuid_example', switch_control_uuid='switch_control_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_resilience_type_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_resilience_type_get + + returns tapi.topology.ResilienceType + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/resilience-type/'.format(uuid='uuid_example', switch_control_uuid='switch_control_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_sub_switch_controlconnection_uuidsub_switch_control_switch_control_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_sub_switch_controlconnection_uuidsub_switch_control_switch_control_uuid_get + + returns tapi.connectivity.SwitchControlRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/sub-switch-control={connection-uuid},{sub-switch-control-switch-control-uuid}/'.format(uuid='uuid_example', switch_control_uuid='switch_control_uuid_example', connection_uuid='connection_uuid_example', sub_switch_control_switch_control_uuid='sub_switch_control_switch_control_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_get + + returns tapi.connectivity.Switch + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/'.format(uuid='uuid_example', switch_control_uuid='switch_control_uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/name={value-name}/'.format(uuid='uuid_example', switch_control_uuid='switch_control_uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_selected_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_selected_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get + + returns tapi.connectivity.ConnectionEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/selected-connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/'.format(uuid='uuid_example', switch_control_uuid='switch_control_uuid_example', local_id='local_id_example', topology_uuid='topology_uuid_example', node_uuid='node_uuid_example', node_edge_point_uuid='node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_selected_routeconnection_uuidroute_local_id_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectionuuid_switch_controlswitch_control_uuid_switchlocal_id_selected_routeconnection_uuidroute_local_id_get + + returns tapi.connectivity.RouteRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/selected-route={connection-uuid},{route-local-id}/'.format(uuid='uuid_example', switch_control_uuid='switch_control_uuid_example', local_id='local_id_example', connection_uuid='connection_uuid_example', route_local_id='route_local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_service_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_service_post + + creates tapi.connectivity.ConnectivityService + """ + body = TapiConnectivityConnectivityServiceWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_connectionconnection_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_connectionconnection_uuid_get + + returns tapi.connectivity.ConnectionRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/connection={connection-uuid}/'.format(uuid='uuid_example', connection_uuid='connection_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_delete + + removes tapi.connectivity.ConnectivityServiceRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/coroute-inclusion/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_get + + returns tapi.connectivity.ConnectivityServiceRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/coroute-inclusion/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_post + + creates tapi.connectivity.ConnectivityServiceRef + """ + body = TapiConnectivityConnectivityServiceRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/coroute-inclusion/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_coroute_inclusion_put + + creates or updates tapi.connectivity.ConnectivityServiceRef + """ + body = TapiConnectivityConnectivityServiceRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/coroute-inclusion/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristic_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristic_post + + creates tapi.topology.CostCharacteristic + """ + body = TapiTopologyCostCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/cost-characteristic/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_delete + + removes tapi.topology.CostCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/cost-characteristic={cost-name}/'.format(uuid='uuid_example', cost_name='cost_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_get + + returns tapi.topology.CostCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/cost-characteristic={cost-name}/'.format(uuid='uuid_example', cost_name='cost_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_cost_characteristiccost_name_put + + creates or updates tapi.topology.CostCharacteristic + """ + body = TapiTopologyCostCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/cost-characteristic={cost-name}/'.format(uuid='uuid_example', cost_name='cost_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_delete + + removes tapi.connectivity.ConnectivityService + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusion_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusion_post + + creates tapi.connectivity.ConnectivityServiceRef + """ + body = TapiConnectivityConnectivityServiceRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/diversity-exclusion/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_delete + + removes tapi.connectivity.ConnectivityServiceRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/diversity-exclusion={connectivity-service-uuid}/'.format(uuid='uuid_example', connectivity_service_uuid='connectivity_service_uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_get + + returns tapi.connectivity.ConnectivityServiceRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/diversity-exclusion={connectivity-service-uuid}/'.format(uuid='uuid_example', connectivity_service_uuid='connectivity_service_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_diversity_exclusionconnectivity_service_uuid_put + + creates or updates tapi.connectivity.ConnectivityServiceRef + """ + body = TapiConnectivityConnectivityServiceRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/diversity-exclusion={connectivity-service-uuid}/'.format(uuid='uuid_example', connectivity_service_uuid='connectivity_service_uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_point_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_point_post + + creates tapi.connectivity.ConnectivityServiceEndPoint + """ + body = TapiConnectivityConnectivityServiceEndPointWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_delete + + removes tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_post + + creates tapi.common.BandwidthProfile + """ + body = TapiCommonBandwidthProfileWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_put + + creates or updates tapi.common.BandwidthProfile + """ + body = TapiCommonBandwidthProfileWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_delete + + removes tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_post + + creates tapi.common.Capacity + """ + body = TapiCommonCapacityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_put + + creates or updates tapi.common.Capacity + """ + body = TapiCommonCapacityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/total-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/total-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/total-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_capacity_total_size_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/total-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_connection_end_pointtopology_uuidnode_uuidnode_edge_point_uuidconnection_end_point_uuid_get + + returns tapi.connectivity.ConnectionEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/'.format(uuid='uuid_example', local_id='local_id_example', topology_uuid='topology_uuid_example', node_uuid='node_uuid_example', node_edge_point_uuid='node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_delete + + removes tapi.connectivity.ConnectivityServiceEndPoint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_get + + returns tapi.connectivity.ConnectivityServiceEndPoint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_name_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_name_post + + creates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/name/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_delete + + removes tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/name={value-name}/'.format(uuid='uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/name={value-name}/'.format(uuid='uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_namevalue_name_put + + creates or updates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/name={value-name}/'.format(uuid='uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_delete + + removes tapi.connectivity.ConnectivityServiceEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/peer-fwd-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_get + + returns tapi.connectivity.ConnectivityServiceEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/peer-fwd-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_post + + creates tapi.connectivity.ConnectivityServiceEndPointRef + """ + body = TapiConnectivityConnectivityServiceEndPointRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/peer-fwd-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_peer_fwd_connectivity_service_end_point_put + + creates or updates tapi.connectivity.ConnectivityServiceEndPointRef + """ + body = TapiConnectivityConnectivityServiceEndPointRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/peer-fwd-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_delete + + removes tapi.connectivity.ConnectivityServiceEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/protecting-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_get + + returns tapi.connectivity.ConnectivityServiceEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/protecting-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_post + + creates tapi.connectivity.ConnectivityServiceEndPointRef + """ + body = TapiConnectivityConnectivityServiceEndPointRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/protecting-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_protecting_connectivity_service_end_point_put + + creates or updates tapi.connectivity.ConnectivityServiceEndPointRef + """ + body = TapiConnectivityConnectivityServiceEndPointRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/protecting-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_put + + creates or updates tapi.connectivity.ConnectivityServiceEndPoint + """ + body = TapiConnectivityConnectivityServiceEndPointWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_delete + + removes tapi.connectivity.ConnectivityServiceEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/server-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_get + + returns tapi.connectivity.ConnectivityServiceEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/server-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_post + + creates tapi.connectivity.ConnectivityServiceEndPointRef + """ + body = TapiConnectivityConnectivityServiceEndPointRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/server-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_server_connectivity_service_end_point_put + + creates or updates tapi.connectivity.ConnectivityServiceEndPointRef + """ + body = TapiConnectivityConnectivityServiceEndPointRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/server-connectivity-service-end-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_delete + + removes tapi.common.ServiceInterfacePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/service-interface-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_get + + returns tapi.common.ServiceInterfacePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/service-interface-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_post + + creates tapi.common.ServiceInterfacePointRef + """ + body = TapiCommonServiceInterfacePointRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/service-interface-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_end_pointlocal_id_service_interface_point_put + + creates or updates tapi.common.ServiceInterfacePointRef + """ + body = TapiCommonServiceInterfacePointRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/service-interface-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_get + + returns tapi.connectivity.ConnectivityService + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristic_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristic_post + + creates tapi.topology.LatencyCharacteristic + """ + body = TapiTopologyLatencyCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/latency-characteristic/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_delete + + removes tapi.topology.LatencyCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', traffic_property_name='traffic_property_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_get + + returns tapi.topology.LatencyCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', traffic_property_name='traffic_property_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_latency_characteristictraffic_property_name_put + + creates or updates tapi.topology.LatencyCharacteristic + """ + body = TapiTopologyLatencyCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', traffic_property_name='traffic_property_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_delete + + removes tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-cost/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_get + + returns tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-cost/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_post + + creates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-cost/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_cost_put + + creates or updates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-cost/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_delete + + removes tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-delay/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_get + + returns tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-delay/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_post + + creates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-delay/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_delay_put + + creates or updates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-delay/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_delete + + removes tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-hops/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_get + + returns tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-hops/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_post + + creates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-hops/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_max_allowed_hops_put + + creates or updates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-hops/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_name_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_name_post + + creates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/name/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_delete + + removes tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_namevalue_name_put + + creates or updates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_put + + creates or updates tapi.connectivity.ConnectivityService + """ + body = TapiConnectivityConnectivityServiceWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_burst_size_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_committed_information_rate_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_delete + + removes tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_burst_size_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_peak_information_rate_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_post + + creates tapi.common.BandwidthProfile + """ + body = TapiCommonBandwidthProfileWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_bandwidth_profile_put + + creates or updates tapi.common.BandwidthProfile + """ + body = TapiCommonBandwidthProfileWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_delete + + removes tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_post + + creates tapi.common.Capacity + """ + body = TapiCommonCapacityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_put + + creates or updates tapi.common.Capacity + """ + body = TapiCommonCapacityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/total-size/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/total-size/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/total-size/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_requested_capacity_total_size_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/total-size/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_delete + + removes tapi.topology.ResilienceType + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/resilience-type/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_get + + returns tapi.topology.ResilienceType + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/resilience-type/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_post + + creates tapi.topology.ResilienceType + """ + body = TapiTopologyResilienceTypeWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/resilience-type/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_resilience_type_put + + creates or updates tapi.topology.ResilienceType + """ + body = TapiTopologyResilienceTypeWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/resilience-type/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristic_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristic_post + + creates tapi.topology.RiskCharacteristic + """ + body = TapiTopologyRiskCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/risk-diversity-characteristic/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_delete + + removes tapi.topology.RiskCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/risk-diversity-characteristic={risk-characteristic-name}/'.format(uuid='uuid_example', risk_characteristic_name='risk_characteristic_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_get + + returns tapi.topology.RiskCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/risk-diversity-characteristic={risk-characteristic-name}/'.format(uuid='uuid_example', risk_characteristic_name='risk_characteristic_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_risk_diversity_characteristicrisk_characteristic_name_put + + creates or updates tapi.topology.RiskCharacteristic + """ + body = TapiTopologyRiskCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/risk-diversity-characteristic={risk-characteristic-name}/'.format(uuid='uuid_example', risk_characteristic_name='risk_characteristic_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_delete + + removes tapi.common.TimeRange + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/schedule/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_get + + returns tapi.common.TimeRange + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/schedule/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_post + + creates tapi.common.TimeRange + """ + body = TapiCommonTimeRangeWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/schedule/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_connectivity_serviceuuid_schedule_put + + creates or updates tapi.common.TimeRange + """ + body = TapiCommonTimeRangeWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/schedule/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_delete(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_delete + + removes tapi.connectivity.ConnectivityContext + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/', + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_get(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_get + + returns tapi.connectivity.ConnectivityContext + """ + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_post(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_post + + creates tapi.connectivity.ConnectivityContext + """ + body = TapiConnectivityConnectivityContextWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_connectivityconnectivity_context_put(self): + """Test case for data_tapi_commoncontext_tapi_connectivityconnectivity_context_put + + creates or updates tapi.connectivity.ConnectivityContext + """ + body = TapiConnectivityConnectivityContextWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-connectivity:connectivity-context/', + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_aggregated_connection_end_pointtopology_uuidaggregated_connection_end_point_node_uuidnode_edge_point_uuidaggregated_connection_end_point_connection_end_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_aggregated_connection_end_pointtopology_uuidaggregated_connection_end_point_node_uuidnode_edge_point_uuidaggregated_connection_end_point_connection_end_point_uuid_get + + returns tapi.connectivity.ConnectionEndPointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/aggregated-connection-end-point={topology-uuid},{aggregated-connection-end-point-node-uuid},{node-edge-point-uuid},{aggregated-connection-end-point-connection-end-point-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example', topology_uuid='topology_uuid_example', aggregated_connection_end_point_node_uuid='aggregated_connection_end_point_node_uuid_example', node_edge_point_uuid='node_edge_point_uuid_example', aggregated_connection_end_point_connection_end_point_uuid='aggregated_connection_end_point_connection_end_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_cep_role_connection_spec_reference_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_cep_role_connection_spec_reference_get + + returns tapi.connectivity.ConnectionSpecReference + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/cep-role/connection-spec-reference/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_cep_role_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_cep_role_get + + returns tapi.connectivity.CepRole + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/cep-role/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_client_node_edge_pointtopology_uuidclient_node_edge_point_node_uuidnode_edge_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_client_node_edge_pointtopology_uuidclient_node_edge_point_node_uuidnode_edge_point_uuid_get + + returns tapi.topology.NodeEdgePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/client-node-edge-point={topology-uuid},{client-node-edge-point-node-uuid},{node-edge-point-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example', topology_uuid='topology_uuid_example', client_node_edge_point_node_uuid='client_node_edge_point_node_uuid_example', node_edge_point_uuid='node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_get + + returns tapi.connectivity.ConnectionEndPoint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/name={value-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_parent_node_edge_point_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_connection_end_pointconnection_end_point_uuid_parent_node_edge_point_get + + returns tapi.topology.NodeEdgePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/parent-node-edge-point/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example', connection_end_point_uuid='connection_end_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_tapi_connectivitycep_list_get + + returns tapi.connectivity.CepList + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_connectivitycreate_connectivity_service_post(self): + """Test case for operations_tapi_connectivitycreate_connectivity_service_post + + operates on tapi.connectivity.CreateConnectivityService + """ + body = OperationsTapiconnectivitycreateconnectivityserviceBody() + response = self.client.open( + '/operations/tapi-connectivity:create-connectivity-service/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_connectivitydelete_connectivity_service_post(self): + """Test case for operations_tapi_connectivitydelete_connectivity_service_post + + operates on tapi.connectivity.DeleteConnectivityService + """ + body = OperationsTapiconnectivitydeleteconnectivityserviceBody() + response = self.client.open( + '/operations/tapi-connectivity:delete-connectivity-service/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_connectivityget_connection_details_post(self): + """Test case for operations_tapi_connectivityget_connection_details_post + + operates on tapi.connectivity.GetConnectionDetails + """ + body = OperationsTapiconnectivitygetconnectiondetailsBody() + response = self.client.open( + '/operations/tapi-connectivity:get-connection-details/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_connectivityget_connection_end_point_details_post(self): + """Test case for operations_tapi_connectivityget_connection_end_point_details_post + + operates on tapi.connectivity.GetConnectionEndPointDetails + """ + body = OperationsTapiconnectivitygetconnectionendpointdetailsBody() + response = self.client.open( + '/operations/tapi-connectivity:get-connection-end-point-details/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_connectivityget_connectivity_service_details_post(self): + """Test case for operations_tapi_connectivityget_connectivity_service_details_post + + operates on tapi.connectivity.GetConnectivityServiceDetails + """ + body = OperationsTapiconnectivitygetconnectivityservicedetailsBody() + response = self.client.open( + '/operations/tapi-connectivity:get-connectivity-service-details/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_connectivityget_connectivity_service_list_post(self): + """Test case for operations_tapi_connectivityget_connectivity_service_list_post + + + """ + response = self.client.open( + '/operations/tapi-connectivity:get-connectivity-service-list/', + method='POST') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_connectivityupdate_connectivity_service_post(self): + """Test case for operations_tapi_connectivityupdate_connectivity_service_post + + operates on tapi.connectivity.UpdateConnectivityService + """ + body = OperationsTapiconnectivityupdateconnectivityserviceBody() + response = self.client.open( + '/operations/tapi-connectivity:update-connectivity-service/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + +if __name__ == '__main__': + import unittest + unittest.main() diff --git a/hackfest/tapi/server/tapi_server/test/test_tapi_notification_controller.py b/hackfest/tapi/server/tapi_server/test/test_tapi_notification_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..d4270b546c408cf8a0b06bd506a7cab1901be18b --- /dev/null +++ b/hackfest/tapi/server/tapi_server/test/test_tapi_notification_controller.py @@ -0,0 +1,556 @@ +# coding: utf-8 + +from __future__ import absolute_import + +from flask import json +from six import BytesIO + +from tapi_server.models.operations_tapinotificationcreatenotificationsubscriptionservice_body import OperationsTapinotificationcreatenotificationsubscriptionserviceBody # noqa: E501 +from tapi_server.models.operations_tapinotificationdeletenotificationsubscriptionservice_body import OperationsTapinotificationdeletenotificationsubscriptionserviceBody # noqa: E501 +from tapi_server.models.operations_tapinotificationgetnotificationlist_body import OperationsTapinotificationgetnotificationlistBody # noqa: E501 +from tapi_server.models.operations_tapinotificationgetnotificationsubscriptionservicedetails_body import OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody # noqa: E501 +from tapi_server.models.operations_tapinotificationupdatenotificationsubscriptionservice_body import OperationsTapinotificationupdatenotificationsubscriptionserviceBody # noqa: E501 +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper # noqa: E501 +from tapi_server.models.tapi_notification_alarm_info_wrapper import TapiNotificationAlarmInfoWrapper # noqa: E501 +from tapi_server.models.tapi_notification_create_notification_subscription_service import TapiNotificationCreateNotificationSubscriptionService # noqa: E501 +from tapi_server.models.tapi_notification_delete_notification_subscription_service import TapiNotificationDeleteNotificationSubscriptionService # noqa: E501 +from tapi_server.models.tapi_notification_get_notification_list import TapiNotificationGetNotificationList # noqa: E501 +from tapi_server.models.tapi_notification_get_notification_subscription_service_details import TapiNotificationGetNotificationSubscriptionServiceDetails # noqa: E501 +from tapi_server.models.tapi_notification_get_notification_subscription_service_list import TapiNotificationGetNotificationSubscriptionServiceList # noqa: E501 +from tapi_server.models.tapi_notification_get_supported_notification_types import TapiNotificationGetSupportedNotificationTypes # noqa: E501 +from tapi_server.models.tapi_notification_name_and_value_change_wrapper import TapiNotificationNameAndValueChangeWrapper # noqa: E501 +from tapi_server.models.tapi_notification_notification_channel_wrapper import TapiNotificationNotificationChannelWrapper # noqa: E501 +from tapi_server.models.tapi_notification_notification_context_wrapper import TapiNotificationNotificationContextWrapper # noqa: E501 +from tapi_server.models.tapi_notification_notification_subscription_service_wrapper import TapiNotificationNotificationSubscriptionServiceWrapper # noqa: E501 +from tapi_server.models.tapi_notification_notification_wrapper import TapiNotificationNotificationWrapper # noqa: E501 +from tapi_server.models.tapi_notification_subscription_filter_wrapper import TapiNotificationSubscriptionFilterWrapper # noqa: E501 +from tapi_server.models.tapi_notification_tca_info_wrapper import TapiNotificationTcaInfoWrapper # noqa: E501 +from tapi_server.models.tapi_notification_update_notification_subscription_service import TapiNotificationUpdateNotificationSubscriptionService # noqa: E501 +from tapi_server.test import BaseTestCase + + +class TestTapiNotificationController(BaseTestCase): + """TapiNotificationController integration test stubs""" + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_delete(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_delete + + removes tapi.notification.NotificationContext + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/', + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_get + + returns tapi.notification.NotificationContext + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscription_post(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscription_post + + creates tapi.notification.NotificationSubscriptionService + """ + body = TapiNotificationNotificationSubscriptionServiceWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_delete(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_delete + + removes tapi.notification.NotificationSubscriptionService + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_get + + returns tapi.notification.NotificationSubscriptionService + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_name_post(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_name_post + + creates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/name/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_delete + + removes tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_put(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_namevalue_name_put + + creates or updates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notification_channel_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notification_channel_get + + returns tapi.notification.NotificationChannel + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification-channel/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notification_channel_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notification_channel_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification-channel/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_additional_infovalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_additional_infovalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/additional-info={value-name}/'.format(uuid='uuid_example', notification_uuid='notification_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_alarm_info_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_alarm_info_get + + returns tapi.notification.AlarmInfo + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/alarm-info/'.format(uuid='uuid_example', notification_uuid='notification_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_changed_attributesvalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_changed_attributesvalue_name_get + + returns tapi.notification.NameAndValueChange + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/changed-attributes={value-name}/'.format(uuid='uuid_example', notification_uuid='notification_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_get + + returns tapi.notification.Notification + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/'.format(uuid='uuid_example', notification_uuid='notification_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/name={value-name}/'.format(uuid='uuid_example', notification_uuid='notification_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_target_object_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_target_object_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/target-object-name={value-name}/'.format(uuid='uuid_example', notification_uuid='notification_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_tca_info_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_notificationnotification_uuid_tca_info_get + + returns tapi.notification.TcaInfo + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/tca-info/'.format(uuid='uuid_example', notification_uuid='notification_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_put(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_put + + creates or updates tapi.notification.NotificationSubscriptionService + """ + body = TapiNotificationNotificationSubscriptionServiceWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_delete(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_delete + + removes tapi.notification.SubscriptionFilter + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_get + + returns tapi.notification.SubscriptionFilter + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_name_post(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_name_post + + creates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/name/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_delete + + removes tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_put(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_namevalue_name_put + + creates or updates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_post(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_post + + creates tapi.notification.SubscriptionFilter + """ + body = TapiNotificationSubscriptionFilterWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_put(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notif_subscriptionuuid_subscription_filter_put + + creates or updates tapi.notification.SubscriptionFilter + """ + body = TapiNotificationSubscriptionFilterWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_additional_infovalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_additional_infovalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/additional-info={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_alarm_info_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_alarm_info_get + + returns tapi.notification.AlarmInfo + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/alarm-info/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_changed_attributesvalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_changed_attributesvalue_name_get + + returns tapi.notification.NameAndValueChange + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/changed-attributes={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_get + + returns tapi.notification.Notification + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_target_object_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_target_object_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/target-object-name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_tca_info_get(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_notificationuuid_tca_info_get + + returns tapi.notification.TcaInfo + """ + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/tca-info/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_post(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_post + + creates tapi.notification.NotificationContext + """ + body = TapiNotificationNotificationContextWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_notificationnotification_context_put(self): + """Test case for data_tapi_commoncontext_tapi_notificationnotification_context_put + + creates or updates tapi.notification.NotificationContext + """ + body = TapiNotificationNotificationContextWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-notification:notification-context/', + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_notificationcreate_notification_subscription_service_post(self): + """Test case for operations_tapi_notificationcreate_notification_subscription_service_post + + operates on tapi.notification.CreateNotificationSubscriptionService + """ + body = OperationsTapinotificationcreatenotificationsubscriptionserviceBody() + response = self.client.open( + '/operations/tapi-notification:create-notification-subscription-service/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_notificationdelete_notification_subscription_service_post(self): + """Test case for operations_tapi_notificationdelete_notification_subscription_service_post + + operates on tapi.notification.DeleteNotificationSubscriptionService + """ + body = OperationsTapinotificationdeletenotificationsubscriptionserviceBody() + response = self.client.open( + '/operations/tapi-notification:delete-notification-subscription-service/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_notificationget_notification_list_post(self): + """Test case for operations_tapi_notificationget_notification_list_post + + operates on tapi.notification.GetNotificationList + """ + body = OperationsTapinotificationgetnotificationlistBody() + response = self.client.open( + '/operations/tapi-notification:get-notification-list/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_notificationget_notification_subscription_service_details_post(self): + """Test case for operations_tapi_notificationget_notification_subscription_service_details_post + + operates on tapi.notification.GetNotificationSubscriptionServiceDetails + """ + body = OperationsTapinotificationgetnotificationsubscriptionservicedetailsBody() + response = self.client.open( + '/operations/tapi-notification:get-notification-subscription-service-details/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_notificationget_notification_subscription_service_list_post(self): + """Test case for operations_tapi_notificationget_notification_subscription_service_list_post + + + """ + response = self.client.open( + '/operations/tapi-notification:get-notification-subscription-service-list/', + method='POST') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_notificationget_supported_notification_types_post(self): + """Test case for operations_tapi_notificationget_supported_notification_types_post + + + """ + response = self.client.open( + '/operations/tapi-notification:get-supported-notification-types/', + method='POST') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_notificationupdate_notification_subscription_service_post(self): + """Test case for operations_tapi_notificationupdate_notification_subscription_service_post + + operates on tapi.notification.UpdateNotificationSubscriptionService + """ + body = OperationsTapinotificationupdatenotificationsubscriptionserviceBody() + response = self.client.open( + '/operations/tapi-notification:update-notification-subscription-service/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + +if __name__ == '__main__': + import unittest + unittest.main() diff --git a/hackfest/tapi/server/tapi_server/test/test_tapi_path_computation_controller.py b/hackfest/tapi/server/tapi_server/test/test_tapi_path_computation_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..1c833fb966932dc77eced3563497c9b46373670c --- /dev/null +++ b/hackfest/tapi/server/tapi_server/test/test_tapi_path_computation_controller.py @@ -0,0 +1,1455 @@ +# coding: utf-8 + +from __future__ import absolute_import + +from flask import json +from six import BytesIO + +from tapi_server.models.operations_tapipathcomputationcomputep2ppath_body import OperationsTapipathcomputationcomputep2ppathBody # noqa: E501 +from tapi_server.models.operations_tapipathcomputationdeletep2ppath_body import OperationsTapipathcomputationdeletep2ppathBody # noqa: E501 +from tapi_server.models.operations_tapipathcomputationoptimizep2ppath_body import OperationsTapipathcomputationoptimizep2ppathBody # noqa: E501 +from tapi_server.models.tapi_common_bandwidth_profile_wrapper import TapiCommonBandwidthProfileWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_value_wrapper import TapiCommonCapacityValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_wrapper import TapiCommonCapacityWrapper # noqa: E501 +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_service_interface_point_ref_wrapper import TapiCommonServiceInterfacePointRefWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_compute_p2_p_path import TapiPathComputationComputeP2PPath # noqa: E501 +from tapi_server.models.tapi_path_computation_delete_p2_p_path import TapiPathComputationDeleteP2PPath # noqa: E501 +from tapi_server.models.tapi_path_computation_optimize_p2_ppath import TapiPathComputationOptimizeP2Ppath # noqa: E501 +from tapi_server.models.tapi_path_computation_path_computation_context_wrapper import TapiPathComputationPathComputationContextWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_computation_service_wrapper import TapiPathComputationPathComputationServiceWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_objective_function_wrapper import TapiPathComputationPathObjectiveFunctionWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_optimization_constraint_wrapper import TapiPathComputationPathOptimizationConstraintWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_ref_wrapper import TapiPathComputationPathRefWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_service_end_point_wrapper import TapiPathComputationPathServiceEndPointWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_path_wrapper import TapiPathComputationPathWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_routing_constraint_wrapper import TapiPathComputationRoutingConstraintWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_topology_constraint_wrapper import TapiPathComputationTopologyConstraintWrapper # noqa: E501 +from tapi_server.models.tapi_path_computation_value_or_priority_wrapper import TapiPathComputationValueOrPriorityWrapper # noqa: E501 +from tapi_server.models.tapi_topology_cost_characteristic_wrapper import TapiTopologyCostCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_latency_characteristic_wrapper import TapiTopologyLatencyCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_link_ref_wrapper import TapiTopologyLinkRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_risk_characteristic_wrapper import TapiTopologyRiskCharacteristicWrapper # noqa: E501 +from tapi_server.test import BaseTestCase + + +class TestTapiPathComputationController(BaseTestCase): + """TapiPathComputationController integration test stubs""" + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_delete + + removes tapi.path.computation.PathComputationContext + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/', + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_get + + returns tapi.path.computation.PathComputationContext + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_service_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_service_post + + creates tapi.path.computation.PathComputationService + """ + body = TapiPathComputationPathComputationServiceWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_delete + + removes tapi.path.computation.PathComputationService + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_point_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_point_post + + creates tapi.path.computation.PathServiceEndPoint + """ + body = TapiPathComputationPathServiceEndPointWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_burst_size_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_committed_information_rate_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_delete + + removes tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_burst_size_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_peak_information_rate_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_post + + creates tapi.common.BandwidthProfile + """ + body = TapiCommonBandwidthProfileWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_bandwidth_profile_put + + creates or updates tapi.common.BandwidthProfile + """ + body = TapiCommonBandwidthProfileWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_delete + + removes tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_post + + creates tapi.common.Capacity + """ + body = TapiCommonCapacityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_put + + creates or updates tapi.common.Capacity + """ + body = TapiCommonCapacityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_delete + + removes tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/total-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/total-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_post + + creates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/total-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_capacity_total_size_put + + creates or updates tapi.common.CapacityValue + """ + body = TapiCommonCapacityValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/total-size/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_delete + + removes tapi.path.computation.PathServiceEndPoint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_get + + returns tapi.path.computation.PathServiceEndPoint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_name_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_name_post + + creates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/name/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_delete + + removes tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/name={value-name}/'.format(uuid='uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/name={value-name}/'.format(uuid='uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_namevalue_name_put + + creates or updates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/name={value-name}/'.format(uuid='uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_put + + creates or updates tapi.path.computation.PathServiceEndPoint + """ + body = TapiPathComputationPathServiceEndPointWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_delete + + removes tapi.common.ServiceInterfacePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/service-interface-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_get + + returns tapi.common.ServiceInterfacePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/service-interface-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_post + + creates tapi.common.ServiceInterfacePointRef + """ + body = TapiCommonServiceInterfacePointRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/service-interface-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_end_pointlocal_id_service_interface_point_put + + creates or updates tapi.common.ServiceInterfacePointRef + """ + body = TapiCommonServiceInterfacePointRefWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/service-interface-point/'.format(uuid='uuid_example', local_id='local_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_get + + returns tapi.path.computation.PathComputationService + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_name_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_name_post + + creates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/name/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_delete + + removes tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_namevalue_name_put + + creates or updates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_delete + + removes tapi.path.computation.PathObjectiveFunction + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_get + + returns tapi.path.computation.PathObjectiveFunction + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_name_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_name_post + + creates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/name/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_delete + + removes tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_namevalue_name_put + + creates or updates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_post + + creates tapi.path.computation.PathObjectiveFunction + """ + body = TapiPathComputationPathObjectiveFunctionWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_objective_function_put + + creates or updates tapi.path.computation.PathObjectiveFunction + """ + body = TapiPathComputationPathObjectiveFunctionWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_delete + + removes tapi.path.computation.PathOptimizationConstraint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_get + + returns tapi.path.computation.PathOptimizationConstraint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_name_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_name_post + + creates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/name/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_delete + + removes tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_namevalue_name_put + + creates or updates tapi.common.NameAndValue + """ + body = TapiCommonNameAndValueWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_post + + creates tapi.path.computation.PathOptimizationConstraint + """ + body = TapiPathComputationPathOptimizationConstraintWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_optimization_constraint_put + + creates or updates tapi.path.computation.PathOptimizationConstraint + """ + body = TapiPathComputationPathOptimizationConstraintWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_pathpath_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_pathpath_uuid_get + + returns tapi.path.computation.PathRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/path={path-uuid}/'.format(uuid='uuid_example', path_uuid='path_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_put + + creates or updates tapi.path.computation.PathComputationService + """ + body = TapiPathComputationPathComputationServiceWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristic_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristic_post + + creates tapi.topology.CostCharacteristic + """ + body = TapiTopologyCostCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/cost-characteristic/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_delete + + removes tapi.topology.CostCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/cost-characteristic={cost-name}/'.format(uuid='uuid_example', cost_name='cost_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_get + + returns tapi.topology.CostCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/cost-characteristic={cost-name}/'.format(uuid='uuid_example', cost_name='cost_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_cost_characteristiccost_name_put + + creates or updates tapi.topology.CostCharacteristic + """ + body = TapiTopologyCostCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/cost-characteristic={cost-name}/'.format(uuid='uuid_example', cost_name='cost_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_delete + + removes tapi.path.computation.RoutingConstraint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_get + + returns tapi.path.computation.RoutingConstraint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristic_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristic_post + + creates tapi.topology.LatencyCharacteristic + """ + body = TapiTopologyLatencyCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/latency-characteristic/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_delete + + removes tapi.topology.LatencyCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', traffic_property_name='traffic_property_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_get + + returns tapi.topology.LatencyCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', traffic_property_name='traffic_property_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_latency_characteristictraffic_property_name_put + + creates or updates tapi.topology.LatencyCharacteristic + """ + body = TapiTopologyLatencyCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', traffic_property_name='traffic_property_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_delete + + removes tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-cost/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_get + + returns tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-cost/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_post + + creates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-cost/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_cost_put + + creates or updates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-cost/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_delete + + removes tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-delay/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_get + + returns tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-delay/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_post + + creates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-delay/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_delay_put + + creates or updates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-delay/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_delete + + removes tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-hops/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_get + + returns tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-hops/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_post + + creates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-hops/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_max_allowed_hops_put + + creates or updates tapi.path.computation.ValueOrPriority + """ + body = TapiPathComputationValueOrPriorityWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-hops/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_post + + creates tapi.path.computation.RoutingConstraint + """ + body = TapiPathComputationRoutingConstraintWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_put + + creates or updates tapi.path.computation.RoutingConstraint + """ + body = TapiPathComputationRoutingConstraintWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristic_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristic_post + + creates tapi.topology.RiskCharacteristic + """ + body = TapiTopologyRiskCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/risk-diversity-characteristic/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_delete + + removes tapi.topology.RiskCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/risk-diversity-characteristic={risk-characteristic-name}/'.format(uuid='uuid_example', risk_characteristic_name='risk_characteristic_name_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_get + + returns tapi.topology.RiskCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/risk-diversity-characteristic={risk-characteristic-name}/'.format(uuid='uuid_example', risk_characteristic_name='risk_characteristic_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_put + + creates or updates tapi.topology.RiskCharacteristic + """ + body = TapiTopologyRiskCharacteristicWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/risk-diversity-characteristic={risk-characteristic-name}/'.format(uuid='uuid_example', risk_characteristic_name='risk_characteristic_name_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_delete(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_delete + + removes tapi.path.computation.TopologyConstraint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/topology-constraint/'.format(uuid='uuid_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_get + + returns tapi.path.computation.TopologyConstraint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/topology-constraint/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_post + + creates tapi.path.computation.TopologyConstraint + """ + body = TapiPathComputationTopologyConstraintWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/topology-constraint/'.format(uuid='uuid_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_path_comp_serviceuuid_topology_constraint_put + + creates or updates tapi.path.computation.TopologyConstraint + """ + body = TapiPathComputationTopologyConstraintWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/topology-constraint/'.format(uuid='uuid_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_get + + returns tapi.path.computation.Path + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_linktopology_uuidlink_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_linktopology_uuidlink_uuid_get + + returns tapi.topology.LinkRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/link={topology-uuid},{link-uuid}/'.format(uuid='uuid_example', topology_uuid='topology_uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_cost_characteristiccost_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_cost_characteristiccost_name_get + + returns tapi.topology.CostCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/cost-characteristic={cost-name}/'.format(uuid='uuid_example', cost_name='cost_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_get + + returns tapi.path.computation.RoutingConstraint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_latency_characteristictraffic_property_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_latency_characteristictraffic_property_name_get + + returns tapi.topology.LatencyCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', traffic_property_name='traffic_property_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_cost_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_cost_get + + returns tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/max-allowed-cost/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_delay_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_delay_get + + returns tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/max-allowed-delay/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_hops_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_max_allowed_hops_get + + returns tapi.path.computation.ValueOrPriority + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/max-allowed-hops/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_get(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_pathuuid_routing_constraint_risk_diversity_characteristicrisk_characteristic_name_get + + returns tapi.topology.RiskCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/risk-diversity-characteristic={risk-characteristic-name}/'.format(uuid='uuid_example', risk_characteristic_name='risk_characteristic_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_post(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_post + + creates tapi.path.computation.PathComputationContext + """ + body = TapiPathComputationPathComputationContextWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_path_computationpath_computation_context_put(self): + """Test case for data_tapi_commoncontext_tapi_path_computationpath_computation_context_put + + creates or updates tapi.path.computation.PathComputationContext + """ + body = TapiPathComputationPathComputationContextWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-path-computation:path-computation-context/', + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_path_computationcompute_p2_p_path_post(self): + """Test case for operations_tapi_path_computationcompute_p2_p_path_post + + operates on tapi.path.computation.ComputeP2PPath + """ + body = OperationsTapipathcomputationcomputep2ppathBody() + response = self.client.open( + '/operations/tapi-path-computation:compute-p-2-p-path/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_path_computationdelete_p2_p_path_post(self): + """Test case for operations_tapi_path_computationdelete_p2_p_path_post + + operates on tapi.path.computation.DeleteP2PPath + """ + body = OperationsTapipathcomputationdeletep2ppathBody() + response = self.client.open( + '/operations/tapi-path-computation:delete-p-2-p-path/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_path_computationoptimize_p2_ppath_post(self): + """Test case for operations_tapi_path_computationoptimize_p2_ppath_post + + operates on tapi.path.computation.OptimizeP2Ppath + """ + body = OperationsTapipathcomputationoptimizep2ppathBody() + response = self.client.open( + '/operations/tapi-path-computation:optimize-p-2-ppath/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + +if __name__ == '__main__': + import unittest + unittest.main() diff --git a/hackfest/tapi/server/tapi_server/test/test_tapi_topology_controller.py b/hackfest/tapi/server/tapi_server/test/test_tapi_topology_controller.py new file mode 100644 index 0000000000000000000000000000000000000000..2f528d43d7ed5f21f6fe72f8c81628d98cd0db38 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/test/test_tapi_topology_controller.py @@ -0,0 +1,1444 @@ +# coding: utf-8 + +from __future__ import absolute_import + +from flask import json +from six import BytesIO + +from tapi_server.models.operations_tapitopologygetlinkdetails_body import OperationsTapitopologygetlinkdetailsBody # noqa: E501 +from tapi_server.models.operations_tapitopologygetnodedetails_body import OperationsTapitopologygetnodedetailsBody # noqa: E501 +from tapi_server.models.operations_tapitopologygetnodeedgepointdetails_body import OperationsTapitopologygetnodeedgepointdetailsBody # noqa: E501 +from tapi_server.models.operations_tapitopologygettopologydetails_body import OperationsTapitopologygettopologydetailsBody # noqa: E501 +from tapi_server.models.tapi_common_bandwidth_profile_wrapper import TapiCommonBandwidthProfileWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_value_wrapper import TapiCommonCapacityValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_capacity_wrapper import TapiCommonCapacityWrapper # noqa: E501 +from tapi_server.models.tapi_common_name_and_value_wrapper import TapiCommonNameAndValueWrapper # noqa: E501 +from tapi_server.models.tapi_common_service_interface_point_ref_wrapper import TapiCommonServiceInterfacePointRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_connection_spec_reference_wrapper import TapiTopologyConnectionSpecReferenceWrapper # noqa: E501 +from tapi_server.models.tapi_topology_cost_characteristic_wrapper import TapiTopologyCostCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_get_link_details import TapiTopologyGetLinkDetails # noqa: E501 +from tapi_server.models.tapi_topology_get_node_details import TapiTopologyGetNodeDetails # noqa: E501 +from tapi_server.models.tapi_topology_get_node_edge_point_details import TapiTopologyGetNodeEdgePointDetails # noqa: E501 +from tapi_server.models.tapi_topology_get_topology_details import TapiTopologyGetTopologyDetails # noqa: E501 +from tapi_server.models.tapi_topology_get_topology_list import TapiTopologyGetTopologyList # noqa: E501 +from tapi_server.models.tapi_topology_inter_rule_group_wrapper import TapiTopologyInterRuleGroupWrapper # noqa: E501 +from tapi_server.models.tapi_topology_latency_characteristic_wrapper import TapiTopologyLatencyCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_link_wrapper import TapiTopologyLinkWrapper # noqa: E501 +from tapi_server.models.tapi_topology_network_topology_service_wrapper import TapiTopologyNetworkTopologyServiceWrapper # noqa: E501 +from tapi_server.models.tapi_topology_node_edge_point_ref_wrapper import TapiTopologyNodeEdgePointRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_node_owned_node_edge_point_wrapper import TapiTopologyNodeOwnedNodeEdgePointWrapper # noqa: E501 +from tapi_server.models.tapi_topology_node_rule_group_ref_wrapper import TapiTopologyNodeRuleGroupRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_node_rule_group_wrapper import TapiTopologyNodeRuleGroupWrapper # noqa: E501 +from tapi_server.models.tapi_topology_port_role_rule_wrapper import TapiTopologyPortRoleRuleWrapper # noqa: E501 +from tapi_server.models.tapi_topology_resilience_type_wrapper import TapiTopologyResilienceTypeWrapper # noqa: E501 +from tapi_server.models.tapi_topology_risk_characteristic_wrapper import TapiTopologyRiskCharacteristicWrapper # noqa: E501 +from tapi_server.models.tapi_topology_rule_wrapper import TapiTopologyRuleWrapper # noqa: E501 +from tapi_server.models.tapi_topology_signal_property_rule_wrapper import TapiTopologySignalPropertyRuleWrapper # noqa: E501 +from tapi_server.models.tapi_topology_topology_context_wrapper import TapiTopologyTopologyContextWrapper # noqa: E501 +from tapi_server.models.tapi_topology_topology_node_wrapper import TapiTopologyTopologyNodeWrapper # noqa: E501 +from tapi_server.models.tapi_topology_topology_ref_wrapper import TapiTopologyTopologyRefWrapper # noqa: E501 +from tapi_server.models.tapi_topology_topology_wrapper import TapiTopologyTopologyWrapper # noqa: E501 +from tapi_server.models.tapi_topology_validation_mechanism_wrapper import TapiTopologyValidationMechanismWrapper # noqa: E501 +from tapi_server.test import BaseTestCase + + +class TestTapiTopologyController(BaseTestCase): + """TapiTopologyController integration test stubs""" + + def test_data_tapi_commoncontext_tapi_topologytopology_context_delete(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_delete + + removes tapi.topology.context.TopologyContext + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/', + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_get + + returns tapi.topology.context.TopologyContext + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_get + + returns tapi.topology.NetworkTopologyService + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/nw-topology-service/', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/nw-topology-service/name={value-name}/'.format(value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_topologytopology_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_nw_topology_service_topologytopology_uuid_get + + returns tapi.topology.TopologyRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/nw-topology-service/topology={topology-uuid}/'.format(topology_uuid='topology_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_post(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_post + + creates tapi.topology.context.TopologyContext + """ + body = TapiTopologyTopologyContextWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_put(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_put + + creates or updates tapi.topology.context.TopologyContext + """ + body = TapiTopologyTopologyContextWrapper() + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/', + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_get + + returns tapi.topology.topologycontext.Topology + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/'.format(uuid='uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_available_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/total-size/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_cost_characteristiccost_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_cost_characteristiccost_name_get + + returns tapi.topology.CostCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/cost-characteristic={cost-name}/'.format(uuid='uuid_example', link_uuid='link_uuid_example', cost_name='cost_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_get + + returns tapi.topology.Link + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_latency_characteristictraffic_property_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_latency_characteristictraffic_property_name_get + + returns tapi.topology.LatencyCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', link_uuid='link_uuid_example', traffic_property_name='traffic_property_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/name={value-name}/'.format(uuid='uuid_example', link_uuid='link_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_node_edge_pointtopology_uuidnode_uuidnode_edge_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_node_edge_pointtopology_uuidnode_uuidnode_edge_point_uuid_get + + returns tapi.topology.NodeEdgePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/node-edge-point={topology-uuid},{node-uuid},{node-edge-point-uuid}/'.format(uuid='uuid_example', link_uuid='link_uuid_example', topology_uuid='topology_uuid_example', node_uuid='node_uuid_example', node_edge_point_uuid='node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_resilience_type_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_resilience_type_get + + returns tapi.topology.ResilienceType + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/resilience-type/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_risk_characteristicrisk_characteristic_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_risk_characteristicrisk_characteristic_name_get + + returns tapi.topology.RiskCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/risk-characteristic={risk-characteristic-name}/'.format(uuid='uuid_example', link_uuid='link_uuid_example', risk_characteristic_name='risk_characteristic_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_total_potential_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/total-size/'.format(uuid='uuid_example', link_uuid='link_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_validation_mechanismvalidation_mechanism_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_linklink_uuid_validation_mechanismvalidation_mechanism_get + + returns tapi.topology.ValidationMechanism + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/validation-mechanism={validation-mechanism}/'.format(uuid='uuid_example', link_uuid='link_uuid_example', validation_mechanism='validation_mechanism_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/name={value-name}/'.format(uuid='uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_aggregated_node_edge_pointtopology_uuidaggregated_node_edge_point_node_uuidnode_edge_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_aggregated_node_edge_pointtopology_uuidaggregated_node_edge_point_node_uuidnode_edge_point_uuid_get + + returns tapi.topology.NodeEdgePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/aggregated-node-edge-point={topology-uuid},{aggregated-node-edge-point-node-uuid},{node-edge-point-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', topology_uuid='topology_uuid_example', aggregated_node_edge_point_node_uuid='aggregated_node_edge_point_node_uuid_example', node_edge_point_uuid='node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_available_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/total-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_cost_characteristiccost_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_cost_characteristiccost_name_get + + returns tapi.topology.CostCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/cost-characteristic={cost-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', cost_name='cost_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_encap_topology_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_encap_topology_get + + returns tapi.topology.TopologyRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/encap-topology/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_get + + returns tapi.topology.topology.Node + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_latency_characteristictraffic_property_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_latency_characteristictraffic_property_name_get + + returns tapi.topology.LatencyCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', traffic_property_name='traffic_property_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/name={value-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_available_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/total-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_cost_characteristiccost_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_cost_characteristiccost_name_get + + returns tapi.topology.CostCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/cost-characteristic={cost-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', cost_name='cost_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_get + + returns tapi.topology.NodeRuleGroup + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_associated_node_rule_grouptopology_uuidassociated_node_rule_group_node_uuidassociated_node_rule_group_node_rule_group_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_associated_node_rule_grouptopology_uuidassociated_node_rule_group_node_uuidassociated_node_rule_group_node_rule_group_uuid_get + + returns tapi.topology.NodeRuleGroupRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/associated-node-rule-group={topology-uuid},{associated-node-rule-group-node-uuid},{associated-node-rule-group-node-rule-group-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example', topology_uuid='topology_uuid_example', associated_node_rule_group_node_uuid='associated_node_rule_group_node_uuid_example', associated_node_rule_group_node_rule_group_uuid='associated_node_rule_group_node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_available_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/total-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_cost_characteristiccost_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_cost_characteristiccost_name_get + + returns tapi.topology.CostCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/cost-characteristic={cost-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example', cost_name='cost_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_get + + returns tapi.topology.InterRuleGroup + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_latency_characteristictraffic_property_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_latency_characteristictraffic_property_name_get + + returns tapi.topology.LatencyCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example', traffic_property_name='traffic_property_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/name={value-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_risk_characteristicrisk_characteristic_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_risk_characteristicrisk_characteristic_name_get + + returns tapi.topology.RiskCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/risk-characteristic={risk-characteristic-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example', risk_characteristic_name='risk_characteristic_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_cep_port_role_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_cep_port_role_get + + returns tapi.topology.PortRoleRule + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/cep-port-role/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_connection_spec_reference_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_connection_spec_reference_get + + returns tapi.topology.ConnectionSpecReference + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/connection-spec-reference/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_get + + returns tapi.topology.Rule + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/name={value-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_signal_property_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_rulelocal_id_signal_property_get + + returns tapi.topology.SignalPropertyRule + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/signal-property/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_inter_rule_groupinter_rule_group_uuid_total_potential_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/total-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', inter_rule_group_uuid='inter_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_latency_characteristictraffic_property_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_latency_characteristictraffic_property_name_get + + returns tapi.topology.LatencyCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/latency-characteristic={traffic-property-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', traffic_property_name='traffic_property_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/name={value-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_node_edge_pointtopology_uuidnode_edge_point_node_uuidnode_edge_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_node_edge_pointtopology_uuidnode_edge_point_node_uuidnode_edge_point_uuid_get + + returns tapi.topology.NodeEdgePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/node-edge-point={topology-uuid},{node-edge-point-node-uuid},{node-edge-point-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', topology_uuid='topology_uuid_example', node_edge_point_node_uuid='node_edge_point_node_uuid_example', node_edge_point_uuid='node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_node_rule_grouptopology_uuidnode_rule_group_node_uuidnode_rule_group_node_rule_group_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_node_rule_grouptopology_uuidnode_rule_group_node_uuidnode_rule_group_node_rule_group_uuid_get + + returns tapi.topology.NodeRuleGroupRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/node-rule-group={topology-uuid},{node-rule-group-node-uuid},{node-rule-group-node-rule-group-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', topology_uuid='topology_uuid_example', node_rule_group_node_uuid='node_rule_group_node_uuid_example', node_rule_group_node_rule_group_uuid='node_rule_group_node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_risk_characteristicrisk_characteristic_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_risk_characteristicrisk_characteristic_name_get + + returns tapi.topology.RiskCharacteristic + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/risk-characteristic={risk-characteristic-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', risk_characteristic_name='risk_characteristic_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_cep_port_role_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_cep_port_role_get + + returns tapi.topology.PortRoleRule + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/cep-port-role/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_connection_spec_reference_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_connection_spec_reference_get + + returns tapi.topology.ConnectionSpecReference + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/connection-spec-reference/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_get + + returns tapi.topology.Rule + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/name={value-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', local_id='local_id_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_signal_property_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_rulelocal_id_signal_property_get + + returns tapi.topology.SignalPropertyRule + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/signal-property/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example', local_id='local_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_node_rule_groupnode_rule_group_uuid_total_potential_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/total-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', node_rule_group_uuid='node_rule_group_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_aggregated_node_edge_pointtopology_uuidaggregated_node_edge_point_node_uuidnode_edge_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_aggregated_node_edge_pointtopology_uuidaggregated_node_edge_point_node_uuidnode_edge_point_uuid_get + + returns tapi.topology.NodeEdgePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/aggregated-node-edge-point={topology-uuid},{aggregated-node-edge-point-node-uuid},{node-edge-point-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example', topology_uuid='topology_uuid_example', aggregated_node_edge_point_node_uuid='aggregated_node_edge_point_node_uuid_example', node_edge_point_uuid='node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_available_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/total-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_get + + returns tapi.topology.node.OwnedNodeEdgePoint + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_mapped_service_interface_pointservice_interface_point_uuid_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_mapped_service_interface_pointservice_interface_point_uuid_get + + returns tapi.common.ServiceInterfacePointRef + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/mapped-service-interface-point={service-interface-point-uuid}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example', service_interface_point_uuid='service_interface_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_namevalue_name_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_namevalue_name_get + + returns tapi.common.NameAndValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/name={value-name}/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example', value_name='value_name_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_owned_node_edge_pointowned_node_edge_point_uuid_total_potential_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/total-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example', owned_node_edge_point_uuid='owned_node_edge_point_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_committed_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_committed_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_get + + returns tapi.common.BandwidthProfile + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_peak_burst_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_bandwidth_profile_peak_information_rate_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_get + + returns tapi.common.Capacity + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_total_size_get(self): + """Test case for data_tapi_commoncontext_tapi_topologytopology_context_topologyuuid_nodenode_uuid_total_potential_capacity_total_size_get + + returns tapi.common.CapacityValue + """ + response = self.client.open( + '/data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/total-size/'.format(uuid='uuid_example', node_uuid='node_uuid_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_topologyget_link_details_post(self): + """Test case for operations_tapi_topologyget_link_details_post + + operates on tapi.topology.GetLinkDetails + """ + body = OperationsTapitopologygetlinkdetailsBody() + response = self.client.open( + '/operations/tapi-topology:get-link-details/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_topologyget_node_details_post(self): + """Test case for operations_tapi_topologyget_node_details_post + + operates on tapi.topology.GetNodeDetails + """ + body = OperationsTapitopologygetnodedetailsBody() + response = self.client.open( + '/operations/tapi-topology:get-node-details/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_topologyget_node_edge_point_details_post(self): + """Test case for operations_tapi_topologyget_node_edge_point_details_post + + operates on tapi.topology.GetNodeEdgePointDetails + """ + body = OperationsTapitopologygetnodeedgepointdetailsBody() + response = self.client.open( + '/operations/tapi-topology:get-node-edge-point-details/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_topologyget_topology_details_post(self): + """Test case for operations_tapi_topologyget_topology_details_post + + operates on tapi.topology.GetTopologyDetails + """ + body = OperationsTapitopologygettopologydetailsBody() + response = self.client.open( + '/operations/tapi-topology:get-topology-details/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_operations_tapi_topologyget_topology_list_post(self): + """Test case for operations_tapi_topologyget_topology_list_post + + + """ + response = self.client.open( + '/operations/tapi-topology:get-topology-list/', + method='POST') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + +if __name__ == '__main__': + import unittest + unittest.main() diff --git a/hackfest/tapi/server/tapi_server/type_util.py b/hackfest/tapi/server/tapi_server/type_util.py new file mode 100644 index 0000000000000000000000000000000000000000..0563f81fd5345282a33705038dfa77fdcaa15872 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/type_util.py @@ -0,0 +1,32 @@ +# coding: utf-8 + +import sys + +if sys.version_info < (3, 7): + import typing + + def is_generic(klass): + """ Determine whether klass is a generic class """ + return type(klass) == typing.GenericMeta + + def is_dict(klass): + """ Determine whether klass is a Dict """ + return klass.__extra__ == dict + + def is_list(klass): + """ Determine whether klass is a List """ + return klass.__extra__ == list + +else: + + def is_generic(klass): + """ Determine whether klass is a generic class """ + return hasattr(klass, '__origin__') + + def is_dict(klass): + """ Determine whether klass is a Dict """ + return klass.__origin__ == dict + + def is_list(klass): + """ Determine whether klass is a List """ + return klass.__origin__ == list diff --git a/hackfest/tapi/server/tapi_server/util.py b/hackfest/tapi/server/tapi_server/util.py new file mode 100644 index 0000000000000000000000000000000000000000..f627e2a294aef5a1069f9825a57a03c4e5df5db6 --- /dev/null +++ b/hackfest/tapi/server/tapi_server/util.py @@ -0,0 +1,142 @@ +import datetime + +import six +import typing +from tapi_server import type_util + + +def _deserialize(data, klass): + """Deserializes dict, list, str into an object. + + :param data: dict, list or str. + :param klass: class literal, or string of class name. + + :return: object. + """ + if data is None: + return None + + if klass in six.integer_types or klass in (float, str, bool, bytearray): + return _deserialize_primitive(data, klass) + elif klass == object: + return _deserialize_object(data) + elif klass == datetime.date: + return deserialize_date(data) + elif klass == datetime.datetime: + return deserialize_datetime(data) + elif type_util.is_generic(klass): + if type_util.is_list(klass): + return _deserialize_list(data, klass.__args__[0]) + if type_util.is_dict(klass): + return _deserialize_dict(data, klass.__args__[1]) + else: + return deserialize_model(data, klass) + + +def _deserialize_primitive(data, klass): + """Deserializes to primitive type. + + :param data: data to deserialize. + :param klass: class literal. + + :return: int, long, float, str, bool. + :rtype: int | long | float | str | bool + """ + try: + value = klass(data) + except UnicodeEncodeError: + value = six.u(data) + except TypeError: + value = data + return value + + +def _deserialize_object(value): + """Return an original value. + + :return: object. + """ + return value + + +def deserialize_date(string): + """Deserializes string to date. + + :param string: str. + :type string: str + :return: date. + :rtype: date + """ + try: + from dateutil.parser import parse + return parse(string).date() + except ImportError: + return string + + +def deserialize_datetime(string): + """Deserializes string to datetime. + + The string should be in iso8601 datetime format. + + :param string: str. + :type string: str + :return: datetime. + :rtype: datetime + """ + try: + from dateutil.parser import parse + return parse(string) + except ImportError: + return string + + +def deserialize_model(data, klass): + """Deserializes list or dict to model. + + :param data: dict, list. + :type data: dict | list + :param klass: class literal. + :return: model object. + """ + instance = klass() + + if not instance.swagger_types: + return data + + for attr, attr_type in six.iteritems(instance.swagger_types): + if data is not None \ + and instance.attribute_map[attr] in data \ + and isinstance(data, (list, dict)): + value = data[instance.attribute_map[attr]] + setattr(instance, attr, _deserialize(value, attr_type)) + + return instance + + +def _deserialize_list(data, boxed_type): + """Deserializes a list and its elements. + + :param data: list to deserialize. + :type data: list + :param boxed_type: class literal. + + :return: deserialized list. + :rtype: list + """ + return [_deserialize(sub_data, boxed_type) + for sub_data in data] + + +def _deserialize_dict(data, boxed_type): + """Deserializes a dict and its elements. + + :param data: dict to deserialize. + :type data: dict + :param boxed_type: class literal. + + :return: deserialized dict. + :rtype: dict + """ + return {k: _deserialize(v, boxed_type) + for k, v in six.iteritems(data)} diff --git a/hackfest/tapi/server/test-requirements.txt b/hackfest/tapi/server/test-requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..2640639a25a3bffe0f449788303300a364c55cb7 --- /dev/null +++ b/hackfest/tapi/server/test-requirements.txt @@ -0,0 +1,7 @@ +flask_testing==0.8.0 +coverage>=4.0.3 +nose>=1.3.7 +pluggy>=0.3.1 +py>=1.4.31 +randomize>=0.13 +tox==3.20.1 diff --git a/hackfest/tapi/server/tox.ini b/hackfest/tapi/server/tox.ini new file mode 100644 index 0000000000000000000000000000000000000000..2751b218c1d2385c081c114c9094fc5e388126dc --- /dev/null +++ b/hackfest/tapi/server/tox.ini @@ -0,0 +1,10 @@ +[tox] +envlist = py38 + +[testenv] +deps=-r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +commands= + nosetests \ + [] \ No newline at end of file diff --git a/hackfest/tapi/swagger-codegen-cli-3.0.35.jar b/hackfest/tapi/swagger-codegen-cli-3.0.35.jar new file mode 100644 index 0000000000000000000000000000000000000000..88f9085ea972daed2099d62c89d4a96d0e4bd730 Binary files /dev/null and b/hackfest/tapi/swagger-codegen-cli-3.0.35.jar differ diff --git a/hackfest/tapi/tapi-connectivity.yaml b/hackfest/tapi/tapi-connectivity.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6cc5d39037ef0fca8ba6f6029344eade09ec7364 --- /dev/null +++ b/hackfest/tapi/tapi-connectivity.yaml @@ -0,0 +1,15196 @@ +--- +swagger: "2.0" +info: + description: "\r\n This module contains TAPI Notification Model definitions.\r\ + \n Source: TapiNotification.uml\r\n - The TAPI YANG models included\ + \ in this TAPI release are a *normative* part of the TAPI SDK.\r\n - The\ + \ YANG specifications have been generated from the corresponding UML model using\ + \ the [ONF EAGLE UML2YANG mapping tool]\r\n \r\n and further edited manually to comply with the [ONF IISOMI UML2YANG\ + \ mapping guidelines]\r\n \r\n - Status of YANG model artifacts can be determined by referring\ + \ to the corresponding UML artifacts.\r\n As described in the UML models,\ + \ some artifacts are considered *experimental*, and thus the corresponding YANG\ + \ artifacts.\r\n - The ONF TAPI release process does not guarantee backward\ + \ compatibility of YANG models across major versions of TAPI releases.\r\n \ + \ The YANG model backward compatibility criteria are outlined in section\ + \ 11 of .\r\n YANG models included in this release may not be backward compatible\ + \ with previous TAPI releases.\r\n Copyright (c) 2018 Open Networking Foundation\ + \ (ONF). All rights reserved.\r\n License: This module is distributed under\ + \ the Apache License 2.0,\r\n This module contains TAPI Connectivity Model\ + \ definitions.\r\n Source: TapiConnectivity.uml\r\n - The TAPI YANG\ + \ models included in this TAPI release are a *normative* part of the TAPI SDK.\r\ + \n - The YANG specifications have been generated from the corresponding\ + \ UML model using the [ONF EAGLE UML2YANG mapping tool]\r\n \r\n and further edited manually to comply with the [ONF IISOMI UML2YANG\ + \ mapping guidelines]\r\n \r\n - Status of YANG model artifacts can be determined by referring\ + \ to the corresponding UML artifacts.\r\n As described in the UML models,\ + \ some artifacts are considered *experimental*, and thus the corresponding YANG\ + \ artifacts.\r\n - The ONF TAPI release process does not guarantee backward\ + \ compatibility of YANG models across major versions of TAPI releases.\r\n \ + \ The YANG model backward compatibility criteria are outlined in section 11\ + \ of .\r\n YANG models included in this release may not be backward compatible\ + \ with previous TAPI releases.\r\n Copyright (c) 2018 Open Networking Foundation\ + \ (ONF). All rights reserved.\r\n License: This module is distributed under\ + \ the Apache License 2.0.,\r\n This module contains TAPI Topology Model\ + \ definitions.\r\n Source: TapiTopology.uml\r\n - The TAPI YANG\ + \ models included in this TAPI release are a *normative* part of the TAPI SDK.\r\ + \n - The YANG specifications have been generated from the corresponding\ + \ UML model using the [ONF EAGLE UML2YANG mapping tool]\r\n \r\n and further edited manually to comply with the [ONF IISOMI UML2YANG\ + \ mapping guidelines]\r\n \r\n - Status of YANG model artifacts can be determined by referring\ + \ to the corresponding UML artifacts.\r\n As described in the UML models,\ + \ some artifacts are considered *experimental*, and thus the corresponding YANG\ + \ artifacts.\r\n - The ONF TAPI release process does not guarantee backward\ + \ compatibility of YANG models across major versions of TAPI releases.\r\n \ + \ The YANG model backward compatibility criteria are outlined in section\ + \ 11 of .\r\n YANG models included in this release may not be backward compatible\ + \ with previous TAPI releases.\r\n Copyright (c) 2018 Open Networking Foundation\ + \ (ONF). All rights reserved.\r\n License: This module is distributed under\ + \ the Apache License 2.0.,\r\n This module contains TAPI Common Model definitions.\r\ + \n Source: TapiCommon.uml\r\n - The TAPI YANG models included in\ + \ this TAPI release are a *normative* part of the TAPI SDK.\r\n - The YANG\ + \ specifications have been generated from the corresponding UML model using the\ + \ [ONF EAGLE UML2YANG mapping tool]\r\n \r\ + \n and further edited manually to comply with the [ONF IISOMI UML2YANG\ + \ mapping guidelines]\r\n \r\ + \n - Status of YANG model artifacts can be determined by referring to the\ + \ corresponding UML artifacts.\r\n As described in the UML models, some\ + \ artifacts are considered *experimental*, and thus the corresponding YANG artifacts.\r\ + \n - The ONF TAPI release process does not guarantee backward compatibility\ + \ of YANG models across major versions of TAPI releases.\r\n The YANG model\ + \ backward compatibility criteria are outlined in section 11 of .\r\ + \n YANG models included in this release may not be backward compatible\ + \ with previous TAPI releases.\r\n Copyright (c) 2018 Open Networking Foundation\ + \ (ONF). All rights reserved.\r\n License: This module is distributed under\ + \ the Apache License 2.0.,\r\n This module contains TAPI Path Computation\ + \ Model definitions.\r\n Source: TapiPathComputation.uml\r\n - The\ + \ TAPI YANG models included in this TAPI release are a *normative* part of the\ + \ TAPI SDK.\r\n - The YANG specifications have been generated from the\ + \ corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]\r\n \ + \ \r\n and\ + \ further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]\r\ + \n \r\ + \n - Status of YANG model artifacts can be determined by referring to the\ + \ corresponding UML artifacts.\r\n As described in the UML models, some\ + \ artifacts are considered *experimental*, and thus the corresponding YANG artifacts.\r\ + \n - The ONF TAPI release process does not guarantee backward compatibility\ + \ of YANG models across major versions of TAPI releases.\r\n The YANG model\ + \ backward compatibility criteria are outlined in section 11 of .\r\ + \n YANG models included in this release may not be backward compatible\ + \ with previous TAPI releases.\r\n Copyright (c) 2018 Open Networking Foundation\ + \ (ONF). All rights reserved.\r\n License: This module is distributed under\ + \ the Apache License 2.0." + version: "2.1.3" + title: "tapi-notification,tapi-connectivity,tapi-topology,tapi-common,tapi-path-computation\ + \ API" +host: "localhost:1234" +consumes: +- "application/yang-data+json" +produces: +- "application/yang-data+json" +paths: + /data/tapi-common:context/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.Context" + description: "none" + parameters: [] + responses: + 200: + description: "tapi.common.Context" + schema: + $ref: "#/definitions/tapi.common.ContextWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-common" + summary: "creates tapi.common.Context" + description: "none" + parameters: + - in: "body" + name: "tapi.common.Context.body-param" + description: "tapi.common.Context to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.ContextWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-common" + summary: "creates or updates tapi.common.Context" + description: "none" + parameters: + - in: "body" + name: "tapi.common.Context.body-param" + description: "tapi.common.Context to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.ContextWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-common" + summary: "removes tapi.common.Context" + description: "none" + parameters: [] + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/name/: + post: + tags: + - "tapi-common" + summary: "creates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/name={value-name}/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-common" + summary: "creates or updates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-common" + summary: "removes tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/service-interface-point/: + post: + tags: + - "tapi-common" + summary: "creates tapi.common.ServiceInterfacePoint" + description: "none" + parameters: + - in: "body" + name: "tapi.common.ServiceInterfacePoint.body-param" + description: "tapi.common.ServiceInterfacePoint to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.ServiceInterfacePointWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/service-interface-point={uuid}/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.ServiceInterfacePoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.ServiceInterfacePoint" + schema: + $ref: "#/definitions/tapi.common.ServiceInterfacePointWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-common" + summary: "creates or updates tapi.common.ServiceInterfacePoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.ServiceInterfacePoint.body-param" + description: "tapi.common.ServiceInterfacePoint to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.ServiceInterfacePointWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-common" + summary: "removes tapi.common.ServiceInterfacePoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.Capacity" + description: "Capacity available to be assigned." + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/committed-burst-size/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/committed-information-rate/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/peak-burst-size/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/bandwidth-profile/peak-information-rate/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/available-capacity/total-size/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/name/: + post: + tags: + - "tapi-common" + summary: "creates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/service-interface-point={uuid}/name={value-name}/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-common" + summary: "creates or updates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-common" + summary: "removes tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.Capacity" + description: "An optimistic view of the capacity of the TopologicalEntity assuming\ + \ that any shared capacity is available to be taken." + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/service-interface-point={uuid}/total-potential-capacity/total-size/: + get: + tags: + - "tapi-common" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectivityContext" + description: "Augments the base TAPI Context with ConnectivityService information" + parameters: [] + responses: + 200: + description: "tapi.connectivity.ConnectivityContext" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityContextWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.connectivity.ConnectivityContext" + description: "Augments the base TAPI Context with ConnectivityService information" + parameters: + - in: "body" + name: "tapi.connectivity.ConnectivityContext.body-param" + description: "tapi.connectivity.ConnectivityContext to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityContextWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.connectivity.ConnectivityContext" + description: "Augments the base TAPI Context with ConnectivityService information" + parameters: + - in: "body" + name: "tapi.connectivity.ConnectivityContext.body-param" + description: "tapi.connectivity.ConnectivityContext to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityContextWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.connectivity.ConnectivityContext" + description: "Augments the base TAPI Context with ConnectivityService information" + parameters: [] + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.Connection" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.Connection" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectionEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "node-edge-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectionEndPointRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/connection-spec-reference/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectionSpecReference" + description: "Provides the reference to the spec that defines the connection\ + \ type and cepRoles." + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectionSpecReference" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionSpecReferenceWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/lower-connection={connection-uuid}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectionRef" + description: "An Connection object supports a recursive aggregation relationship\ + \ such that the internal construction of an Connection can be exposed as multiple\ + \ lower level Connection objects (partitioning).\r\n Aggregation\ + \ is used as for the Node/Topology to allow changes in hierarchy. \r\n \ + \ Connection aggregation reflects Node/Topology aggregation.\ + \ \r\n The FC represents a Cross-Connection in an NE. The Cross-Connection\ + \ in an NE is not necessarily the lowest level of FC partitioning." + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "connection-uuid" + in: "path" + description: "Id of lower-connection" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectionRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/name={value-name}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.Route" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of route" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.Route" + schema: + $ref: "#/definitions/tapi.connectivity.RouteWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectionEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of route" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "node-edge-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectionEndPointRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/name={value-name}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of route" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/resilience-route-pac/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ResilienceRoute" + description: "Provides optional resilience and state attributes to the Route." + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of route" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ResilienceRoute" + schema: + $ref: "#/definitions/tapi.connectivity.ResilienceRouteWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/route={local-id}/resilience-route-pac/name={value-name}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of route" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/supported-client-link={topology-uuid},{link-uuid}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.topology.LinkRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of supported-client-link" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of supported-client-link" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.LinkRef" + schema: + $ref: "#/definitions/tapi.topology.LinkRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.SwitchControl" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "switch-control-uuid" + in: "path" + description: "Id of switch-control" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.SwitchControl" + schema: + $ref: "#/definitions/tapi.connectivity.SwitchControlWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/name={value-name}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "switch-control-uuid" + in: "path" + description: "Id of switch-control" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/resilience-type/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.topology.ResilienceType" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "switch-control-uuid" + in: "path" + description: "Id of switch-control" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.ResilienceType" + schema: + $ref: "#/definitions/tapi.topology.ResilienceTypeWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/sub-switch-control={connection-uuid},{sub-switch-control-switch-control-uuid}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.SwitchControlRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "switch-control-uuid" + in: "path" + description: "Id of switch-control" + required: true + type: "string" + - name: "connection-uuid" + in: "path" + description: "Id of sub-switch-control" + required: true + type: "string" + - name: "sub-switch-control-switch-control-uuid" + in: "path" + description: "Id of sub-switch-control" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.SwitchControlRef" + schema: + $ref: "#/definitions/tapi.connectivity.SwitchControlRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.Switch" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "switch-control-uuid" + in: "path" + description: "Id of switch-control" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of switch" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.Switch" + schema: + $ref: "#/definitions/tapi.connectivity.SwitchWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/name={value-name}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "switch-control-uuid" + in: "path" + description: "Id of switch-control" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of switch" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/selected-connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectionEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "switch-control-uuid" + in: "path" + description: "Id of switch-control" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of switch" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of selected-connection-end-point" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of selected-connection-end-point" + required: true + type: "string" + - name: "node-edge-point-uuid" + in: "path" + description: "Id of selected-connection-end-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of selected-connection-end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectionEndPointRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connection={uuid}/switch-control={switch-control-uuid}/switch={local-id}/selected-route={connection-uuid},{route-local-id}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.RouteRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + - name: "switch-control-uuid" + in: "path" + description: "Id of switch-control" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of switch" + required: true + type: "string" + - name: "connection-uuid" + in: "path" + description: "Id of selected-route" + required: true + type: "string" + - name: "route-local-id" + in: "path" + description: "Id of selected-route" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.RouteRef" + schema: + $ref: "#/definitions/tapi.connectivity.RouteRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service/: + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.connectivity.ConnectivityService" + description: "none" + parameters: + - in: "body" + name: "tapi.connectivity.ConnectivityService.body-param" + description: "tapi.connectivity.ConnectivityService to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectivityService" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectivityService" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.connectivity.ConnectivityService" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityService.body-param" + description: "tapi.connectivity.ConnectivityService to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.connectivity.ConnectivityService" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/connection={connection-uuid}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectionRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "connection-uuid" + in: "path" + description: "Id of connection" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectionRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/coroute-inclusion/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectivityServiceRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectivityServiceRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceRefWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.connectivity.ConnectivityServiceRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceRef.body-param" + description: "tapi.connectivity.ConnectivityServiceRef to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.connectivity.ConnectivityServiceRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceRef.body-param" + description: "tapi.connectivity.ConnectivityServiceRef to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.connectivity.ConnectivityServiceRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/cost-characteristic/: + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.topology.CostCharacteristic.body-param" + description: "tapi.topology.CostCharacteristic to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/cost-characteristic={cost-name}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.CostCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + - in: "body" + name: "tapi.topology.CostCharacteristic.body-param" + description: "tapi.topology.CostCharacteristic to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/diversity-exclusion/: + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.connectivity.ConnectivityServiceRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceRef.body-param" + description: "tapi.connectivity.ConnectivityServiceRef to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/diversity-exclusion={connectivity-service-uuid}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectivityServiceRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "connectivity-service-uuid" + in: "path" + description: "Id of diversity-exclusion" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectivityServiceRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceRefWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.connectivity.ConnectivityServiceRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "connectivity-service-uuid" + in: "path" + description: "Id of diversity-exclusion" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceRef.body-param" + description: "tapi.connectivity.ConnectivityServiceRef to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.connectivity.ConnectivityServiceRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "connectivity-service-uuid" + in: "path" + description: "Id of diversity-exclusion" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point/: + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.connectivity.ConnectivityServiceEndPoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceEndPoint.body-param" + description: "tapi.connectivity.ConnectivityServiceEndPoint to be added to\ + \ list" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectivityServiceEndPoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectivityServiceEndPoint" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.connectivity.ConnectivityServiceEndPoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceEndPoint.body-param" + description: "tapi.connectivity.ConnectivityServiceEndPoint to be added or\ + \ updated" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.connectivity.ConnectivityServiceEndPoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.Capacity.body-param" + description: "tapi.common.Capacity to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.Capacity.body-param" + description: "tapi.common.Capacity to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.BandwidthProfile.body-param" + description: "tapi.common.BandwidthProfile to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.BandwidthProfile.body-param" + description: "tapi.common.BandwidthProfile to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/capacity/total-size/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/connection-end-point={topology-uuid},{node-uuid},{node-edge-point-uuid},{connection-end-point-uuid}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectionEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "node-edge-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectionEndPointRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/name/: + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/name={value-name}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/peer-fwd-connectivity-service-end-point/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectivityServiceEndPointRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRefWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceEndPointRef.body-param" + description: "tapi.connectivity.ConnectivityServiceEndPointRef to be added\ + \ to list" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceEndPointRef.body-param" + description: "tapi.connectivity.ConnectivityServiceEndPointRef to be added\ + \ or updated" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/protecting-connectivity-service-end-point/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectivityServiceEndPointRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRefWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceEndPointRef.body-param" + description: "tapi.connectivity.ConnectivityServiceEndPointRef to be added\ + \ to list" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceEndPointRef.body-param" + description: "tapi.connectivity.ConnectivityServiceEndPointRef to be added\ + \ or updated" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/server-connectivity-service-end-point/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectivityServiceEndPointRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRefWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceEndPointRef.body-param" + description: "tapi.connectivity.ConnectivityServiceEndPointRef to be added\ + \ to list" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.connectivity.ConnectivityServiceEndPointRef.body-param" + description: "tapi.connectivity.ConnectivityServiceEndPointRef to be added\ + \ or updated" + required: false + schema: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.connectivity.ConnectivityServiceEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/end-point={local-id}/service-interface-point/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.ServiceInterfacePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.ServiceInterfacePointRef" + schema: + $ref: "#/definitions/tapi.common.ServiceInterfacePointRefWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.ServiceInterfacePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.ServiceInterfacePointRef.body-param" + description: "tapi.common.ServiceInterfacePointRef to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.ServiceInterfacePointRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.ServiceInterfacePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.ServiceInterfacePointRef.body-param" + description: "tapi.common.ServiceInterfacePointRef to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.ServiceInterfacePointRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.ServiceInterfacePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/latency-characteristic/: + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.topology.LatencyCharacteristic.body-param" + description: "tapi.topology.LatencyCharacteristic to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/latency-characteristic={traffic-property-name}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.LatencyCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + - in: "body" + name: "tapi.topology.LatencyCharacteristic.body-param" + description: "tapi.topology.LatencyCharacteristic to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-cost/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.ValueOrPriority" + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-delay/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.path.computation.ValueOrPriority" + description: "Delay unit is microseconds." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.ValueOrPriority" + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.path.computation.ValueOrPriority" + description: "Delay unit is microseconds." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.path.computation.ValueOrPriority" + description: "Delay unit is microseconds." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.path.computation.ValueOrPriority" + description: "Delay unit is microseconds." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/max-allowed-hops/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.ValueOrPriority" + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/name/: + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/name={value-name}/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.Capacity.body-param" + description: "tapi.common.Capacity to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.Capacity.body-param" + description: "tapi.common.Capacity to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.BandwidthProfile.body-param" + description: "tapi.common.BandwidthProfile to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.BandwidthProfile.body-param" + description: "tapi.common.BandwidthProfile to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/requested-capacity/total-size/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/resilience-type/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.topology.ResilienceType" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.ResilienceType" + schema: + $ref: "#/definitions/tapi.topology.ResilienceTypeWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.topology.ResilienceType" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.topology.ResilienceType.body-param" + description: "tapi.topology.ResilienceType to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.topology.ResilienceTypeWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.topology.ResilienceType" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.topology.ResilienceType.body-param" + description: "tapi.topology.ResilienceType to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.topology.ResilienceTypeWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.topology.ResilienceType" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/risk-diversity-characteristic/: + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.topology.RiskCharacteristic" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.topology.RiskCharacteristic.body-param" + description: "tapi.topology.RiskCharacteristic to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.topology.RiskCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/risk-diversity-characteristic={risk-characteristic-name}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.topology.RiskCharacteristic" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "risk-characteristic-name" + in: "path" + description: "Id of risk-diversity-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.RiskCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.RiskCharacteristicWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.topology.RiskCharacteristic" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "risk-characteristic-name" + in: "path" + description: "Id of risk-diversity-characteristic" + required: true + type: "string" + - in: "body" + name: "tapi.topology.RiskCharacteristic.body-param" + description: "tapi.topology.RiskCharacteristic to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.topology.RiskCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.topology.RiskCharacteristic" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - name: "risk-characteristic-name" + in: "path" + description: "Id of risk-diversity-characteristic" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-connectivity:connectivity-context/connectivity-service={uuid}/schedule/: + get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.TimeRange" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 200: + description: "tapi.common.TimeRange" + schema: + $ref: "#/definitions/tapi.common.TimeRangeWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-connectivity" + summary: "creates tapi.common.TimeRange" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.TimeRange.body-param" + description: "tapi.common.TimeRange to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.TimeRangeWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-connectivity" + summary: "creates or updates tapi.common.TimeRange" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.TimeRange.body-param" + description: "tapi.common.TimeRange to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.TimeRangeWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-connectivity" + summary: "removes tapi.common.TimeRange" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of connectivity-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-notification:notification-context/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.NotificationContext" + description: "Augments the base TAPI Context with NotificationService information" + parameters: [] + responses: + 200: + description: "tapi.notification.NotificationContext" + schema: + $ref: "#/definitions/tapi.notification.NotificationContextWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-notification" + summary: "creates tapi.notification.NotificationContext" + description: "Augments the base TAPI Context with NotificationService information" + parameters: + - in: "body" + name: "tapi.notification.NotificationContext.body-param" + description: "tapi.notification.NotificationContext to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.notification.NotificationContextWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-notification" + summary: "creates or updates tapi.notification.NotificationContext" + description: "Augments the base TAPI Context with NotificationService information" + parameters: + - in: "body" + name: "tapi.notification.NotificationContext.body-param" + description: "tapi.notification.NotificationContext to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.notification.NotificationContextWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-notification" + summary: "removes tapi.notification.NotificationContext" + description: "Augments the base TAPI Context with NotificationService information" + parameters: [] + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription/: + post: + tags: + - "tapi-notification" + summary: "creates tapi.notification.NotificationSubscriptionService" + description: "none" + parameters: + - in: "body" + name: "tapi.notification.NotificationSubscriptionService.body-param" + description: "tapi.notification.NotificationSubscriptionService to be added\ + \ to list" + required: false + schema: + $ref: "#/definitions/tapi.notification.NotificationSubscriptionServiceWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.NotificationSubscriptionService" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.NotificationSubscriptionService" + schema: + $ref: "#/definitions/tapi.notification.NotificationSubscriptionServiceWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-notification" + summary: "creates or updates tapi.notification.NotificationSubscriptionService" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - in: "body" + name: "tapi.notification.NotificationSubscriptionService.body-param" + description: "tapi.notification.NotificationSubscriptionService to be added\ + \ or updated" + required: false + schema: + $ref: "#/definitions/tapi.notification.NotificationSubscriptionServiceWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-notification" + summary: "removes tapi.notification.NotificationSubscriptionService" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/name/: + post: + tags: + - "tapi-notification" + summary: "creates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/name={value-name}/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-notification" + summary: "creates or updates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-notification" + summary: "removes tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification-channel/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.NotificationChannel" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.NotificationChannel" + schema: + $ref: "#/definitions/tapi.notification.NotificationChannelWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification-channel/name={value-name}/ + : get: + tags: + - "tapi-notification" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.Notification" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "notification-uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.Notification" + schema: + $ref: "#/definitions/tapi.notification.NotificationWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/additional-info={value-name}/ + : get: + tags: + - "tapi-notification" + summary: "returns tapi.common.NameAndValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "notification-uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of additional-info" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/alarm-info/ + : get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.AlarmInfo" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "notification-uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.AlarmInfo" + schema: + $ref: "#/definitions/tapi.notification.AlarmInfoWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/changed-attributes={value-name}/ + : get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.NameAndValueChange" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "notification-uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of changed-attributes" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.NameAndValueChange" + schema: + $ref: "#/definitions/tapi.notification.NameAndValueChangeWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/name={value-name}/ + : get: + tags: + - "tapi-notification" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "notification-uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/target-object-name={value-name}/ + : get: + tags: + - "tapi-notification" + summary: "returns tapi.common.NameAndValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "notification-uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of target-object-name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/notification={notification-uuid}/tca-info/ + : get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.TcaInfo" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "notification-uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.TcaInfo" + schema: + $ref: "#/definitions/tapi.notification.TcaInfoWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.SubscriptionFilter" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.SubscriptionFilter" + schema: + $ref: "#/definitions/tapi.notification.SubscriptionFilterWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-notification" + summary: "creates tapi.notification.SubscriptionFilter" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - in: "body" + name: "tapi.notification.SubscriptionFilter.body-param" + description: "tapi.notification.SubscriptionFilter to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.notification.SubscriptionFilterWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-notification" + summary: "creates or updates tapi.notification.SubscriptionFilter" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - in: "body" + name: "tapi.notification.SubscriptionFilter.body-param" + description: "tapi.notification.SubscriptionFilter to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.notification.SubscriptionFilterWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-notification" + summary: "removes tapi.notification.SubscriptionFilter" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/name/: + post: + tags: + - "tapi-notification" + summary: "creates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-notification:notification-context/notif-subscription={uuid}/subscription-filter/name={value-name}/ + : get: + tags: + - "tapi-notification" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-notification" + summary: "creates or updates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-notification" + summary: "removes tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notif-subscription" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.Notification" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.Notification" + schema: + $ref: "#/definitions/tapi.notification.NotificationWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/additional-info={value-name}/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.common.NameAndValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of additional-info" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/alarm-info/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.AlarmInfo" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.AlarmInfo" + schema: + $ref: "#/definitions/tapi.notification.AlarmInfoWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/changed-attributes={value-name}/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.NameAndValueChange" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of changed-attributes" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.NameAndValueChange" + schema: + $ref: "#/definitions/tapi.notification.NameAndValueChangeWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/name={value-name}/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/target-object-name={value-name}/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.common.NameAndValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of target-object-name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-notification:notification-context/notification={uuid}/tca-info/: + get: + tags: + - "tapi-notification" + summary: "returns tapi.notification.TcaInfo" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of notification" + required: true + type: "string" + responses: + 200: + description: "tapi.notification.TcaInfo" + schema: + $ref: "#/definitions/tapi.notification.TcaInfoWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-path-computation:path-computation-context/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.PathComputationContext" + description: "Augments the base TAPI Context with PathComputationService information" + parameters: [] + responses: + 200: + description: "tapi.path.computation.PathComputationContext" + schema: + $ref: "#/definitions/tapi.path.computation.PathComputationContextWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.path.computation.PathComputationContext" + description: "Augments the base TAPI Context with PathComputationService information" + parameters: + - in: "body" + name: "tapi.path.computation.PathComputationContext.body-param" + description: "tapi.path.computation.PathComputationContext to be added to\ + \ list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.PathComputationContextWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.path.computation.PathComputationContext" + description: "Augments the base TAPI Context with PathComputationService information" + parameters: + - in: "body" + name: "tapi.path.computation.PathComputationContext.body-param" + description: "tapi.path.computation.PathComputationContext to be added or\ + \ updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.PathComputationContextWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.path.computation.PathComputationContext" + description: "Augments the base TAPI Context with PathComputationService information" + parameters: [] + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service/: + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.path.computation.PathComputationService" + description: "none" + parameters: + - in: "body" + name: "tapi.path.computation.PathComputationService.body-param" + description: "tapi.path.computation.PathComputationService to be added to\ + \ list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.PathComputationServiceWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.PathComputationService" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.PathComputationService" + schema: + $ref: "#/definitions/tapi.path.computation.PathComputationServiceWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.path.computation.PathComputationService" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.PathComputationService.body-param" + description: "tapi.path.computation.PathComputationService to be added or\ + \ updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.PathComputationServiceWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.path.computation.PathComputationService" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point/: + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.path.computation.PathServiceEndPoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.PathServiceEndPoint.body-param" + description: "tapi.path.computation.PathServiceEndPoint to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.PathServiceEndPointWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.PathServiceEndPoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.PathServiceEndPoint" + schema: + $ref: "#/definitions/tapi.path.computation.PathServiceEndPointWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.path.computation.PathServiceEndPoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.PathServiceEndPoint.body-param" + description: "tapi.path.computation.PathServiceEndPoint to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.PathServiceEndPointWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.path.computation.PathServiceEndPoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.Capacity.body-param" + description: "tapi.common.Capacity to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.Capacity.body-param" + description: "tapi.common.Capacity to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.Capacity" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.BandwidthProfile.body-param" + description: "tapi.common.BandwidthProfile to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.BandwidthProfile.body-param" + description: "tapi.common.BandwidthProfile to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/capacity/total-size/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.CapacityValue.body-param" + description: "tapi.common.CapacityValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/name/: + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/name={value-name}/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/end-point={local-id}/service-interface-point/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.ServiceInterfacePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.ServiceInterfacePointRef" + schema: + $ref: "#/definitions/tapi.common.ServiceInterfacePointRefWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.ServiceInterfacePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.ServiceInterfacePointRef.body-param" + description: "tapi.common.ServiceInterfacePointRef to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.ServiceInterfacePointRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.ServiceInterfacePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + - in: "body" + name: "tapi.common.ServiceInterfacePointRef.body-param" + description: "tapi.common.ServiceInterfacePointRef to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.ServiceInterfacePointRefWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.ServiceInterfacePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of end-point" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/name/: + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/name={value-name}/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.PathObjectiveFunction" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.PathObjectiveFunction" + schema: + $ref: "#/definitions/tapi.path.computation.PathObjectiveFunctionWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.path.computation.PathObjectiveFunction" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.PathObjectiveFunction.body-param" + description: "tapi.path.computation.PathObjectiveFunction to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.PathObjectiveFunctionWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.path.computation.PathObjectiveFunction" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.PathObjectiveFunction.body-param" + description: "tapi.path.computation.PathObjectiveFunction to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.PathObjectiveFunctionWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.path.computation.PathObjectiveFunction" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/name/: + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/objective-function/name={value-name}/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.PathOptimizationConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.PathOptimizationConstraint" + schema: + $ref: "#/definitions/tapi.path.computation.PathOptimizationConstraintWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.path.computation.PathOptimizationConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.PathOptimizationConstraint.body-param" + description: "tapi.path.computation.PathOptimizationConstraint to be added\ + \ to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.PathOptimizationConstraintWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.path.computation.PathOptimizationConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.PathOptimizationConstraint.body-param" + description: "tapi.path.computation.PathOptimizationConstraint to be added\ + \ or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.PathOptimizationConstraintWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.path.computation.PathOptimizationConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/name/: + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/optimization-constraint/name={value-name}/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + - in: "body" + name: "tapi.common.NameAndValue.body-param" + description: "tapi.common.NameAndValue to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/path={path-uuid}/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.PathRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "path-uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.PathRef" + schema: + $ref: "#/definitions/tapi.path.computation.PathRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.RoutingConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.RoutingConstraint" + schema: + $ref: "#/definitions/tapi.path.computation.RoutingConstraintWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.path.computation.RoutingConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.RoutingConstraint.body-param" + description: "tapi.path.computation.RoutingConstraint to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.RoutingConstraintWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.path.computation.RoutingConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.RoutingConstraint.body-param" + description: "tapi.path.computation.RoutingConstraint to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.RoutingConstraintWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.path.computation.RoutingConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/cost-characteristic/ + : post: + tags: + - "tapi-path-computation" + summary: "creates tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.topology.CostCharacteristic.body-param" + description: "tapi.topology.CostCharacteristic to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/cost-characteristic={cost-name}/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.CostCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + - in: "body" + name: "tapi.topology.CostCharacteristic.body-param" + description: "tapi.topology.CostCharacteristic to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/latency-characteristic/ + : post: + tags: + - "tapi-path-computation" + summary: "creates tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.topology.LatencyCharacteristic.body-param" + description: "tapi.topology.LatencyCharacteristic to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/latency-characteristic={traffic-property-name}/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.LatencyCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + - in: "body" + name: "tapi.topology.LatencyCharacteristic.body-param" + description: "tapi.topology.LatencyCharacteristic to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-cost/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.ValueOrPriority" + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-delay/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.ValueOrPriority" + description: "Delay unit is microseconds." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.ValueOrPriority" + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.path.computation.ValueOrPriority" + description: "Delay unit is microseconds." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.path.computation.ValueOrPriority" + description: "Delay unit is microseconds." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.path.computation.ValueOrPriority" + description: "Delay unit is microseconds." + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/max-allowed-hops/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.ValueOrPriority" + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.ValueOrPriority.body-param" + description: "tapi.path.computation.ValueOrPriority to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/risk-diversity-characteristic/ + : post: + tags: + - "tapi-path-computation" + summary: "creates tapi.topology.RiskCharacteristic" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.topology.RiskCharacteristic.body-param" + description: "tapi.topology.RiskCharacteristic to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.topology.RiskCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/routing-constraint/risk-diversity-characteristic={risk-characteristic-name}/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.topology.RiskCharacteristic" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "risk-characteristic-name" + in: "path" + description: "Id of risk-diversity-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.RiskCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.RiskCharacteristicWrapper" + 400: + description: "Internal error" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.topology.RiskCharacteristic" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "risk-characteristic-name" + in: "path" + description: "Id of risk-diversity-characteristic" + required: true + type: "string" + - in: "body" + name: "tapi.topology.RiskCharacteristic.body-param" + description: "tapi.topology.RiskCharacteristic to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.topology.RiskCharacteristicWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.topology.RiskCharacteristic" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - name: "risk-characteristic-name" + in: "path" + description: "Id of risk-diversity-characteristic" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path-comp-service={uuid}/topology-constraint/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.TopologyConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.TopologyConstraint" + schema: + $ref: "#/definitions/tapi.path.computation.TopologyConstraintWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-path-computation" + summary: "creates tapi.path.computation.TopologyConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.TopologyConstraint.body-param" + description: "tapi.path.computation.TopologyConstraint to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.TopologyConstraintWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-path-computation" + summary: "creates or updates tapi.path.computation.TopologyConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + - in: "body" + name: "tapi.path.computation.TopologyConstraint.body-param" + description: "tapi.path.computation.TopologyConstraint to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.path.computation.TopologyConstraintWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-path-computation" + summary: "removes tapi.path.computation.TopologyConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path-comp-service" + required: true + type: "string" + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.Path" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.Path" + schema: + $ref: "#/definitions/tapi.path.computation.PathWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/link={topology-uuid},{link-uuid}/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.topology.LinkRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.LinkRef" + schema: + $ref: "#/definitions/tapi.topology.LinkRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/name={value-name}/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.RoutingConstraint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.RoutingConstraint" + schema: + $ref: "#/definitions/tapi.path.computation.RoutingConstraintWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/cost-characteristic={cost-name}/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.CostCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/latency-characteristic={traffic-property-name}/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.LatencyCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/max-allowed-cost/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.ValueOrPriority" + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/max-allowed-delay/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.ValueOrPriority" + description: "Delay unit is microseconds." + parameters: + - name: "uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.ValueOrPriority" + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/max-allowed-hops/: + get: + tags: + - "tapi-path-computation" + summary: "returns tapi.path.computation.ValueOrPriority" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + responses: + 200: + description: "tapi.path.computation.ValueOrPriority" + schema: + $ref: "#/definitions/tapi.path.computation.ValueOrPriorityWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-path-computation:path-computation-context/path={uuid}/routing-constraint/risk-diversity-characteristic={risk-characteristic-name}/ + : get: + tags: + - "tapi-path-computation" + summary: "returns tapi.topology.RiskCharacteristic" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of path" + required: true + type: "string" + - name: "risk-characteristic-name" + in: "path" + description: "Id of risk-diversity-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.RiskCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.RiskCharacteristicWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.context.TopologyContext" + description: "Augments the base TAPI Context with TopologyService information" + parameters: [] + responses: + 200: + description: "tapi.topology.TopologyContext" + schema: + $ref: "#/definitions/tapi.topology.TopologyContextWrapper" + 400: + description: "Internal error" + post: + tags: + - "tapi-topology" + summary: "creates tapi.topology.context.TopologyContext" + description: "Augments the base TAPI Context with TopologyService information" + parameters: + - in: "body" + name: "tapi.topology.context.TopologyContext.body-param" + description: "tapi.topology.TopologyContext to be added to list" + required: false + schema: + $ref: "#/definitions/tapi.topology.TopologyContextWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 409: + description: "Object already exists" + put: + tags: + - "tapi-topology" + summary: "creates or updates tapi.topology.context.TopologyContext" + description: "Augments the base TAPI Context with TopologyService information" + parameters: + - in: "body" + name: "tapi.topology.context.TopologyContext.body-param" + description: "tapi.topology.TopologyContext to be added or updated" + required: false + schema: + $ref: "#/definitions/tapi.topology.TopologyContextWrapper" + responses: + 201: + description: "Object created" + 400: + description: "Internal error" + 204: + description: "Object modified" + delete: + tags: + - "tapi-topology" + summary: "removes tapi.topology.context.TopologyContext" + description: "Augments the base TAPI Context with TopologyService information" + parameters: [] + responses: + 400: + description: "Internal error" + 204: + description: "Object deleted" + /data/tapi-common:context/tapi-topology:topology-context/nw-topology-service/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.NetworkTopologyService" + description: "none" + parameters: [] + responses: + 200: + description: "tapi.topology.NetworkTopologyService" + schema: + $ref: "#/definitions/tapi.topology.NetworkTopologyServiceWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/nw-topology-service/name={value-name}/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/nw-topology-service/topology={topology-uuid}/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.TopologyRef" + description: "none" + parameters: + - name: "topology-uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.TopologyRef" + schema: + $ref: "#/definitions/tapi.topology.TopologyRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.topologycontext.Topology" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.Topology" + schema: + $ref: "#/definitions/tapi.topology.TopologyWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.Link" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.Link" + schema: + $ref: "#/definitions/tapi.topology.LinkWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.Capacity" + description: "Capacity available to be assigned." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/available-capacity/total-size/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/cost-characteristic={cost-name}/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.CostCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/latency-characteristic={traffic-property-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.LatencyCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/name={value-name}/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/node-edge-point={topology-uuid},{node-uuid},{node-edge-point-uuid}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.NodeEdgePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of node-edge-point" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node-edge-point" + required: true + type: "string" + - name: "node-edge-point-uuid" + in: "path" + description: "Id of node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.NodeEdgePointRef" + schema: + $ref: "#/definitions/tapi.topology.NodeEdgePointRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/resilience-type/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.ResilienceType" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.ResilienceType" + schema: + $ref: "#/definitions/tapi.topology.ResilienceTypeWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/risk-characteristic={risk-characteristic-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.RiskCharacteristic" + description: "A list of risk characteristics for consideration in an analysis\ + \ of shared risk. Each element of the list represents a specific risk consideration." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + - name: "risk-characteristic-name" + in: "path" + description: "Id of risk-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.RiskCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.RiskCharacteristicWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.Capacity" + description: "An optimistic view of the capacity of the TopologicalEntity assuming\ + \ that any shared capacity is available to be taken." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/total-potential-capacity/total-size/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/link={link-uuid}/validation-mechanism={validation-mechanism}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.ValidationMechanism" + description: "Provides details of the specific validation mechanism(s) used\ + \ to confirm the presence of an intended topologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "link-uuid" + in: "path" + description: "Id of link" + required: true + type: "string" + - name: "validation-mechanism" + in: "path" + description: "Id of validation-mechanism" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.ValidationMechanism" + schema: + $ref: "#/definitions/tapi.topology.ValidationMechanismWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/name={value-name}/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.topology.Node" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.topology.Node" + schema: + $ref: "#/definitions/tapi.topology.topology.NodeWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/aggregated-node-edge-point={topology-uuid},{aggregated-node-edge-point-node-uuid},{node-edge-point-uuid}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.NodeEdgePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of aggregated-node-edge-point" + required: true + type: "string" + - name: "aggregated-node-edge-point-node-uuid" + in: "path" + description: "Id of aggregated-node-edge-point" + required: true + type: "string" + - name: "node-edge-point-uuid" + in: "path" + description: "Id of aggregated-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.NodeEdgePointRef" + schema: + $ref: "#/definitions/tapi.topology.NodeEdgePointRefWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.Capacity" + description: "Capacity available to be assigned." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/available-capacity/total-size/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/cost-characteristic={cost-name}/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.CostCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/encap-topology/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.TopologyRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.TopologyRef" + schema: + $ref: "#/definitions/tapi.topology.TopologyRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/latency-characteristic={traffic-property-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.LatencyCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/name={value-name}/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.NodeRuleGroup" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.NodeRuleGroup" + schema: + $ref: "#/definitions/tapi.topology.NodeRuleGroupWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.Capacity" + description: "Capacity available to be assigned." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/available-capacity/total-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/cost-characteristic={cost-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.CostCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.InterRuleGroup" + description: "Nested NodeRuleGroups may have InterRuleGroups. The Superior NodeRuleGroup\ + \ contains the nested NodeRuleGroups and their associated InterRuleGroups.\r\ + \n This is equivalent to the Node-Topology hierarchy." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.InterRuleGroup" + schema: + $ref: "#/definitions/tapi.topology.InterRuleGroupWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/associated-node-rule-group={topology-uuid},{associated-node-rule-group-node-uuid},{associated-node-rule-group-node-rule-group-uuid}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.NodeRuleGroupRef" + description: "The NodeRuleGroups that the InterRuleGroup constrains interconnection\ + \ between.\r\n The CEPs of the NEPs of a referenced NodeRuleGroup\ + \ can interconnect to the CEPs of the NEPs of another referenced NodeRuleGroup\ + \ constrained by the rules of the InterRuleGroup." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of associated-node-rule-group" + required: true + type: "string" + - name: "associated-node-rule-group-node-uuid" + in: "path" + description: "Id of associated-node-rule-group" + required: true + type: "string" + - name: "associated-node-rule-group-node-rule-group-uuid" + in: "path" + description: "Id of associated-node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.NodeRuleGroupRef" + schema: + $ref: "#/definitions/tapi.topology.NodeRuleGroupRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.Capacity" + description: "Capacity available to be assigned." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/available-capacity/total-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/cost-characteristic={cost-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.CostCharacteristic" + description: "The list of costs where each cost relates to some aspect of the\ + \ TopologicalEntity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + - name: "cost-name" + in: "path" + description: "Id of cost-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.CostCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.CostCharacteristicWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/latency-characteristic={traffic-property-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.LatencyCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/name={value-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/risk-characteristic={risk-characteristic-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.RiskCharacteristic" + description: "A list of risk characteristics for consideration in an analysis\ + \ of shared risk. Each element of the list represents a specific risk consideration." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + - name: "risk-characteristic-name" + in: "path" + description: "Id of risk-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.RiskCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.RiskCharacteristicWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.Rule" + description: "The list of rules of the InterRuleGroup." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of rule" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.Rule" + schema: + $ref: "#/definitions/tapi.topology.RuleWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/cep-port-role/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.PortRoleRule" + description: "Indicates the port role to which the rule applies. \r\n \ + \ The port role is interpreted in the context of the connection type\ + \ which is identified by the connection spec. \r\n The port\ + \ role is not meaningful in the absence of a connection spec reference.\r\n\ + \ If a node rule group carries a port role, that role applies\ + \ also to the associated inter rule where the combination of the roles in\ + \ the node rule groups at the ends of the inter group rule define the connection\ + \ orientation.\r\n For example a root-and-leaf connection may\ + \ be used in a node where a node rule group collects one set of NEPs has the\ + \ port role 'root' and another node rule group collects another set of NEPs\ + \ has the port role 'leaf' where these are joined by an inter rule group.\ + \ This combination specifies an allowed orientation of the root-and-leaf connection.\r\ + \n No port role statement means all port roles are allowed." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of rule" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.PortRoleRule" + schema: + $ref: "#/definitions/tapi.topology.PortRoleRuleWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/connection-spec-reference/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.ConnectionSpecReference" + description: "Identifies the type of connection that the rule applies to. \r\ + \n If the attribute is not present then the rule applies to\ + \ all types of connection supported by the device." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of rule" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.ConnectionSpecReference" + schema: + $ref: "#/definitions/tapi.topology.ConnectionSpecReferenceWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/name={value-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of rule" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/rule={local-id}/signal-property/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.SignalPropertyRule" + description: "The rule only applies to signals with the properties listed. \r\ + \n If the attribute is not present then the rule applies to\ + \ all signals." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of rule" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.SignalPropertyRule" + schema: + $ref: "#/definitions/tapi.topology.SignalPropertyRuleWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.Capacity" + description: "An optimistic view of the capacity of the TopologicalEntity assuming\ + \ that any shared capacity is available to be taken." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/inter-rule-group={inter-rule-group-uuid}/total-potential-capacity/total-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "inter-rule-group-uuid" + in: "path" + description: "Id of inter-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/latency-characteristic={traffic-property-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.LatencyCharacteristic" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "traffic-property-name" + in: "path" + description: "Id of latency-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.LatencyCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.LatencyCharacteristicWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/name={value-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/node-edge-point={topology-uuid},{node-edge-point-node-uuid},{node-edge-point-uuid}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.NodeEdgePointRef" + description: "NEPs and their client CEPs that the rules apply to." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of node-edge-point" + required: true + type: "string" + - name: "node-edge-point-node-uuid" + in: "path" + description: "Id of node-edge-point" + required: true + type: "string" + - name: "node-edge-point-uuid" + in: "path" + description: "Id of node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.NodeEdgePointRef" + schema: + $ref: "#/definitions/tapi.topology.NodeEdgePointRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/node-rule-group={topology-uuid},{node-rule-group-node-uuid},{node-rule-group-node-rule-group-uuid}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.NodeRuleGroupRef" + description: "NodeRuleGroups may be nested such that finer grained rules may\ + \ be applied.\r\n A nested rule group should have a subset\ + \ of the NEPs of the superior rule group." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "node-rule-group-node-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "node-rule-group-node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.NodeRuleGroupRef" + schema: + $ref: "#/definitions/tapi.topology.NodeRuleGroupRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/risk-characteristic={risk-characteristic-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.RiskCharacteristic" + description: "A list of risk characteristics for consideration in an analysis\ + \ of shared risk. Each element of the list represents a specific risk consideration." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "risk-characteristic-name" + in: "path" + description: "Id of risk-characteristic" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.RiskCharacteristic" + schema: + $ref: "#/definitions/tapi.topology.RiskCharacteristicWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.Rule" + description: "The list of rules of the NodeRuleGroup." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of rule" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.Rule" + schema: + $ref: "#/definitions/tapi.topology.RuleWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/cep-port-role/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.PortRoleRule" + description: "Indicates the port role to which the rule applies. \r\n \ + \ The port role is interpreted in the context of the connection type\ + \ which is identified by the connection spec. \r\n The port\ + \ role is not meaningful in the absence of a connection spec reference.\r\n\ + \ If a node rule group carries a port role, that role applies\ + \ also to the associated inter rule where the combination of the roles in\ + \ the node rule groups at the ends of the inter group rule define the connection\ + \ orientation.\r\n For example a root-and-leaf connection may\ + \ be used in a node where a node rule group collects one set of NEPs has the\ + \ port role 'root' and another node rule group collects another set of NEPs\ + \ has the port role 'leaf' where these are joined by an inter rule group.\ + \ This combination specifies an allowed orientation of the root-and-leaf connection.\r\ + \n No port role statement means all port roles are allowed." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of rule" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.PortRoleRule" + schema: + $ref: "#/definitions/tapi.topology.PortRoleRuleWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/connection-spec-reference/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.ConnectionSpecReference" + description: "Identifies the type of connection that the rule applies to. \r\ + \n If the attribute is not present then the rule applies to\ + \ all types of connection supported by the device." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of rule" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.ConnectionSpecReference" + schema: + $ref: "#/definitions/tapi.topology.ConnectionSpecReferenceWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/name={value-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of rule" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/rule={local-id}/signal-property/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.SignalPropertyRule" + description: "The rule only applies to signals with the properties listed. \r\ + \n If the attribute is not present then the rule applies to\ + \ all signals." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + - name: "local-id" + in: "path" + description: "Id of rule" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.SignalPropertyRule" + schema: + $ref: "#/definitions/tapi.topology.SignalPropertyRuleWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.Capacity" + description: "An optimistic view of the capacity of the TopologicalEntity assuming\ + \ that any shared capacity is available to be taken." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/node-rule-group={node-rule-group-uuid}/total-potential-capacity/total-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "node-rule-group-uuid" + in: "path" + description: "Id of node-rule-group" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.node.OwnedNodeEdgePoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.node.OwnedNodeEdgePoint" + schema: + $ref: "#/definitions/tapi.topology.node.OwnedNodeEdgePointWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/aggregated-node-edge-point={topology-uuid},{aggregated-node-edge-point-node-uuid},{node-edge-point-uuid}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.topology.NodeEdgePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of aggregated-node-edge-point" + required: true + type: "string" + - name: "aggregated-node-edge-point-node-uuid" + in: "path" + description: "Id of aggregated-node-edge-point" + required: true + type: "string" + - name: "node-edge-point-uuid" + in: "path" + description: "Id of aggregated-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.NodeEdgePointRef" + schema: + $ref: "#/definitions/tapi.topology.NodeEdgePointRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.Capacity" + description: "Capacity available to be assigned." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/available-capacity/total-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/mapped-service-interface-point={service-interface-point-uuid}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.ServiceInterfacePointRef" + description: "NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing)\ + \ or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience)\ + \ should be considered experimental" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + - name: "service-interface-point-uuid" + in: "path" + description: "Id of mapped-service-interface-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.ServiceInterfacePointRef" + schema: + $ref: "#/definitions/tapi.common.ServiceInterfacePointRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/name={value-name}/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.CepList" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.CepList" + schema: + $ref: "#/definitions/tapi.connectivity.CepListWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectionEndPoint" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectionEndPoint" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/aggregated-connection-end-point={topology-uuid},{aggregated-connection-end-point-node-uuid},{node-edge-point-uuid},{aggregated-connection-end-point-connection-end-point-uuid}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectionEndPointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of aggregated-connection-end-point" + required: true + type: "string" + - name: "aggregated-connection-end-point-node-uuid" + in: "path" + description: "Id of aggregated-connection-end-point" + required: true + type: "string" + - name: "node-edge-point-uuid" + in: "path" + description: "Id of aggregated-connection-end-point" + required: true + type: "string" + - name: "aggregated-connection-end-point-connection-end-point-uuid" + in: "path" + description: "Id of aggregated-connection-end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectionEndPointRef" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/cep-role/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.CepRole" + description: "Defines the role of the CEP in the context of the connection spec.\r\ + \n There may be many cep role - connection spec combinations\ + \ for a particular CEP where each corresponds to a specific connection associated\ + \ with the CEP." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.CepRole" + schema: + $ref: "#/definitions/tapi.connectivity.CepRoleWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/cep-role/connection-spec-reference/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.connectivity.ConnectionSpecReference" + description: "The reference to the spec that defines the cep role." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.connectivity.ConnectionSpecReference" + schema: + $ref: "#/definitions/tapi.connectivity.ConnectionSpecReferenceWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/client-node-edge-point={topology-uuid},{client-node-edge-point-node-uuid},{node-edge-point-uuid}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.topology.NodeEdgePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "topology-uuid" + in: "path" + description: "Id of client-node-edge-point" + required: true + type: "string" + - name: "client-node-edge-point-node-uuid" + in: "path" + description: "Id of client-node-edge-point" + required: true + type: "string" + - name: "node-edge-point-uuid" + in: "path" + description: "Id of client-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.NodeEdgePointRef" + schema: + $ref: "#/definitions/tapi.topology.NodeEdgePointRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/name={value-name}/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.common.NameAndValue" + description: "List of names. A property of an entity with a value that is unique\ + \ in some namespace but may change during the life of the entity. A name carries\ + \ no semantics with respect to the purpose of the entity." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + - name: "value-name" + in: "path" + description: "Id of name" + required: true + type: "string" + responses: + 200: + description: "tapi.common.NameAndValue" + schema: + $ref: "#/definitions/tapi.common.NameAndValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/tapi-connectivity:cep-list/connection-end-point={connection-end-point-uuid}/parent-node-edge-point/ + : get: + tags: + - "tapi-connectivity" + summary: "returns tapi.topology.NodeEdgePointRef" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + - name: "connection-end-point-uuid" + in: "path" + description: "Id of connection-end-point" + required: true + type: "string" + responses: + 200: + description: "tapi.topology.NodeEdgePointRef" + schema: + $ref: "#/definitions/tapi.topology.NodeEdgePointRefWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.Capacity" + description: "An optimistic view of the capacity of the TopologicalEntity assuming\ + \ that any shared capacity is available to be taken." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/owned-node-edge-point={owned-node-edge-point-uuid}/total-potential-capacity/total-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + - name: "owned-node-edge-point-uuid" + in: "path" + description: "Id of owned-node-edge-point" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.Capacity" + description: "An optimistic view of the capacity of the TopologicalEntity assuming\ + \ that any shared capacity is available to be taken." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.Capacity" + schema: + $ref: "#/definitions/tapi.common.CapacityWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.BandwidthProfile" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.BandwidthProfile" + schema: + $ref: "#/definitions/tapi.common.BandwidthProfileWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/committed-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/committed-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/peak-burst-size/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + ? /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/bandwidth-profile/peak-information-rate/ + : get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "none" + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /data/tapi-common:context/tapi-topology:topology-context/topology={uuid}/node={node-uuid}/total-potential-capacity/total-size/: + get: + tags: + - "tapi-topology" + summary: "returns tapi.common.CapacityValue" + description: "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile,\ + \ this is expected to same as the committedInformationRate." + parameters: + - name: "uuid" + in: "path" + description: "Id of topology" + required: true + type: "string" + - name: "node-uuid" + in: "path" + description: "Id of node" + required: true + type: "string" + responses: + 200: + description: "tapi.common.CapacityValue" + schema: + $ref: "#/definitions/tapi.common.CapacityValueWrapper" + 400: + description: "Internal error" + /operations/tapi-common:get-service-interface-point-details/: + post: + tags: + - "tapi-common" + summary: "operates on tapi.common.GetServiceInterfacePointDetails" + description: "operates on tapi.common.GetServiceInterfacePointDetails" + parameters: + - in: "body" + name: "tapi.common.getserviceinterfacepointdetails.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.common.getserviceinterfacepointdetails.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.common.GetServiceInterfacePointDetails" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-common:get-service-interface-point-list/: + post: + tags: + - "tapi-common" + parameters: [] + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.common.GetServiceInterfacePointList" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-common:update-service-interface-point/: + post: + tags: + - "tapi-common" + summary: "operates on tapi.common.UpdateServiceInterfacePoint" + description: "operates on tapi.common.UpdateServiceInterfacePoint" + parameters: + - in: "body" + name: "tapi.common.updateserviceinterfacepoint.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.common.updateserviceinterfacepoint.Input" + responses: + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-connectivity:create-connectivity-service/: + post: + tags: + - "tapi-connectivity" + summary: "operates on tapi.connectivity.CreateConnectivityService" + description: "operates on tapi.connectivity.CreateConnectivityService" + parameters: + - in: "body" + name: "tapi.connectivity.createconnectivityservice.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.connectivity.createconnectivityservice.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.connectivity.CreateConnectivityService" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-connectivity:delete-connectivity-service/: + post: + tags: + - "tapi-connectivity" + summary: "operates on tapi.connectivity.DeleteConnectivityService" + description: "operates on tapi.connectivity.DeleteConnectivityService" + parameters: + - in: "body" + name: "tapi.connectivity.deleteconnectivityservice.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.connectivity.deleteconnectivityservice.Input" + responses: + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-connectivity:get-connection-details/: + post: + tags: + - "tapi-connectivity" + summary: "operates on tapi.connectivity.GetConnectionDetails" + description: "operates on tapi.connectivity.GetConnectionDetails" + parameters: + - in: "body" + name: "tapi.connectivity.getconnectiondetails.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.connectivity.getconnectiondetails.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.connectivity.GetConnectionDetails" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-connectivity:get-connection-end-point-details/: + post: + tags: + - "tapi-connectivity" + summary: "operates on tapi.connectivity.GetConnectionEndPointDetails" + description: "operates on tapi.connectivity.GetConnectionEndPointDetails" + parameters: + - in: "body" + name: "tapi.connectivity.getconnectionendpointdetails.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.connectivity.getconnectionendpointdetails.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.connectivity.GetConnectionEndPointDetails" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-connectivity:get-connectivity-service-details/: + post: + tags: + - "tapi-connectivity" + summary: "operates on tapi.connectivity.GetConnectivityServiceDetails" + description: "operates on tapi.connectivity.GetConnectivityServiceDetails" + parameters: + - in: "body" + name: "tapi.connectivity.getconnectivityservicedetails.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.connectivity.getconnectivityservicedetails.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.connectivity.GetConnectivityServiceDetails" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-connectivity:get-connectivity-service-list/: + post: + tags: + - "tapi-connectivity" + parameters: [] + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.connectivity.GetConnectivityServiceList" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-connectivity:update-connectivity-service/: + post: + tags: + - "tapi-connectivity" + summary: "operates on tapi.connectivity.UpdateConnectivityService" + description: "operates on tapi.connectivity.UpdateConnectivityService" + parameters: + - in: "body" + name: "tapi.connectivity.updateconnectivityservice.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.connectivity.updateconnectivityservice.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.connectivity.UpdateConnectivityService" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-notification:create-notification-subscription-service/: + post: + tags: + - "tapi-notification" + summary: "operates on tapi.notification.CreateNotificationSubscriptionService" + description: "operates on tapi.notification.CreateNotificationSubscriptionService" + parameters: + - in: "body" + name: "tapi.notification.createnotificationsubscriptionservice.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.notification.createnotificationsubscriptionservice.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.notification.CreateNotificationSubscriptionService" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-notification:delete-notification-subscription-service/: + post: + tags: + - "tapi-notification" + summary: "operates on tapi.notification.DeleteNotificationSubscriptionService" + description: "operates on tapi.notification.DeleteNotificationSubscriptionService" + parameters: + - in: "body" + name: "tapi.notification.deletenotificationsubscriptionservice.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.notification.deletenotificationsubscriptionservice.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.notification.DeleteNotificationSubscriptionService" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-notification:get-notification-list/: + post: + tags: + - "tapi-notification" + summary: "operates on tapi.notification.GetNotificationList" + description: "operates on tapi.notification.GetNotificationList" + parameters: + - in: "body" + name: "tapi.notification.getnotificationlist.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.notification.getnotificationlist.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.notification.GetNotificationList" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-notification:get-notification-subscription-service-details/: + post: + tags: + - "tapi-notification" + summary: "operates on tapi.notification.GetNotificationSubscriptionServiceDetails" + description: "operates on tapi.notification.GetNotificationSubscriptionServiceDetails" + parameters: + - in: "body" + name: "tapi.notification.getnotificationsubscriptionservicedetails.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.notification.getnotificationsubscriptionservicedetails.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.notification.GetNotificationSubscriptionServiceDetails" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-notification:get-notification-subscription-service-list/: + post: + tags: + - "tapi-notification" + parameters: [] + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.notification.GetNotificationSubscriptionServiceList" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-notification:get-supported-notification-types/: + post: + tags: + - "tapi-notification" + parameters: [] + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.notification.GetSupportedNotificationTypes" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-notification:update-notification-subscription-service/: + post: + tags: + - "tapi-notification" + summary: "operates on tapi.notification.UpdateNotificationSubscriptionService" + description: "operates on tapi.notification.UpdateNotificationSubscriptionService" + parameters: + - in: "body" + name: "tapi.notification.updatenotificationsubscriptionservice.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.notification.updatenotificationsubscriptionservice.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.notification.UpdateNotificationSubscriptionService" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-path-computation:compute-p-2-p-path/: + post: + tags: + - "tapi-path-computation" + summary: "operates on tapi.path.computation.ComputeP2PPath" + description: "operates on tapi.path.computation.ComputeP2PPath" + parameters: + - in: "body" + name: "tapi.path.computation.computep2ppath.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.path.computation.computep2ppath.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.path.computation.ComputeP2PPath" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-path-computation:delete-p-2-p-path/: + post: + tags: + - "tapi-path-computation" + summary: "operates on tapi.path.computation.DeleteP2PPath" + description: "operates on tapi.path.computation.DeleteP2PPath" + parameters: + - in: "body" + name: "tapi.path.computation.deletep2ppath.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.path.computation.deletep2ppath.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.path.computation.DeleteP2PPath" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-path-computation:optimize-p-2-ppath/: + post: + tags: + - "tapi-path-computation" + summary: "operates on tapi.path.computation.OptimizeP2Ppath" + description: "operates on tapi.path.computation.OptimizeP2Ppath" + parameters: + - in: "body" + name: "tapi.path.computation.optimizep2ppath.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.path.computation.optimizep2ppath.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.path.computation.OptimizeP2Ppath" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-topology:get-link-details/: + post: + tags: + - "tapi-topology" + summary: "operates on tapi.topology.GetLinkDetails" + description: "operates on tapi.topology.GetLinkDetails" + parameters: + - in: "body" + name: "tapi.topology.getlinkdetails.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.topology.getlinkdetails.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.topology.GetLinkDetails" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-topology:get-node-details/: + post: + tags: + - "tapi-topology" + summary: "operates on tapi.topology.GetNodeDetails" + description: "operates on tapi.topology.GetNodeDetails" + parameters: + - in: "body" + name: "tapi.topology.getnodedetails.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.topology.getnodedetails.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.topology.GetNodeDetails" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-topology:get-node-edge-point-details/: + post: + tags: + - "tapi-topology" + summary: "operates on tapi.topology.GetNodeEdgePointDetails" + description: "operates on tapi.topology.GetNodeEdgePointDetails" + parameters: + - in: "body" + name: "tapi.topology.getnodeedgepointdetails.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.topology.getnodeedgepointdetails.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.topology.GetNodeEdgePointDetails" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-topology:get-topology-details/: + post: + tags: + - "tapi-topology" + summary: "operates on tapi.topology.GetTopologyDetails" + description: "operates on tapi.topology.GetTopologyDetails" + parameters: + - in: "body" + name: "tapi.topology.gettopologydetails.Input.body-param" + required: false + schema: + properties: + input: + $ref: "#/definitions/tapi.topology.gettopologydetails.Input" + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.topology.GetTopologyDetails" + 201: + description: "No response" + 400: + description: "Internal error" + /operations/tapi-topology:get-topology-list/: + post: + tags: + - "tapi-topology" + parameters: [] + responses: + 200: + description: "Correct response" + schema: + $ref: "#/definitions/tapi.topology.GetTopologyList" + 201: + description: "No response" + 400: + description: "Internal error" +definitions: + tapi.common.AdminStatePac: + type: "object" + properties: + operational-state: + description: "none" + $ref: "#/definitions/tapi.common.OperationalState" + lifecycle-state: + description: "none" + $ref: "#/definitions/tapi.common.LifecycleState" + administrative-state: + description: "none" + $ref: "#/definitions/tapi.common.AdministrativeState" + tapi.common.AdministrativeState: + type: "string" + enum: + - "LOCKED" + - "UNLOCKED" + tapi.common.BandwidthProfile: + type: "object" + properties: + committed-information-rate: + description: "none" + $ref: "#/definitions/tapi.common.CapacityValue" + coupling-flag: + type: "boolean" + description: "none" + default: false + bw-profile-type: + description: "none" + $ref: "#/definitions/tapi.common.BandwidthProfileType" + peak-information-rate: + description: "none" + $ref: "#/definitions/tapi.common.CapacityValue" + committed-burst-size: + description: "none" + $ref: "#/definitions/tapi.common.CapacityValue" + peak-burst-size: + description: "none" + $ref: "#/definitions/tapi.common.CapacityValue" + color-aware: + type: "boolean" + description: "none" + default: false + tapi.common.BandwidthProfileType: + type: "string" + enum: + - "MEF_10.x" + - "RFC_2697" + - "RFC_2698" + - "RFC_4115" + tapi.common.BandwidthProfileWrapper: + properties: + bandwidth-profile: + $ref: "#/definitions/tapi.common.BandwidthProfile" + tapi.common.Capacity: + type: "object" + properties: + bandwidth-profile: + description: "none" + $ref: "#/definitions/tapi.common.BandwidthProfile" + total-size: + description: "Total capacity of the TopologicalEntity in MB/s. In case of\ + \ bandwidthProfile, this is expected to same as the committedInformationRate." + $ref: "#/definitions/tapi.common.CapacityValue" + tapi.common.CapacityPac: + type: "object" + properties: + available-capacity: + description: "Capacity available to be assigned." + $ref: "#/definitions/tapi.common.Capacity" + total-potential-capacity: + description: "An optimistic view of the capacity of the TopologicalEntity\ + \ assuming that any shared capacity is available to be taken." + $ref: "#/definitions/tapi.common.Capacity" + tapi.common.CapacityUnit: + type: "string" + enum: + - "TB" + - "TBPS" + - "GB" + - "GBPS" + - "MB" + - "MBPS" + - "KB" + - "KBPS" + - "GHz" + - "MHz" + tapi.common.CapacityValue: + type: "object" + properties: + value: + type: "integer" + format: "int32" + description: "none" + unit: + description: "none" + $ref: "#/definitions/tapi.common.CapacityUnit" + tapi.common.CapacityValueWrapper: + properties: + committed-burst-size: + $ref: "#/definitions/tapi.common.CapacityValue" + tapi.common.CapacityWrapper: + properties: + available-capacity: + $ref: "#/definitions/tapi.common.Capacity" + tapi.common.Context: + allOf: + - $ref: "#/definitions/tapi.common.TapiContext" + - $ref: "#/definitions/tapi.connectivity.ContextAugmentation3" + - $ref: "#/definitions/tapi.notification.ContextAugmentation1" + - $ref: "#/definitions/tapi.path.computation.ContextAugmentation2" + - $ref: "#/definitions/tapi.topology.ContextAugmentation4" + tapi.common.ContextWrapper: + properties: + tapi-common:context: + $ref: "#/definitions/tapi.common.Context" + tapi.common.DirectiveValue: + type: "string" + enum: + - "MINIMIZE" + - "MAXIMIZE" + - "ALLOW" + - "DISALLOW" + - "DONT_CARE" + tapi.common.ForwardingDirection: + type: "string" + enum: + - "BIDIRECTIONAL" + - "UNIDIRECTIONAL" + - "UNDEFINED_OR_UNKNOWN" + tapi.common.GetServiceInterfacePointDetails: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.common.getserviceinterfacepointdetails.Output" + tapi.common.GetServiceInterfacePointList: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.common.getserviceinterfacepointlist.Output" + tapi.common.GlobalClass: + type: "object" + properties: + name: + type: "array" + description: "List of names. A property of an entity with a value that is\ + \ unique in some namespace but may change during the life of the entity.\ + \ A name carries no semantics with respect to the purpose of the entity." + items: + $ref: "#/definitions/tapi.common.NameAndValue" + uuid: + type: "string" + description: "UUID: An identifier that is universally unique within an identifier\ + \ space, where the identifier space is itself globally unique, and immutable.\ + \ An UUID carries no semantics with respect to the purpose or state of the\ + \ entity.\r\n UUID here uses string representation as defined\ + \ in RFC 4122. The canonical representation uses lowercase characters.\r\ + \n Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'\ + \ + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} \r\n Example of a UUID\ + \ in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6" + tapi.common.LayerProtocolName: + type: "string" + enum: + - "ODU" + - "ETH" + - "DSR" + - "PHOTONIC_MEDIA" + tapi.common.LifecycleState: + type: "string" + enum: + - "PLANNED" + - "POTENTIAL_AVAILABLE" + - "POTENTIAL_BUSY" + - "INSTALLED" + - "PENDING_REMOVAL" + tapi.common.LocalClass: + type: "object" + properties: + name: + type: "array" + description: "List of names. A property of an entity with a value that is\ + \ unique in some namespace but may change during the life of the entity.\ + \ A name carries no semantics with respect to the purpose of the entity." + items: + $ref: "#/definitions/tapi.common.NameAndValue" + local-id: + type: "string" + description: "none" + tapi.common.NameAndValue: + type: "object" + properties: + value-name: + type: "string" + description: "The name of the value. The value need not have a name." + value: + type: "string" + description: "The value" + tapi.common.NameAndValueWrapper: + properties: + name: + $ref: "#/definitions/tapi.common.NameAndValue" + tapi.common.OperationalState: + type: "string" + enum: + - "DISABLED" + - "ENABLED" + tapi.common.OperationalStatePac: + type: "object" + properties: + operational-state: + description: "none" + $ref: "#/definitions/tapi.common.OperationalState" + lifecycle-state: + description: "none" + $ref: "#/definitions/tapi.common.LifecycleState" + tapi.common.PortDirection: + type: "string" + enum: + - "BIDIRECTIONAL" + - "INPUT" + - "OUTPUT" + - "UNIDENTIFIED_OR_UNKNOWN" + tapi.common.PortRole: + type: "string" + enum: + - "SYMMETRIC" + - "ROOT" + - "LEAF" + - "TRUNK" + - "UNKNOWN" + tapi.common.ServiceInterfacePoint: + allOf: + - $ref: "#/definitions/tapi.common.AdminStatePac" + - $ref: "#/definitions/tapi.common.CapacityPac" + - $ref: "#/definitions/tapi.common.GlobalClass" + - type: "object" + properties: + supported-layer-protocol-qualifier: + type: "array" + description: "none" + items: + type: "string" + layer-protocol-name: + description: "Usage of layerProtocolName [>1] in the ServiceInterfacePoint\ + \ should be considered experimental" + $ref: "#/definitions/tapi.common.LayerProtocolName" + direction: + description: "If direction attribute is missing the SIP instance is to be\ + \ intended as 'BIDIRECTIONAL'" + $ref: "#/definitions/tapi.common.PortDirection" + description: "The LogicalTerminationPoint (LTP) object class encapsulates the\ + \ termination and adaptation functions of one or more transport layers. \r\ + \n The structure of LTP supports all transport protocols including\ + \ circuit and packet forms." + tapi.common.ServiceInterfacePointRef: + type: "object" + properties: + service-interface-point-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid" + tapi.common.ServiceInterfacePointRefWrapper: + properties: + service-interface-point: + $ref: "#/definitions/tapi.common.ServiceInterfacePointRef" + tapi.common.ServiceInterfacePointWrapper: + properties: + service-interface-point: + $ref: "#/definitions/tapi.common.ServiceInterfacePoint" + tapi.common.TapiContext: + allOf: + - $ref: "#/definitions/tapi.common.GlobalClass" + - type: "object" + properties: + service-interface-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.common.ServiceInterfacePoint" + description: "The Network Control Domain (NCD) object class represents the scope\ + \ of control that a particular SDN controller has with respect to a particular\ + \ network, (i.e., encompassing a designated set of interconnected (virtual)\ + \ network elements)." + tapi.common.TerminationDirection: + type: "string" + enum: + - "BIDIRECTIONAL" + - "SINK" + - "SOURCE" + - "UNDEFINED_OR_UNKNOWN" + tapi.common.TerminationPac: + type: "object" + properties: + termination-direction: + description: "The overall directionality of the LP. \r\n -\ + \ A BIDIRECTIONAL LP will have some SINK and/or SOURCE flowss.\r\n \ + \ - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE\ + \ flows\r\n - A SOURCE LP can only contain SOURCE flows or\ + \ CONTRA_DIRECTION_SINK flows" + $ref: "#/definitions/tapi.common.TerminationDirection" + termination-state: + description: "Indicates whether the layer is terminated and if so how." + $ref: "#/definitions/tapi.common.TerminationState" + tapi.common.TerminationState: + type: "string" + enum: + - "LP_CAN_NEVER_TERMINATE" + - "LT_NOT_TERMINATED" + - "TERMINATED_SERVER_TO_CLIENT_FLOW" + - "TERMINATED_CLIENT_TO_SERVER_FLOW" + - "TERMINATED_BIDIRECTIONAL" + - "LT_PERMENANTLY_TERMINATED" + - "TERMINATION_STATE_UNKNOWN" + tapi.common.TimeRange: + type: "object" + properties: + end-time: + type: "string" + description: "none" + start-time: + type: "string" + description: "none" + tapi.common.TimeRangeWrapper: + properties: + schedule: + $ref: "#/definitions/tapi.common.TimeRange" + tapi.common.getserviceinterfacepointdetails.Input: + type: "object" + properties: + sip-id-or-name: + type: "string" + description: "none" + tapi.common.getserviceinterfacepointdetails.Output: + type: "object" + properties: + sip: + description: "none" + $ref: "#/definitions/tapi.common.ServiceInterfacePoint" + tapi.common.getserviceinterfacepointlist.Output: + type: "object" + properties: + sip: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.common.ServiceInterfacePoint" + tapi.common.updateserviceinterfacepoint.Input: + type: "object" + properties: + sip-id-or-name: + type: "string" + description: "none" + state: + description: "none" + $ref: "#/definitions/tapi.common.AdministrativeState" + tapi.connectivity.CepList: + type: "object" + properties: + connection-end-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPoint" + tapi.connectivity.CepListWrapper: + properties: + tapi-connectivity:cep-list: + $ref: "#/definitions/tapi.connectivity.CepList" + tapi.connectivity.CepRole: + type: "object" + properties: + role-name: + type: "string" + description: "The name of the cep role in the context of the referenced spec." + connection-spec-reference: + description: "The reference to the spec that defines the cep role." + $ref: "#/definitions/tapi.connectivity.ConnectionSpecReference" + tapi.connectivity.CepRoleWrapper: + properties: + cep-role: + $ref: "#/definitions/tapi.connectivity.CepRole" + tapi.connectivity.Connection: + allOf: + - $ref: "#/definitions/tapi.common.GlobalClass" + - $ref: "#/definitions/tapi.common.OperationalStatePac" + - type: "object" + properties: + supported-client-link: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.LinkRef" + lower-connection: + type: "array" + description: "An Connection object supports a recursive aggregation relationship\ + \ such that the internal construction of an Connection can be exposed\ + \ as multiple lower level Connection objects (partitioning).\r\n \ + \ Aggregation is used as for the Node/Topology to allow changes\ + \ in hierarchy. \r\n Connection aggregation reflects Node/Topology\ + \ aggregation. \r\n The FC represents a Cross-Connection\ + \ in an NE. The Cross-Connection in an NE is not necessarily the lowest\ + \ level of FC partitioning." + items: + $ref: "#/definitions/tapi.connectivity.ConnectionRef" + switch-control: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.SwitchControl" + route: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.Route" + connection-spec-reference: + description: "Provides the reference to the spec that defines the connection\ + \ type and cepRoles." + $ref: "#/definitions/tapi.connectivity.ConnectionSpecReference" + layer-protocol-name: + description: "none" + $ref: "#/definitions/tapi.common.LayerProtocolName" + connection-end-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRef" + direction: + description: "none" + $ref: "#/definitions/tapi.common.ForwardingDirection" + description: "The ForwardingConstruct (FC) object class models enabled potential\ + \ for forwarding between two or more LTPs and like the LTP supports any transport\ + \ protocol including all circuit and packet forms.\r\n At the lowest\ + \ level of recursion, a FC represents a cross-connection within an NE." + tapi.connectivity.ConnectionEndPoint: + allOf: + - $ref: "#/definitions/tapi.common.GlobalClass" + - $ref: "#/definitions/tapi.common.OperationalStatePac" + - $ref: "#/definitions/tapi.common.TerminationPac" + - type: "object" + properties: + client-node-edge-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.NodeEdgePointRef" + connection-port-role: + description: "Each EP of the FC has a role (e.g., working, protection, protected,\ + \ symmetric, hub, spoke, leaf, root) in the context of the FC with respect\ + \ to the FC function. " + $ref: "#/definitions/tapi.common.PortRole" + layer-protocol-name: + description: "none" + $ref: "#/definitions/tapi.common.LayerProtocolName" + layer-protocol-qualifier: + type: "string" + description: "none" + parent-node-edge-point: + description: "none" + $ref: "#/definitions/tapi.topology.NodeEdgePointRef" + cep-role: + type: "array" + description: "Defines the role of the CEP in the context of the connection\ + \ spec.\r\n There may be many cep role - connection spec\ + \ combinations for a particular CEP where each corresponds to a specific\ + \ connection associated with the CEP." + items: + $ref: "#/definitions/tapi.connectivity.CepRole" + aggregated-connection-end-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRef" + connection-port-direction: + description: "The orientation of defined flow at the EndPoint." + $ref: "#/definitions/tapi.common.PortDirection" + description: "The LogicalTerminationPoint (LTP) object class encapsulates the\ + \ termination and adaptation functions of one or more transport layers. \r\ + \n The structure of LTP supports all transport protocols including\ + \ circuit and packet forms." + tapi.connectivity.ConnectionEndPointRef: + allOf: + - $ref: "#/definitions/tapi.topology.NodeEdgePointRef" + - type: "object" + properties: + connection-end-point-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point/tapi-connectivity:uuid" + description: "none" + tapi.connectivity.ConnectionEndPointRefWrapper: + properties: + connection-end-point: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRef" + tapi.connectivity.ConnectionEndPointWrapper: + properties: + connection-end-point: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPoint" + tapi.connectivity.ConnectionRef: + type: "object" + properties: + connection-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:uuid" + tapi.connectivity.ConnectionRefWrapper: + properties: + lower-connection: + $ref: "#/definitions/tapi.connectivity.ConnectionRef" + tapi.connectivity.ConnectionSpecReference: + type: "object" + properties: + connection-spec-name: + type: "string" + description: "The name of the connection spec.\r\n This can\ + \ be used alone (with no spec reference) where there is only a paper spec." + connection-spec-id: + type: "string" + description: "The reference to a formal spec. \r\n This reference\ + \ need not be provided (e.g., where there is no formal machine interpretable\ + \ spec for the type of connection)." + tapi.connectivity.ConnectionSpecReferenceWrapper: + properties: + connection-spec-reference: + $ref: "#/definitions/tapi.connectivity.ConnectionSpecReference" + tapi.connectivity.ConnectionWrapper: + properties: + connection: + $ref: "#/definitions/tapi.connectivity.Connection" + tapi.connectivity.ConnectivityConstraint: + type: "object" + properties: + service-layer: + description: "none" + $ref: "#/definitions/tapi.common.LayerProtocolName" + schedule: + description: "none" + $ref: "#/definitions/tapi.common.TimeRange" + connectivity-direction: + description: "none" + $ref: "#/definitions/tapi.common.ForwardingDirection" + requested-capacity: + description: "none" + $ref: "#/definitions/tapi.common.Capacity" + diversity-exclusion: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceRef" + connection-inclusion: + type: "array" + description: "A ConnectivityService may use one or more existing Connections.\r\ + \n A common traditional strategy is to set up “stranded”\ + \ connectivity in the core of the network as “express channels” (this is\ + \ essentially a serial compound link, but can be treated as simple connections)\r\ + \n A connection inclusion capability allows for adoption\ + \ of a discovered Connections.\r\n A ConnectivityService\ + \ is requested with a connection inclusion constraint that identifies a\ + \ connection (or chain of connections) that is bounded by CEPs that each\ + \ belong to a NEP that references a SIP that is referenced by a CSEP of\ + \ the ConnectivityService such that all CSEPs are satisfied by CEPs of the\ + \ existing Connection. will allow discovered Connections with no stated\ + \ intent to be associated with an intent via the ConnectivityService." + items: + type: "string" + service-level: + type: "string" + description: "An abstract value the meaning of which is mutually agreed –\ + \ typically represents metrics such as - Class of service, priority, resiliency,\ + \ availability" + service-type: + description: "none" + $ref: "#/definitions/tapi.connectivity.ServiceType" + connection-exclusion: + type: "array" + description: "none" + items: + type: "string" + coroute-inclusion: + description: "none" + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceRef" + tapi.connectivity.ConnectivityContext: + type: "object" + properties: + connectivity-service: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectivityService" + connection: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.Connection" + tapi.connectivity.ConnectivityContextWrapper: + properties: + tapi-connectivity:connectivity-context: + $ref: "#/definitions/tapi.connectivity.ConnectivityContext" + tapi.connectivity.ConnectivityService: + allOf: + - $ref: "#/definitions/tapi.common.AdminStatePac" + - $ref: "#/definitions/tapi.common.GlobalClass" + - $ref: "#/definitions/tapi.connectivity.ConnectivityConstraint" + - $ref: "#/definitions/tapi.connectivity.ResilienceConstraint" + - $ref: "#/definitions/tapi.path.computation.RoutingConstraint" + - $ref: "#/definitions/tapi.path.computation.TopologyConstraint" + - type: "object" + properties: + end-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPoint" + connection: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectionRef" + description: "The ForwardingConstruct (FC) object class models enabled potential\ + \ for forwarding between two or more LTPs and like the LTP supports any transport\ + \ protocol including all circuit and packet forms.\r\n At the lowest\ + \ level of recursion, a FC represents a cross-connection within an NE." + tapi.connectivity.ConnectivityServiceEndPoint: + allOf: + - $ref: "#/definitions/tapi.common.AdminStatePac" + - $ref: "#/definitions/tapi.common.LocalClass" + - type: "object" + properties: + protection-role: + description: "To specify the protection role of this Port when create or\ + \ update ConnectivityService." + $ref: "#/definitions/tapi.connectivity.ProtectionRole" + role: + description: "Each EP of the FC has a role (e.g., working, protection, protected,\ + \ symmetric, hub, spoke, leaf, root) in the context of the FC with respect\ + \ to the FC function. " + $ref: "#/definitions/tapi.common.PortRole" + service-interface-point: + description: "none" + $ref: "#/definitions/tapi.common.ServiceInterfacePointRef" + peer-fwd-connectivity-service-end-point: + description: "none" + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRef" + layer-protocol-name: + description: "none" + $ref: "#/definitions/tapi.common.LayerProtocolName" + layer-protocol-qualifier: + type: "string" + description: "none" + connection-end-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRef" + server-connectivity-service-end-point: + description: "none" + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRef" + protecting-connectivity-service-end-point: + description: "none" + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRef" + direction: + description: "The orientation of defined flow at the EndPoint." + $ref: "#/definitions/tapi.common.PortDirection" + capacity: + description: "none" + $ref: "#/definitions/tapi.common.Capacity" + description: "The association of the FC to LTPs is made via EndPoints.\r\n \ + \ The EndPoint (EP) object class models the access to the FC function.\ + \ \r\n The traffic forwarding between the associated EPs of the\ + \ FC depends upon the type of FC and may be associated with FcSwitch object\ + \ instances. \r\n In cases where there is resilience the EndPoint\ + \ may convey the resilience role of the access to the FC. \r\n \ + \ It can represent a protected (resilient/reliable) point or a protecting\ + \ (unreliable working or protection) point.\r\n The EP replaces\ + \ the Protection Unit of a traditional protection model. \r\n The\ + \ ForwadingConstruct can be considered as a component and the EndPoint as\ + \ a Port on that component" + tapi.connectivity.ConnectivityServiceEndPointRef: + allOf: + - $ref: "#/definitions/tapi.connectivity.ConnectivityServiceRef" + - type: "object" + properties: + connectivity-service-end-point-local-id: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id" + description: "none" + tapi.connectivity.ConnectivityServiceEndPointRefWrapper: + properties: + peer-fwd-connectivity-service-end-point: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPointRef" + tapi.connectivity.ConnectivityServiceEndPointWrapper: + properties: + end-point: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPoint" + tapi.connectivity.ConnectivityServiceRef: + type: "object" + properties: + connectivity-service-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid" + tapi.connectivity.ConnectivityServiceRefWrapper: + properties: + coroute-inclusion: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceRef" + tapi.connectivity.ConnectivityServiceWrapper: + properties: + connectivity-service: + $ref: "#/definitions/tapi.connectivity.ConnectivityService" + tapi.connectivity.ContextAugmentation3: + type: "object" + properties: + connectivity-context: + description: "Augments the base TAPI Context with ConnectivityService information" + $ref: "#/definitions/tapi.connectivity.ConnectivityContext" + x-augmentation: + prefix: "tapi-connectivity" + namespace: "urn:onf:otcc:yang:tapi-connectivity" + tapi.connectivity.CoordinateType: + type: "string" + enum: + - "NO_COORDINATE" + - "HOLD_OFF_TIME" + - "WAIT_FOR_NOTIFICATION" + tapi.connectivity.CreateConnectivityService: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.connectivity.createconnectivityservice.Output" + tapi.connectivity.GetConnectionDetails: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.connectivity.getconnectiondetails.Output" + tapi.connectivity.GetConnectionEndPointDetails: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.connectivity.getconnectionendpointdetails.Output" + tapi.connectivity.GetConnectivityServiceDetails: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.connectivity.getconnectivityservicedetails.Output" + tapi.connectivity.GetConnectivityServiceList: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.connectivity.getconnectivityservicelist.Output" + tapi.connectivity.OwnedNodeEdgePointAugmentation1: + type: "object" + properties: + cep-list: + description: "none" + $ref: "#/definitions/tapi.connectivity.CepList" + x-augmentation: + prefix: "tapi-connectivity" + namespace: "urn:onf:otcc:yang:tapi-connectivity" + tapi.connectivity.ProtectionRole: + type: "string" + enum: + - "WORK" + - "PROTECT" + - "PROTECTED" + - "NA" + - "WORK_RESTORE" + - "PROTECT_RESTORE" + tapi.connectivity.ResilienceConstraint: + type: "object" + properties: + is-lock-out: + type: "boolean" + description: "The resource is configured to temporarily not be available for\ + \ use in the protection scheme(s) it is part of.\r\n This\ + \ overrides all other protection control states including forced.\r\n \ + \ If the item is locked out then it cannot be used under any\ + \ circumstances.\r\n Note: Only relevant when part of a protection\ + \ scheme." + default: false + max-switch-times: + type: "integer" + format: "int32" + description: "Used to limit the maximum swtich times. When work fault disappears\ + \ , and traffic return to the original work path, switch counter reset." + restoration-coordinate-type: + description: " The coordination mechanism between multi-layers." + $ref: "#/definitions/tapi.connectivity.CoordinateType" + is-coordinated-switching-both-ends: + type: "boolean" + description: "Is operating such that switching at both ends of each flow acorss\ + \ the FC is coordinated at both ingress and egress ends." + default: false + hold-off-time: + type: "integer" + format: "int32" + description: "This attribute indicates the time, in milliseconds, between\ + \ declaration of signal degrade or signal fail, and the initialization of\ + \ the protection switching algorithm." + is-frozen: + type: "boolean" + description: "Temporarily prevents any switch action to be taken and, as such,\ + \ freezes the current state. \r\n Until the freeze is cleared,\ + \ additional near-end external commands are rejected and fault condition\ + \ changes and received APS messages are ignored.\r\n All\ + \ administrative controls of any aspect of protection are rejected." + default: false + wait-to-revert-time: + type: "integer" + format: "int32" + description: "If the protection system is revertive, this attribute specifies\ + \ the time, in minutes, to wait after a fault clears on a higher priority\ + \ (preferred) resource before reverting to the preferred resource." + default: 15 + resilience-type: + description: "none" + $ref: "#/definitions/tapi.topology.ResilienceType" + preferred-restoration-layer: + type: "array" + description: "Indicate which layer this resilience parameters package configured\ + \ for." + items: + $ref: "#/definitions/tapi.common.LayerProtocolName" + restore-priority: + type: "integer" + format: "int32" + description: "none" + reversion-mode: + description: "Indcates whether the protection scheme is revertive or non-revertive." + $ref: "#/definitions/tapi.connectivity.ReversionMode" + tapi.connectivity.ResilienceRoute: + allOf: + - $ref: "#/definitions/tapi.common.LocalClass" + - type: "object" + properties: + priority: + type: "integer" + format: "int32" + description: "Value of 0 (zero) means 'unspecified priority'.\r\n \ + \ Highest priority is 1, sometimes referred as 'preferred' or\ + \ 'main' or 'intended' route.\r\n 2 has lower priority\ + \ than 1, 3 has lower priority than 2, etc." + route-state: + type: "string" + description: "Current information on the route selection." + description: "This object adds resilience and state attributes to the Route.\r\ + \n When this object is not present, then the Route is intendend\ + \ as 'current' Route of the Connection." + tapi.connectivity.ResilienceRouteWrapper: + properties: + resilience-route-pac: + $ref: "#/definitions/tapi.connectivity.ResilienceRoute" + tapi.connectivity.ReversionMode: + type: "string" + enum: + - "REVERTIVE" + - "NON-REVERTIVE" + tapi.connectivity.Route: + allOf: + - $ref: "#/definitions/tapi.common.LocalClass" + - type: "object" + properties: + connection-end-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRef" + resilience-route-pac: + description: "Provides optional resilience and state attributes to the Route." + $ref: "#/definitions/tapi.connectivity.ResilienceRoute" + description: "The Route of a Connection is modeled as a collection of Connection\ + \ End Points.\r\n The logical order of the Connection End Points\ + \ within the Route object can be inferred by the TAPI client by the knowledge\ + \ of the Topology information." + tapi.connectivity.RouteRef: + allOf: + - $ref: "#/definitions/tapi.connectivity.ConnectionRef" + - type: "object" + properties: + route-local-id: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id" + description: "none" + tapi.connectivity.RouteRefWrapper: + properties: + selected-route: + $ref: "#/definitions/tapi.connectivity.RouteRef" + tapi.connectivity.RouteWrapper: + properties: + route: + $ref: "#/definitions/tapi.connectivity.Route" + tapi.connectivity.SelectionControl: + type: "string" + enum: + - "LOCK_OUT" + - "NORMAL" + - "MANUAL" + - "FORCED" + tapi.connectivity.SelectionReason: + type: "string" + enum: + - "LOCKOUT" + - "NORMAL" + - "MANUAL" + - "FORCED" + - "WAIT_TO_REVERT" + - "SIGNAL_DEGRADE" + - "SIGNAL_FAIL" + tapi.connectivity.ServiceType: + type: "string" + enum: + - "POINT_TO_POINT_CONNECTIVITY" + - "POINT_TO_MULTIPOINT_CONNECTIVITY" + - "MULTIPOINT_CONNECTIVITY" + - "ROOTED_MULTIPOINT_CONNECTIVITY" + tapi.connectivity.Switch: + allOf: + - $ref: "#/definitions/tapi.common.LocalClass" + - type: "object" + properties: + selected-connection-end-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectionEndPointRef" + selected-route: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.RouteRef" + selection-control: + description: "Degree of administrative control applied to the switch selection." + $ref: "#/definitions/tapi.connectivity.SelectionControl" + selection-reason: + description: "The reason for the current switch selection." + $ref: "#/definitions/tapi.connectivity.SelectionReason" + switch-direction: + description: "Indicates whether the switch selects from ingress to the FC\ + \ or to egress of the FC, or both." + $ref: "#/definitions/tapi.common.PortDirection" + description: "The class models the switched forwarding of traffic (traffic flow)\ + \ between FcPorts (ConnectionEndPoints) and is present where there is protection\ + \ functionality in the FC (Connection). \r\n If an FC exposes protection\ + \ (having two or more FcPorts that provide alternative identical inputs/outputs),\ + \ the FC will have one or more associated FcSwitch objects to represent the\ + \ alternative flow choices visible at the edge of the FC.\r\n The\ + \ FC switch represents and defines a protection switch structure encapsulated\ + \ in the FC. \r\n Essentially performs one of the functions of\ + \ the Protection Group in a traditional model. It associates to 2 or more\ + \ FcPorts each playing the role of a Protection Unit. \r\n One\ + \ or more protection, i.e. standby/backup, FcPorts provide protection for\ + \ one or more working (i.e. regular/main/preferred) FcPorts where either protection\ + \ or working can feed one or more protected FcPort.\r\n The switch\ + \ may be used in revertive or non-revertive (symmetric) mode. When in revertive\ + \ mode it may define a waitToRestore time.\r\n It may be used in\ + \ one of several modes including source switch, destination switched, source\ + \ and destination switched etc (covering cases such as 1+1 and 1:1).\r\n \ + \ It may be locked out (prevented from switching), force switched\ + \ or manual switched.\r\n It will indicate switch state and change\ + \ of state.\r\n The switch can be switched away from all sources\ + \ such that it becomes open and hence two coordinated switches can both feed\ + \ the same LTP so long as at least one of the two is switched away from all\ + \ sources (is 'open').\r\n The ability for a Switch to be 'high\ + \ impedance' allows bidirectional ForwardingConstructs to be overlaid on the\ + \ same bidirectional LTP where the appropriate control is enabled to prevent\ + \ signal conflict.\r\n This ability allows multiple alternate routes\ + \ to be present that otherwise would be in conflict." + tapi.connectivity.SwitchControl: + allOf: + - $ref: "#/definitions/tapi.common.GlobalClass" + - $ref: "#/definitions/tapi.connectivity.ResilienceConstraint" + - type: "object" + properties: + sub-switch-control: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.SwitchControlRef" + switch: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.Switch" + description: "Represents the capability to control and coordinate switches,\ + \ to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize\ + \ a protection scheme." + tapi.connectivity.SwitchControlRef: + allOf: + - $ref: "#/definitions/tapi.connectivity.ConnectionRef" + - type: "object" + properties: + switch-control-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid" + description: "none" + tapi.connectivity.SwitchControlRefWrapper: + properties: + sub-switch-control: + $ref: "#/definitions/tapi.connectivity.SwitchControlRef" + tapi.connectivity.SwitchControlWrapper: + properties: + switch-control: + $ref: "#/definitions/tapi.connectivity.SwitchControl" + tapi.connectivity.SwitchWrapper: + properties: + switch: + $ref: "#/definitions/tapi.connectivity.Switch" + tapi.connectivity.UpdateConnectivityService: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.connectivity.updateconnectivityservice.Output" + tapi.connectivity.createconnectivityservice.Input: + type: "object" + properties: + topology-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.TopologyConstraint" + end-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPoint" + resilience-constraint: + description: "none" + $ref: "#/definitions/tapi.connectivity.ResilienceConstraint" + routing-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.RoutingConstraint" + state: + type: "string" + description: "none" + connectivity-constraint: + description: "none" + $ref: "#/definitions/tapi.connectivity.ConnectivityConstraint" + tapi.connectivity.createconnectivityservice.Output: + type: "object" + properties: + service: + description: "none" + $ref: "#/definitions/tapi.connectivity.ConnectivityService" + tapi.connectivity.deleteconnectivityservice.Input: + type: "object" + properties: + service-id-or-name: + type: "string" + description: "none" + tapi.connectivity.getconnectiondetails.Input: + type: "object" + properties: + connection-id-or-name: + type: "string" + description: "none" + tapi.connectivity.getconnectiondetails.Output: + type: "object" + properties: + connection: + description: "none" + $ref: "#/definitions/tapi.connectivity.Connection" + tapi.connectivity.getconnectionendpointdetails.Input: + type: "object" + properties: + cep-id-or-name: + type: "string" + description: "none" + nep-id-or-name: + type: "string" + description: "none" + node-id-or-name: + type: "string" + description: "none" + topology-id-or-name: + type: "string" + description: "none" + tapi.connectivity.getconnectionendpointdetails.Output: + type: "object" + properties: + connection-end-point: + description: "none" + $ref: "#/definitions/tapi.connectivity.ConnectionEndPoint" + tapi.connectivity.getconnectivityservicedetails.Input: + type: "object" + properties: + service-id-or-name: + type: "string" + description: "none" + tapi.connectivity.getconnectivityservicedetails.Output: + type: "object" + properties: + service: + description: "none" + $ref: "#/definitions/tapi.connectivity.ConnectivityService" + tapi.connectivity.getconnectivityservicelist.Output: + type: "object" + properties: + service: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectivityService" + tapi.connectivity.updateconnectivityservice.Input: + type: "object" + properties: + service-id-or-name: + type: "string" + description: "none" + topology-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.TopologyConstraint" + end-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.connectivity.ConnectivityServiceEndPoint" + resilience-constraint: + description: "none" + $ref: "#/definitions/tapi.connectivity.ResilienceConstraint" + routing-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.RoutingConstraint" + state: + type: "string" + description: "none" + connectivity-constraint: + description: "none" + $ref: "#/definitions/tapi.connectivity.ConnectivityConstraint" + tapi.connectivity.updateconnectivityservice.Output: + type: "object" + properties: + service: + description: "none" + $ref: "#/definitions/tapi.connectivity.ConnectivityService" + tapi.notification.AlarmInfo: + type: "object" + properties: + perceived-severity: + description: "none" + $ref: "#/definitions/tapi.notification.PerceivedSeverityType" + probable-cause: + type: "string" + description: "none" + service-affecting: + description: "none" + $ref: "#/definitions/tapi.notification.ServiceAffecting" + is-transient: + type: "boolean" + description: "none" + default: false + tapi.notification.AlarmInfoWrapper: + properties: + alarm-info: + $ref: "#/definitions/tapi.notification.AlarmInfo" + tapi.notification.ContextAugmentation1: + type: "object" + properties: + notification-context: + description: "Augments the base TAPI Context with NotificationService information" + $ref: "#/definitions/tapi.notification.NotificationContext" + x-augmentation: + prefix: "tapi-notification" + namespace: "urn:onf:otcc:yang:tapi-notification" + tapi.notification.CreateNotificationSubscriptionService: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.notification.createnotificationsubscriptionservice.Output" + tapi.notification.DeleteNotificationSubscriptionService: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.notification.deletenotificationsubscriptionservice.Output" + tapi.notification.GetNotificationList: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.notification.getnotificationlist.Output" + tapi.notification.GetNotificationSubscriptionServiceDetails: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.notification.getnotificationsubscriptionservicedetails.Output" + tapi.notification.GetNotificationSubscriptionServiceList: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.notification.getnotificationsubscriptionservicelist.Output" + tapi.notification.GetSupportedNotificationTypes: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.notification.getsupportednotificationtypes.Output" + tapi.notification.NameAndValueChange: + type: "object" + properties: + value-name: + type: "string" + description: "The name of the value. The value need not have a name." + old-value: + type: "string" + description: "The value" + new-value: + type: "string" + description: "The value" + tapi.notification.NameAndValueChangeWrapper: + properties: + changed-attributes: + $ref: "#/definitions/tapi.notification.NameAndValueChange" + tapi.notification.Notification: + allOf: + - $ref: "#/definitions/tapi.common.GlobalClass" + - type: "object" + properties: + target-object-type: + description: "none" + $ref: "#/definitions/tapi.notification.ObjectType" + additional-text: + type: "string" + description: "none" + event-time-stamp: + type: "string" + description: "none" + additional-info: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.common.NameAndValue" + sequence-number: + type: "integer" + format: "int32" + description: "A monotonous increasing sequence number associated with the\ + \ notification.\r\n The exact semantics of how this sequence\ + \ number is assigned (per channel or subscription or source or system)\ + \ is left undefined." + tca-info: + description: "none" + $ref: "#/definitions/tapi.notification.TcaInfo" + target-object-identifier: + type: "string" + description: "none" + notification-type: + description: "none" + $ref: "#/definitions/tapi.notification.NotificationType" + target-object-name: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.common.NameAndValue" + layer-protocol-name: + description: "none" + $ref: "#/definitions/tapi.common.LayerProtocolName" + source-indicator: + description: "none" + $ref: "#/definitions/tapi.notification.SourceIndicator" + alarm-info: + description: "none" + $ref: "#/definitions/tapi.notification.AlarmInfo" + changed-attributes: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.NameAndValueChange" + description: "none" + tapi.notification.NotificationChannel: + allOf: + - $ref: "#/definitions/tapi.common.LocalClass" + - type: "object" + properties: + next-sequence-no: + type: "integer" + format: "int32" + description: "The sequence number of the next notification that will be\ + \ published on the channel" + stream-address: + type: "string" + description: "The address/location/URI of the channel/stream to which the\ + \ subscribed notifications are published.\r\n This specifics\ + \ of this is typically dependent on the implementation protocol & mechanism\ + \ and hence is typed as a string." + description: "none" + tapi.notification.NotificationChannelWrapper: + properties: + notification-channel: + $ref: "#/definitions/tapi.notification.NotificationChannel" + tapi.notification.NotificationContext: + type: "object" + properties: + notif-subscription: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.NotificationSubscriptionService" + notification: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.Notification" + tapi.notification.NotificationContextWrapper: + properties: + tapi-notification:notification-context: + $ref: "#/definitions/tapi.notification.NotificationContext" + tapi.notification.NotificationSubscriptionService: + allOf: + - $ref: "#/definitions/tapi.common.GlobalClass" + - type: "object" + properties: + notification: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.Notification" + notification-channel: + description: "none" + $ref: "#/definitions/tapi.notification.NotificationChannel" + subscription-state: + description: "none" + $ref: "#/definitions/tapi.notification.SubscriptionState" + supported-object-types: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.ObjectType" + supported-notification-types: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.NotificationType" + subscription-filter: + description: "none" + $ref: "#/definitions/tapi.notification.SubscriptionFilter" + description: "none" + tapi.notification.NotificationSubscriptionServiceWrapper: + properties: + notif-subscription: + $ref: "#/definitions/tapi.notification.NotificationSubscriptionService" + tapi.notification.NotificationType: + type: "string" + enum: + - "OBJECT_CREATION" + - "OBJECT_DELETION" + - "ATTRIBUTE_VALUE_CHANGE" + - "ALARM_EVENT" + - "THRESHOLD_CROSSING_ALERT" + tapi.notification.NotificationWrapper: + properties: + notification: + $ref: "#/definitions/tapi.notification.Notification" + tapi.notification.ObjectType: + type: "string" + enum: + - "TOPOLOGY" + - "NODE" + - "LINK" + - "CONNECTION" + - "PATH" + - "CONNECTIVITY_SERVICE" + - "VIRTUAL_NETWORK_SERVICE" + - "PATH_COMPUTATION_SERVICE" + - "NODE_EDGE_POINT" + - "SERVICE_INTERFACE_POINT" + - "CONNECTION_END_POINT" + - "MAINTENANCE_ENTITY_GROUP" + - "MAINTENANCE_ENTITY" + - "MEG_END_POINT" + - "MEG_INTERMEDIATE_POINT" + - "SWITCH_CONTROL" + - "SWITCH" + - "ROUTE" + - "NODE_RULE_GROUP" + - "INTER_RULE_GROUP" + - "RULE" + - "OAM_JOB" + - "ACCESS_PORT" + - "EQUIPMENT" + - "HOLDER" + - "PHYSICAL_SPAN" + - "ABSTRACT_STRAND" + - "DEVICE" + tapi.notification.PerceivedSeverityType: + type: "string" + enum: + - "CRITICAL" + - "MAJOR" + - "MINOR" + - "WARNING" + - "CLEARED" + tapi.notification.PerceivedTcaSeverity: + type: "string" + enum: + - "WARNING" + - "CLEAR" + tapi.notification.ServiceAffecting: + type: "string" + enum: + - "SERVICE_AFFECTING" + - "NOT_SERVICE_AFFECTING" + - "UNKNOWN" + tapi.notification.SourceIndicator: + type: "string" + enum: + - "RESOURCE_OPERATION" + - "MANAGEMENT_OPERATION" + - "UNKNOWN" + tapi.notification.SubscriptionFilter: + allOf: + - $ref: "#/definitions/tapi.common.LocalClass" + - type: "object" + properties: + requested-notification-types: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.NotificationType" + requested-object-identifier: + type: "array" + description: "none" + items: + type: "string" + requested-layer-protocols: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.common.LayerProtocolName" + include-content: + type: "boolean" + description: "Indicates whether the published Notification includes content\ + \ or just the Notification Id (which enables retrieval of the notification\ + \ at the later stage)" + default: false + requested-object-types: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.ObjectType" + description: "none" + tapi.notification.SubscriptionFilterWrapper: + properties: + subscription-filter: + $ref: "#/definitions/tapi.notification.SubscriptionFilter" + tapi.notification.SubscriptionState: + type: "string" + enum: + - "SUSPENDED" + - "ACTIVE" + tapi.notification.TcaInfo: + type: "object" + properties: + threshold-crossing: + description: "none" + $ref: "#/definitions/tapi.notification.ThresholdCrossingType" + threshold-parameter: + type: "string" + description: "none" + is-transient: + type: "boolean" + description: "none" + default: false + threshold-value: + type: "integer" + format: "int32" + description: "none" + perceived-severity: + description: "none" + $ref: "#/definitions/tapi.notification.PerceivedTcaSeverity" + suspect-interval-flag: + type: "boolean" + description: "none" + default: false + measurement-interval: + type: "string" + description: "none" + tapi.notification.TcaInfoWrapper: + properties: + tca-info: + $ref: "#/definitions/tapi.notification.TcaInfo" + tapi.notification.ThresholdCrossingType: + type: "string" + enum: + - "THRESHOLD_ABOVE" + - "THRESHOLD_BELOW" + - "CLEARED" + tapi.notification.UpdateNotificationSubscriptionService: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.notification.updatenotificationsubscriptionservice.Output" + tapi.notification.createnotificationsubscriptionservice.Input: + type: "object" + properties: + subscription-state: + description: "none" + $ref: "#/definitions/tapi.notification.SubscriptionState" + subscription-filter: + description: "none" + $ref: "#/definitions/tapi.notification.SubscriptionFilter" + tapi.notification.createnotificationsubscriptionservice.Output: + type: "object" + properties: + subscription-service: + description: "none" + $ref: "#/definitions/tapi.notification.NotificationSubscriptionService" + tapi.notification.deletenotificationsubscriptionservice.Input: + type: "object" + properties: + subscription-id-or-name: + type: "string" + description: "none" + tapi.notification.deletenotificationsubscriptionservice.Output: + type: "object" + properties: + subscription-service: + description: "none" + $ref: "#/definitions/tapi.notification.NotificationSubscriptionService" + tapi.notification.getnotificationlist.Input: + type: "object" + properties: + time-period: + type: "string" + description: "none" + subscription-id-or-name: + type: "string" + description: "none" + tapi.notification.getnotificationlist.Output: + type: "object" + properties: + notification: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.Notification" + tapi.notification.getnotificationsubscriptionservicedetails.Input: + type: "object" + properties: + subscription-id-or-name: + type: "string" + description: "none" + tapi.notification.getnotificationsubscriptionservicedetails.Output: + type: "object" + properties: + subscription-service: + description: "none" + $ref: "#/definitions/tapi.notification.NotificationSubscriptionService" + tapi.notification.getnotificationsubscriptionservicelist.Output: + type: "object" + properties: + subscription-service: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.NotificationSubscriptionService" + tapi.notification.getsupportednotificationtypes.Output: + type: "object" + properties: + supported-object-types: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.ObjectType" + supported-notification-types: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.notification.NotificationType" + tapi.notification.updatenotificationsubscriptionservice.Input: + type: "object" + properties: + subscription-state: + description: "none" + $ref: "#/definitions/tapi.notification.SubscriptionState" + subscription-filter: + description: "none" + $ref: "#/definitions/tapi.notification.SubscriptionFilter" + subscription-id-or-name: + type: "string" + description: "none" + tapi.notification.updatenotificationsubscriptionservice.Output: + type: "object" + properties: + subscription-service: + description: "none" + $ref: "#/definitions/tapi.notification.NotificationSubscriptionService" + tapi.path.computation.ComputeP2PPath: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.path.computation.computep2ppath.Output" + tapi.path.computation.ContextAugmentation2: + type: "object" + properties: + path-computation-context: + description: "Augments the base TAPI Context with PathComputationService information" + $ref: "#/definitions/tapi.path.computation.PathComputationContext" + x-augmentation: + prefix: "tapi-path-computation" + namespace: "urn:onf:otcc:yang:tapi-path-computation" + tapi.path.computation.DeleteP2PPath: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.path.computation.deletep2ppath.Output" + tapi.path.computation.DiversityPolicy: + type: "string" + enum: + - "SRLG" + - "SRNG" + - "SNG" + - "NODE" + - "LINK" + tapi.path.computation.OptimizeP2Ppath: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.path.computation.optimizep2ppath.Output" + tapi.path.computation.Path: + allOf: + - $ref: "#/definitions/tapi.common.GlobalClass" + - type: "object" + properties: + layer-protocol-name: + description: "none" + $ref: "#/definitions/tapi.common.LayerProtocolName" + link: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.LinkRef" + routing-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.RoutingConstraint" + direction: + description: "none" + $ref: "#/definitions/tapi.common.ForwardingDirection" + description: "Path is described by an ordered list of TE Links. A TE Link is\ + \ defined by a pair of Node/NodeEdgePoint IDs. A Connection is realized by\ + \ concatenating link resources (associated with a Link) and the lower-level\ + \ connections (cross-connections) in the different nodes" + tapi.path.computation.PathComputationContext: + type: "object" + properties: + path-comp-service: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.path.computation.PathComputationService" + path: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.path.computation.Path" + tapi.path.computation.PathComputationContextWrapper: + properties: + tapi-path-computation:path-computation-context: + $ref: "#/definitions/tapi.path.computation.PathComputationContext" + tapi.path.computation.PathComputationService: + allOf: + - $ref: "#/definitions/tapi.common.GlobalClass" + - type: "object" + properties: + topology-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.TopologyConstraint" + path: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.path.computation.PathRef" + objective-function: + description: "none" + $ref: "#/definitions/tapi.path.computation.PathObjectiveFunction" + end-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.path.computation.PathServiceEndPoint" + routing-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.RoutingConstraint" + optimization-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.PathOptimizationConstraint" + description: "none" + tapi.path.computation.PathComputationServiceWrapper: + properties: + path-comp-service: + $ref: "#/definitions/tapi.path.computation.PathComputationService" + tapi.path.computation.PathObjectiveFunction: + allOf: + - $ref: "#/definitions/tapi.common.LocalClass" + - type: "object" + properties: + link-utilization: + description: "none" + $ref: "#/definitions/tapi.common.DirectiveValue" + bandwidth-optimization: + description: "none" + $ref: "#/definitions/tapi.common.DirectiveValue" + cost-optimization: + description: "none" + $ref: "#/definitions/tapi.common.DirectiveValue" + resource-sharing: + description: "none" + $ref: "#/definitions/tapi.common.DirectiveValue" + concurrent-paths: + description: "none" + $ref: "#/definitions/tapi.common.DirectiveValue" + description: "none" + tapi.path.computation.PathObjectiveFunctionWrapper: + properties: + objective-function: + $ref: "#/definitions/tapi.path.computation.PathObjectiveFunction" + tapi.path.computation.PathOptimizationConstraint: + allOf: + - $ref: "#/definitions/tapi.common.LocalClass" + - type: "object" + properties: + traffic-interruption: + description: "none" + $ref: "#/definitions/tapi.common.DirectiveValue" + description: "none" + tapi.path.computation.PathOptimizationConstraintWrapper: + properties: + optimization-constraint: + $ref: "#/definitions/tapi.path.computation.PathOptimizationConstraint" + tapi.path.computation.PathRef: + type: "object" + properties: + path-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-path-computation:path-computation-context/tapi-path-computation:path/tapi-path-computation:uuid" + tapi.path.computation.PathRefWrapper: + properties: + path: + $ref: "#/definitions/tapi.path.computation.PathRef" + tapi.path.computation.PathServiceEndPoint: + allOf: + - $ref: "#/definitions/tapi.common.LocalClass" + - type: "object" + properties: + role: + description: "Each EP of the FC has a role (e.g., working, protection, protected,\ + \ symmetric, hub, spoke, leaf, root) in the context of the FC with respect\ + \ to the FC function. " + $ref: "#/definitions/tapi.common.PortRole" + service-interface-point: + description: "none" + $ref: "#/definitions/tapi.common.ServiceInterfacePointRef" + layer-protocol-name: + description: "none" + $ref: "#/definitions/tapi.common.LayerProtocolName" + layer-protocol-qualifier: + type: "string" + description: "none" + direction: + description: "The orientation of defined flow at the EndPoint." + $ref: "#/definitions/tapi.common.PortDirection" + capacity: + description: "none" + $ref: "#/definitions/tapi.common.Capacity" + description: "The association of the FC to LTPs is made via EndPoints.\r\n \ + \ The EndPoint (EP) object class models the access to the FC function.\ + \ \r\n The traffic forwarding between the associated EPs of the\ + \ FC depends upon the type of FC and may be associated with FcSwitch object\ + \ instances. \r\n In cases where there is resilience the EndPoint\ + \ may convey the resilience role of the access to the FC. \r\n \ + \ It can represent a protected (resilient/reliable) point or a protecting\ + \ (unreliable working or protection) point.\r\n The EP replaces\ + \ the Protection Unit of a traditional protection model. \r\n The\ + \ ForwadingConstruct can be considered as a component and the EndPoint as\ + \ a Port on that component" + tapi.path.computation.PathServiceEndPointWrapper: + properties: + end-point: + $ref: "#/definitions/tapi.path.computation.PathServiceEndPoint" + tapi.path.computation.PathWrapper: + properties: + path: + $ref: "#/definitions/tapi.path.computation.Path" + tapi.path.computation.RouteObjectiveFunction: + type: "string" + enum: + - "MIN_WORK_ROUTE_HOP" + - "MIN_WORK_ROUTE_COST" + - "MIN_WORK_ROUTE_LATENCY" + - "MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP" + - "MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST" + - "MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY" + - "LOAD_BALANCE_MAX_UNUSED_CAPACITY" + tapi.path.computation.RoutingConstraint: + type: "object" + properties: + is-exclusive: + type: "boolean" + description: "To distinguish if the resources are to be exclusive to the service" + default: true + max-allowed-cost: + description: "none" + $ref: "#/definitions/tapi.path.computation.ValueOrPriority" + diversity-policy: + description: "none" + $ref: "#/definitions/tapi.path.computation.DiversityPolicy" + route-objective-function: + description: "none" + $ref: "#/definitions/tapi.path.computation.RouteObjectiveFunction" + cost-characteristic: + type: "array" + description: "The list of costs where each cost relates to some aspect of\ + \ the TopologicalEntity." + items: + $ref: "#/definitions/tapi.topology.CostCharacteristic" + max-allowed-hops: + description: "none" + $ref: "#/definitions/tapi.path.computation.ValueOrPriority" + max-allowed-delay: + description: "Delay unit is microseconds." + $ref: "#/definitions/tapi.path.computation.ValueOrPriority" + latency-characteristic: + type: "array" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + items: + $ref: "#/definitions/tapi.topology.LatencyCharacteristic" + risk-diversity-characteristic: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.RiskCharacteristic" + route-direction: + description: "none" + $ref: "#/definitions/tapi.common.ForwardingDirection" + tapi.path.computation.RoutingConstraintWrapper: + properties: + routing-constraint: + $ref: "#/definitions/tapi.path.computation.RoutingConstraint" + tapi.path.computation.TopologyConstraint: + type: "object" + properties: + include-node: + type: "array" + description: "This is a loose constraint - that is it is unordered and could\ + \ be a partial list" + items: + type: "string" + exclude-link: + type: "array" + description: "none" + items: + type: "string" + avoid-topology: + type: "array" + description: "none" + items: + type: "string" + exclude-path: + type: "array" + description: "none" + items: + type: "string" + include-link: + type: "array" + description: "This is a loose constraint - that is it is unordered and could\ + \ be a partial list " + items: + type: "string" + preferred-transport-layer: + type: "array" + description: "soft constraint requested by client to indicate the layer(s)\ + \ of transport connection that it prefers to carry the service. This could\ + \ be same as the service layer or one of the supported server layers" + items: + $ref: "#/definitions/tapi.common.LayerProtocolName" + exclude-node: + type: "array" + description: "none" + items: + type: "string" + include-topology: + type: "array" + description: "none" + items: + type: "string" + include-path: + type: "array" + description: "none" + items: + type: "string" + tapi.path.computation.TopologyConstraintWrapper: + properties: + topology-constraint: + $ref: "#/definitions/tapi.path.computation.TopologyConstraint" + tapi.path.computation.ValueOrPriority: + type: "object" + properties: + priority: + type: "integer" + format: "int32" + description: "none" + value: + type: "integer" + format: "int32" + description: "none" + tapi.path.computation.ValueOrPriorityWrapper: + properties: + max-allowed-cost: + $ref: "#/definitions/tapi.path.computation.ValueOrPriority" + tapi.path.computation.computep2ppath.Input: + type: "object" + properties: + topology-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.TopologyConstraint" + routing-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.RoutingConstraint" + objective-function: + description: "none" + $ref: "#/definitions/tapi.path.computation.PathObjectiveFunction" + sep: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.path.computation.PathServiceEndPoint" + tapi.path.computation.computep2ppath.Output: + type: "object" + properties: + service: + description: "none" + $ref: "#/definitions/tapi.path.computation.PathComputationService" + tapi.path.computation.deletep2ppath.Input: + type: "object" + properties: + path-id-or-name: + type: "string" + description: "none" + tapi.path.computation.deletep2ppath.Output: + type: "object" + properties: + service: + description: "none" + $ref: "#/definitions/tapi.path.computation.PathComputationService" + tapi.path.computation.optimizep2ppath.Input: + type: "object" + properties: + routing-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.RoutingConstraint" + path-id-or-name: + type: "string" + description: "none" + optimization-constraint: + description: "none" + $ref: "#/definitions/tapi.path.computation.PathOptimizationConstraint" + objective-function: + description: "none" + $ref: "#/definitions/tapi.path.computation.PathObjectiveFunction" + tapi.path.computation.optimizep2ppath.Output: + type: "object" + properties: + service: + description: "none" + $ref: "#/definitions/tapi.path.computation.PathComputationService" + tapi.topology.ConnectionSpecReference: + type: "object" + properties: + connection-spec-name: + type: "string" + description: "The name of the connection type spec.\r\n This\ + \ can be used as a reference to a paper document where full formal machine\ + \ interpretable specs are not supported." + connection-spec-id: + type: "string" + description: "The reference to a formal spec. \r\n This reference\ + \ need not be provided (e.g., where there is no formal machine interpretable\ + \ spec for the type of connection)." + tapi.topology.ConnectionSpecReferenceWrapper: + properties: + connection-spec-reference: + $ref: "#/definitions/tapi.topology.ConnectionSpecReference" + tapi.topology.ContextAugmentation4: + type: "object" + properties: + topology-context: + description: "Augments the base TAPI Context with TopologyService information" + $ref: "#/definitions/tapi.topology.TopologyContext" + x-augmentation: + prefix: "tapi-topology" + namespace: "urn:onf:otcc:yang:tapi-topology" + tapi.topology.CostCharacteristic: + type: "object" + properties: + cost-value: + type: "string" + description: "The specific cost." + cost-algorithm: + type: "string" + description: "The cost may vary based upon some properties of the TopologicalEntity.\ + \ The rules for the variation are conveyed by the costAlgorithm." + cost-name: + type: "string" + description: "The cost characteristic will related to some aspect of the TopologicalEntity\ + \ (e.g. $ cost, routing weight). This aspect will be conveyed by the costName." + tapi.topology.CostCharacteristicWrapper: + properties: + cost-characteristic: + $ref: "#/definitions/tapi.topology.CostCharacteristic" + tapi.topology.ForwardingRule: + type: "string" + enum: + - "MAY_FORWARD_ACROSS_GROUP" + - "MUST_FORWARD_ACROSS_GROUP" + - "CANNOT_FORWARD_ACROSS_GROUP" + - "NO_STATEMENT_ON_FORWARDING" + - "INTER_CONNECTION_CONTENTION" + tapi.topology.GetLinkDetails: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.topology.getlinkdetails.Output" + tapi.topology.GetNodeDetails: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.topology.getnodedetails.Output" + tapi.topology.GetNodeEdgePointDetails: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.topology.getnodeedgepointdetails.Output" + tapi.topology.GetTopologyDetails: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.topology.gettopologydetails.Output" + tapi.topology.GetTopologyList: + type: "object" + properties: + output: + $ref: "#/definitions/tapi.topology.gettopologylist.Output" + tapi.topology.InterRuleGroup: + allOf: + - $ref: "#/definitions/tapi.common.CapacityPac" + - $ref: "#/definitions/tapi.common.GlobalClass" + - $ref: "#/definitions/tapi.topology.RiskParameterPac" + - $ref: "#/definitions/tapi.topology.TransferCostPac" + - $ref: "#/definitions/tapi.topology.TransferTimingPac" + - type: "object" + properties: + associated-node-rule-group: + type: "array" + description: "The NodeRuleGroups that the InterRuleGroup constrains interconnection\ + \ between.\r\n The CEPs of the NEPs of a referenced NodeRuleGroup\ + \ can interconnect to the CEPs of the NEPs of another referenced NodeRuleGroup\ + \ constrained by the rules of the InterRuleGroup." + items: + $ref: "#/definitions/tapi.topology.NodeRuleGroupRef" + rule: + type: "array" + description: "The list of rules of the InterRuleGroup." + items: + $ref: "#/definitions/tapi.topology.Rule" + description: "Rules that apply between groups of NEPs." + tapi.topology.InterRuleGroupWrapper: + properties: + inter-rule-group: + $ref: "#/definitions/tapi.topology.InterRuleGroup" + tapi.topology.LatencyCharacteristic: + type: "object" + properties: + traffic-property-name: + type: "string" + description: "The identifier of the specific traffic property to which the\ + \ queuing latency applies." + jitter-characteristic: + type: "string" + description: "High frequency deviation from true periodicity of a signal and\ + \ therefore a small high rate of change of transfer latency.\r\n \ + \ Applies to TDM systems (and not packet)." + fixed-latency-characteristic: + type: "string" + description: "A TopologicalEntity suffers delay caused by the realization\ + \ of the servers (e.g. distance related; FEC encoding etc.) along with some\ + \ client specific processing. This is the total average latency effect of\ + \ the TopologicalEntity" + wander-characteristic: + type: "string" + description: "Low frequency deviation from true periodicity of a signal and\ + \ therefore a small low rate of change of transfer latency.\r\n \ + \ Applies to TDM systems (and not packet)." + queing-latency-characteristic: + type: "string" + description: "The specific queuing latency for the traffic property." + tapi.topology.LatencyCharacteristicWrapper: + properties: + latency-characteristic: + $ref: "#/definitions/tapi.topology.LatencyCharacteristic" + tapi.topology.LayerProtocolTransitionPac: + type: "object" + properties: + transitioned-layer-protocol-name: + type: "array" + description: "Provides the ordered structure of layer protocol transitions\ + \ encapsulated in the TopologicalEntity. The ordering relates to the LinkPort\ + \ role." + items: + type: "string" + tapi.topology.Link: + allOf: + - $ref: "#/definitions/tapi.common.AdminStatePac" + - $ref: "#/definitions/tapi.common.CapacityPac" + - $ref: "#/definitions/tapi.common.GlobalClass" + - $ref: "#/definitions/tapi.topology.LayerProtocolTransitionPac" + - $ref: "#/definitions/tapi.topology.RiskParameterPac" + - $ref: "#/definitions/tapi.topology.TransferCostPac" + - $ref: "#/definitions/tapi.topology.TransferIntegrityPac" + - $ref: "#/definitions/tapi.topology.TransferTimingPac" + - $ref: "#/definitions/tapi.topology.ValidationPac" + - type: "object" + properties: + layer-protocol-name: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.common.LayerProtocolName" + resilience-type: + description: "none" + $ref: "#/definitions/tapi.topology.ResilienceType" + node-edge-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.NodeEdgePointRef" + direction: + description: "The directionality of the Link.\r\n Is applicable\ + \ to simple Links where all LinkEnds are BIDIRECTIONAL (the Link will\ + \ be BIDIRECTIONAL) or UNIDIRECTIONAL (the Link will be UNIDIRECTIONAL).\r\ + \n Is not present in more complex cases." + $ref: "#/definitions/tapi.common.ForwardingDirection" + description: "The Link object class models effective adjacency between two or\ + \ more ForwardingDomains (FD). " + tapi.topology.LinkRef: + allOf: + - $ref: "#/definitions/tapi.topology.TopologyRef" + - type: "object" + properties: + link-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid" + description: "none" + tapi.topology.LinkRefWrapper: + properties: + supported-client-link: + $ref: "#/definitions/tapi.topology.LinkRef" + tapi.topology.LinkWrapper: + properties: + link: + $ref: "#/definitions/tapi.topology.Link" + tapi.topology.NetworkTopologyService: + allOf: + - $ref: "#/definitions/tapi.common.GlobalClass" + - type: "object" + properties: + topology: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.TopologyRef" + description: "none" + tapi.topology.NetworkTopologyServiceWrapper: + properties: + nw-topology-service: + $ref: "#/definitions/tapi.topology.NetworkTopologyService" + tapi.topology.Node: + allOf: + - $ref: "#/definitions/tapi.common.AdminStatePac" + - $ref: "#/definitions/tapi.common.CapacityPac" + - $ref: "#/definitions/tapi.common.GlobalClass" + - $ref: "#/definitions/tapi.topology.TransferCostPac" + - $ref: "#/definitions/tapi.topology.TransferIntegrityPac" + - $ref: "#/definitions/tapi.topology.TransferTimingPac" + - type: "object" + properties: + layer-protocol-name: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.common.LayerProtocolName" + encap-topology: + description: "none" + $ref: "#/definitions/tapi.topology.TopologyRef" + owned-node-edge-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.NodeEdgePoint" + node-rule-group: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.NodeRuleGroup" + aggregated-node-edge-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.NodeEdgePointRef" + description: "The ForwardingDomain (FD) object class models the ForwardingDomain\ + \ topological component which is used to effect forwarding of transport characteristic\ + \ information and offers the potential to enable forwarding.\r\n \ + \ At the lowest level of recursion, an FD (within a network element (NE))\ + \ represents a switch matrix (i.e., a fabric). Note that an NE can encompass\ + \ multiple switch matrices (FDs). " + tapi.topology.NodeEdgePoint: + allOf: + - $ref: "#/definitions/tapi.common.AdminStatePac" + - $ref: "#/definitions/tapi.common.CapacityPac" + - $ref: "#/definitions/tapi.common.GlobalClass" + - $ref: "#/definitions/tapi.common.TerminationPac" + - type: "object" + properties: + link-port-role: + description: "Each LinkEnd of the Link has a role (e.g., symmetric, hub,\ + \ spoke, leaf, root) in the context of the Link with respect to the Link\ + \ function. " + $ref: "#/definitions/tapi.common.PortRole" + mapped-service-interface-point: + type: "array" + description: "NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing)\ + \ or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load\ + \ balancing/Resilience) should be considered experimental" + items: + $ref: "#/definitions/tapi.common.ServiceInterfacePointRef" + aggregated-node-edge-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.NodeEdgePointRef" + layer-protocol-name: + description: "none" + $ref: "#/definitions/tapi.common.LayerProtocolName" + link-port-direction: + description: "The orientation of defined flow at the LinkEnd." + $ref: "#/definitions/tapi.common.PortDirection" + supported-cep-layer-protocol-qualifier: + type: "array" + description: "none" + items: + type: "string" + description: "The LogicalTerminationPoint (LTP) object class encapsulates the\ + \ termination and adaptation functions of one or more transport layers.\r\n\ + \ The structure of LTP supports all transport protocols including\ + \ circuit and packet forms." + tapi.topology.NodeEdgePointRef: + allOf: + - $ref: "#/definitions/tapi.topology.NodeRef" + - type: "object" + properties: + node-edge-point-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid" + description: "none" + tapi.topology.NodeEdgePointRefWrapper: + properties: + node-edge-point: + $ref: "#/definitions/tapi.topology.NodeEdgePointRef" + tapi.topology.NodeRef: + allOf: + - $ref: "#/definitions/tapi.topology.TopologyRef" + - type: "object" + properties: + node-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid" + description: "none" + tapi.topology.NodeRuleGroup: + allOf: + - $ref: "#/definitions/tapi.common.CapacityPac" + - $ref: "#/definitions/tapi.common.GlobalClass" + - $ref: "#/definitions/tapi.topology.RiskParameterPac" + - $ref: "#/definitions/tapi.topology.TransferCostPac" + - $ref: "#/definitions/tapi.topology.TransferTimingPac" + - type: "object" + properties: + inter-rule-group: + type: "array" + description: "Nested NodeRuleGroups may have InterRuleGroups. The Superior\ + \ NodeRuleGroup contains the nested NodeRuleGroups and their associated\ + \ InterRuleGroups.\r\n This is equivalent to the Node-Topology\ + \ hierarchy." + items: + $ref: "#/definitions/tapi.topology.InterRuleGroup" + rule: + type: "array" + description: "The list of rules of the NodeRuleGroup." + items: + $ref: "#/definitions/tapi.topology.Rule" + node-rule-group: + type: "array" + description: "NodeRuleGroups may be nested such that finer grained rules\ + \ may be applied.\r\n A nested rule group should have a\ + \ subset of the NEPs of the superior rule group." + items: + $ref: "#/definitions/tapi.topology.NodeRuleGroupRef" + node-edge-point: + type: "array" + description: "NEPs and their client CEPs that the rules apply to." + items: + $ref: "#/definitions/tapi.topology.NodeEdgePointRef" + description: "Rules that apply to a group of NEPs.\r\n " + tapi.topology.NodeRuleGroupRef: + allOf: + - $ref: "#/definitions/tapi.topology.NodeRef" + - type: "object" + properties: + node-rule-group-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:node-rule-group/tapi-topology:uuid" + description: "none" + tapi.topology.NodeRuleGroupRefWrapper: + properties: + associated-node-rule-group: + $ref: "#/definitions/tapi.topology.NodeRuleGroupRef" + tapi.topology.NodeRuleGroupWrapper: + properties: + node-rule-group: + $ref: "#/definitions/tapi.topology.NodeRuleGroup" + tapi.topology.PortRoleRule: + type: "object" + properties: + port-role-rule: + type: "array" + description: "Where the rule references more than one port role or where there\ + \ are rule intersections either as a result of overlay of rules or inter\ + \ rule group usage indicates role matching criteria for a connection following\ + \ the rules.\r\n For example if two port roles, 'a' and 'b',\ + \ are listed and the port role rule is 'different', this means that a connection\ + \ connecting points in that group must have port roles that are different\ + \ for each CEP in that group.\r\n In the example if a connection\ + \ can have n ports of role 'a' and m ports of role 'b' then a maximum of\ + \ two ports can be drawn from the NEPs of the group and where there are\ + \ two, one must be role 'a' and one must be role 'b'." + items: + type: "string" + port-role: + type: "array" + description: "The role(s) of the port(s) considered in the rule." + items: + type: "string" + tapi.topology.PortRoleRuleWrapper: + properties: + cep-port-role: + $ref: "#/definitions/tapi.topology.PortRoleRule" + tapi.topology.ProtectionType: + type: "string" + enum: + - "NO_PROTECTON" + - "ONE_PLUS_ONE_PROTECTION" + - "ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION" + - "PERMANENT_ONE_PLUS_ONE_PROTECTION" + - "ONE_FOR_ONE_PROTECTION" + - "DYNAMIC_RESTORATION" + - "PRE_COMPUTED_RESTORATION" + - "ONE_PLUS_ONE_PROTECTION_WITH_PRE_COMPUTED_RESTORATION" + tapi.topology.ResilienceType: + type: "object" + properties: + restoration-policy: + description: "none" + $ref: "#/definitions/tapi.topology.RestorationPolicy" + protection-type: + description: "none" + $ref: "#/definitions/tapi.topology.ProtectionType" + tapi.topology.ResilienceTypeWrapper: + properties: + resilience-type: + $ref: "#/definitions/tapi.topology.ResilienceType" + tapi.topology.RestorationPolicy: + type: "string" + enum: + - "PER_DOMAIN_RESTORATION" + - "END_TO_END_RESTORATION" + - "NA" + tapi.topology.RiskCharacteristic: + type: "object" + properties: + risk-characteristic-name: + type: "string" + description: "The name of the risk characteristic. The characteristic may\ + \ be related to a specific degree of closeness.\r\n For example\ + \ a particular characteristic may apply to failures that are localized (e.g.\ + \ to one side of a road) where as another characteristic may relate to failures\ + \ that have a broader impact (e.g. both sides of a road that crosses a bridge).\r\ + \n Depending upon the importance of the traffic being routed\ + \ different risk characteristics will be evaluated." + risk-identifier-list: + type: "array" + description: "A list of the identifiers of each physical/geographic unit (with\ + \ the specific risk characteristic) that is related to a segment of the\ + \ TopologicalEntity." + items: + type: "string" + tapi.topology.RiskCharacteristicWrapper: + properties: + risk-diversity-characteristic: + $ref: "#/definitions/tapi.topology.RiskCharacteristic" + tapi.topology.RiskParameterPac: + type: "object" + properties: + risk-characteristic: + type: "array" + description: "A list of risk characteristics for consideration in an analysis\ + \ of shared risk. Each element of the list represents a specific risk consideration." + items: + $ref: "#/definitions/tapi.topology.RiskCharacteristic" + tapi.topology.Rule: + allOf: + - $ref: "#/definitions/tapi.common.LocalClass" + - type: "object" + properties: + complex-rule: + type: "array" + description: "Allows for more complex rules where the basic rule system\ + \ is not sufficient." + items: + type: "string" + rule-type: + description: "The focus of the rule." + $ref: "#/definitions/tapi.topology.RuleType" + signal-property: + description: "The rule only applies to signals with the properties listed.\ + \ \r\n If the attribute is not present then the rule applies\ + \ to all signals." + $ref: "#/definitions/tapi.topology.SignalPropertyRule" + connection-spec-reference: + type: "array" + description: "Identifies the type of connection that the rule applies to.\ + \ \r\n If the attribute is not present then the rule applies\ + \ to all types of connection supported by the device." + items: + $ref: "#/definitions/tapi.topology.ConnectionSpecReference" + cep-port-role: + type: "array" + description: "Indicates the port role to which the rule applies. \r\n \ + \ The port role is interpreted in the context of the connection\ + \ type which is identified by the connection spec. \r\n \ + \ The port role is not meaningful in the absence of a connection spec\ + \ reference.\r\n If a node rule group carries a port role,\ + \ that role applies also to the associated inter rule where the combination\ + \ of the roles in the node rule groups at the ends of the inter group\ + \ rule define the connection orientation.\r\n For example\ + \ a root-and-leaf connection may be used in a node where a node rule group\ + \ collects one set of NEPs has the port role 'root' and another node rule\ + \ group collects another set of NEPs has the port role 'leaf' where these\ + \ are joined by an inter rule group. This combination specifies an allowed\ + \ orientation of the root-and-leaf connection.\r\n No port\ + \ role statement means all port roles are allowed." + items: + $ref: "#/definitions/tapi.topology.PortRoleRule" + cep-direction: + type: "array" + description: "cep direction is a list of port directions that the rule applies\ + \ to.\r\n No entry means all cep directions." + items: + $ref: "#/definitions/tapi.common.PortDirection" + override-priority: + type: "integer" + format: "int32" + description: "The overridePriority allows for one rule in a rule group to\ + \ override another.\r\n Priority n rules override priority\ + \ n+1 rules.\r\n Rules of the same priority override as\ + \ follows (n overrides n+1):\r\n 1 - MustNot\r\n \ + \ 2 - Must\r\n 3 - May\r\n 4 -\ + \ Null\r\n Within a rule the flexibility rules (signal,\ + \ port role...) override as follows (n overriedes n+1):\r\n \ + \ 1 - Any\r\n 2 - Same\r\n 3 - Different\r\ + \n Where there are two or more 'Same' rules, they will\ + \ form an intersection where all must be met.\r\n " + layer-protocol-qualifier: + type: "array" + description: "Qualifies a rule for a particular layerProtocol identifying\ + \ the qualifiers that the rule apples to.\r\n If the attribute\ + \ is not present then the rule applies to all relevant qualifiers of the\ + \ layer protocol of the parent entity." + items: + type: "string" + forwarding-rule: + description: "Rule that restricts the creation/deletion of a Connection\ + \ between points in the node rule group or related by the inter rule group\ + \ between node rule groups." + $ref: "#/definitions/tapi.topology.ForwardingRule" + description: "Single complex rule statememt.\r\n A Node with no rule\ + \ group has no restrictions and is essentially May/Any\r\n A node\ + \ rule group constrain the CEP connectability in the Node.\r\n \ + \ A connection from a NEP must abide by all rules that relate to that NEP\r\ + \n Rules that are for a particular layerProtocolQualifier, connectionSpecReference,\ + \ cepPortRole and cepDirection combination must be abided by in combination\ + \ as dictated by overridePriority.\r\n If a particular\r\n \ + \ - connectionSpecReference does not have any rule statements then\ + \ it is not supported and connections of that type are not possible within\ + \ the rule group.\r\n - cepPortRole of a particular connectionSpecReference\ + \ does not have any rule statements then it is not supported and connections\ + \ of that connectionSpecReference (type) cannot have that cepPortRole for\ + \ CEPs from NEPs in that rule group.\r\n - cepDirection for a particular\ + \ connectionSpecReference does not have any rule statements then it is not\ + \ supported and connections of that connectionSpecReference (type) cannot\ + \ have that cepPortDirection for CEPs from NEPs in that rule group.\r\n \ + \ Rules that are for different layerProtocolQualifiers or connectionSpecReferences\ + \ are independent and provide options for connection in the rule group.\r\n\ + \ Some rules may apply to multiple connectionSpecReferences and\ + \ all cepPortRoles and all cepDirections." + tapi.topology.RuleType: + type: "string" + enum: + - "FORWARDING" + - "CAPACITY" + - "COST" + - "TIMING" + - "RISK" + - "GROUPING" + tapi.topology.RuleWrapper: + properties: + rule: + $ref: "#/definitions/tapi.topology.Rule" + tapi.topology.SignalPropertyRule: + type: "object" + properties: + number-of-signal-values: + type: "integer" + format: "int32" + description: "The number of instances of this specific property that can be\ + \ supported by the group." + applicable-signal-value: + type: "array" + description: "Specific values of the signal property to which the rule applies." + items: + type: "string" + signal-property-value-rule: + type: "string" + description: "Indicates how the signal properties should be accounted for." + signal-property-name: + type: "string" + description: "The name of the signal property to which the rule applies." + tapi.topology.SignalPropertyRuleWrapper: + properties: + signal-property: + $ref: "#/definitions/tapi.topology.SignalPropertyRule" + tapi.topology.Topology: + allOf: + - $ref: "#/definitions/tapi.common.GlobalClass" + - type: "object" + properties: + layer-protocol-name: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.common.LayerProtocolName" + link: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.Link" + node: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.Node" + description: "The ForwardingDomain (FD) object class models the ForwardingDomain\ + \ topological component which is used to effect forwarding of transport characteristic\ + \ information and offers the potential to enable forwarding. \r\n \ + \ At the lowest level of recursion, an FD (within a network element (NE))\ + \ represents a switch matrix (i.e., a fabric). Note that an NE can encompass\ + \ multiple switch matrices (FDs). " + tapi.topology.TopologyContext: + type: "object" + properties: + nw-topology-service: + description: "none" + $ref: "#/definitions/tapi.topology.NetworkTopologyService" + topology: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.Topology" + tapi.topology.TopologyContextWrapper: + properties: + tapi-topology:topology-context: + $ref: "#/definitions/tapi.topology.TopologyContext" + tapi.topology.TopologyRef: + type: "object" + properties: + topology-uuid: + type: "string" + description: "none" + x-path: "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:uuid" + tapi.topology.TopologyRefWrapper: + properties: + topology: + $ref: "#/definitions/tapi.topology.TopologyRef" + tapi.topology.TopologyWrapper: + properties: + topology: + $ref: "#/definitions/tapi.topology.Topology" + tapi.topology.TransferCostPac: + type: "object" + properties: + cost-characteristic: + type: "array" + description: "The list of costs where each cost relates to some aspect of\ + \ the TopologicalEntity." + items: + $ref: "#/definitions/tapi.topology.CostCharacteristic" + tapi.topology.TransferIntegrityPac: + type: "object" + properties: + error-characteristic: + type: "string" + description: "Describes the degree to which the signal propagated can be errored.\r\ + \n Applies to TDM systems as the errored signal will be propagated\ + \ and not packet as errored packets will be discarded." + unavailable-time-characteristic: + type: "string" + description: "Describes the duration for which there may be no valid signal\ + \ propagated." + server-integrity-process-characteristic: + type: "string" + description: "Describes the effect of any server integrity enhancement process\ + \ on the characteristics of the TopologicalEntity." + delivery-order-characteristic: + type: "string" + description: "Describes the degree to which packets will be delivered out\ + \ of sequence.\r\n Does not apply to TDM as the TDM protocols\ + \ maintain strict order." + repeat-delivery-characteristic: + type: "string" + description: "Primarily applies to packet systems where a packet may be delivered\ + \ more than once (in fault recovery for example).\r\n It\ + \ can also apply to TDM where several frames may be received twice due to\ + \ switching in a system with a large differential propagation delay." + loss-characteristic: + type: "string" + description: "Describes the acceptable characteristic of lost packets where\ + \ loss may result from discard due to errors or overflow.\r\n \ + \ Applies to packet systems and not TDM (as for TDM errored signals\ + \ are propagated unless grossly errored and overflow/underflow turns into\ + \ timing slips)." + tapi.topology.TransferTimingPac: + type: "object" + properties: + latency-characteristic: + type: "array" + description: "The effect on the latency of a queuing process. This only has\ + \ significant effect for packet based systems and has a complex characteristic." + items: + $ref: "#/definitions/tapi.topology.LatencyCharacteristic" + tapi.topology.ValidationMechanism: + type: "object" + properties: + layer-protocol-adjacency-validated: + type: "string" + description: "State of validatiion" + validation-mechanism: + type: "string" + description: "Name of mechanism used to validate adjacency" + validation-robustness: + type: "string" + description: "Quality of validation (i.e. how likely is the stated validation\ + \ to be invalid)" + tapi.topology.ValidationMechanismWrapper: + properties: + validation-mechanism: + $ref: "#/definitions/tapi.topology.ValidationMechanism" + tapi.topology.ValidationPac: + type: "object" + properties: + validation-mechanism: + type: "array" + description: "Provides details of the specific validation mechanism(s) used\ + \ to confirm the presence of an intended topologicalEntity." + items: + $ref: "#/definitions/tapi.topology.ValidationMechanism" + tapi.topology.getlinkdetails.Input: + type: "object" + properties: + link-id-or-name: + type: "string" + description: "none" + topology-id-or-name: + type: "string" + description: "none" + tapi.topology.getlinkdetails.Output: + type: "object" + properties: + link: + description: "none" + $ref: "#/definitions/tapi.topology.Link" + tapi.topology.getnodedetails.Input: + type: "object" + properties: + node-id-or-name: + type: "string" + description: "none" + topology-id-or-name: + type: "string" + description: "none" + tapi.topology.getnodedetails.Output: + type: "object" + properties: + node: + description: "none" + $ref: "#/definitions/tapi.topology.Node" + tapi.topology.getnodeedgepointdetails.Input: + type: "object" + properties: + ep-id-or-name: + type: "string" + description: "none" + node-id-or-name: + type: "string" + description: "none" + topology-id-or-name: + type: "string" + description: "none" + tapi.topology.getnodeedgepointdetails.Output: + type: "object" + properties: + node-edge-point: + description: "none" + $ref: "#/definitions/tapi.topology.NodeEdgePoint" + tapi.topology.gettopologydetails.Input: + type: "object" + properties: + topology-id-or-name: + type: "string" + description: "none" + tapi.topology.gettopologydetails.Output: + type: "object" + properties: + topology: + description: "none" + $ref: "#/definitions/tapi.topology.Topology" + tapi.topology.gettopologylist.Output: + type: "object" + properties: + topology: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.Topology" + tapi.topology.node.OwnedNodeEdgePoint: + allOf: + - $ref: "#/definitions/tapi.connectivity.OwnedNodeEdgePointAugmentation1" + - $ref: "#/definitions/tapi.topology.NodeEdgePoint" + tapi.topology.node.OwnedNodeEdgePointWrapper: + properties: + owned-node-edge-point: + $ref: "#/definitions/tapi.topology.node.OwnedNodeEdgePoint" + tapi.topology.topology.Node: + allOf: + - $ref: "#/definitions/tapi.common.AdminStatePac" + - $ref: "#/definitions/tapi.common.CapacityPac" + - $ref: "#/definitions/tapi.common.GlobalClass" + - $ref: "#/definitions/tapi.topology.TransferCostPac" + - $ref: "#/definitions/tapi.topology.TransferIntegrityPac" + - $ref: "#/definitions/tapi.topology.TransferTimingPac" + - type: "object" + properties: + layer-protocol-name: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.common.LayerProtocolName" + encap-topology: + description: "none" + $ref: "#/definitions/tapi.topology.TopologyRef" + owned-node-edge-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.node.OwnedNodeEdgePoint" + node-rule-group: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.NodeRuleGroup" + aggregated-node-edge-point: + type: "array" + description: "none" + items: + $ref: "#/definitions/tapi.topology.NodeEdgePointRef" + description: "none" + tapi.topology.topology.NodeWrapper: + properties: + node: + $ref: "#/definitions/tapi.topology.topology.Node" diff --git a/hackfest/tapi/tapi_app/ols-topo.dot b/hackfest/tapi/tapi_app/ols-topo.dot new file mode 100644 index 0000000000000000000000000000000000000000..89122169f5d5b6c28fe365cec812aaca1eeeb476 --- /dev/null +++ b/hackfest/tapi/tapi_app/ols-topo.dot @@ -0,0 +1,16 @@ +strict digraph { +"node-1"; +"node-2"; +"node-3"; +"node-4"; +"node-1" -> "node-3"; +"node-1" -> "node-4"; +"node-2" -> "node-3"; +"node-2" -> "node-4"; +"node-3" -> "node-1"; +"node-3" -> "node-2"; +"node-3" -> "node-4"; +"node-4" -> "node-1"; +"node-4" -> "node-2"; +"node-4" -> "node-3"; +} diff --git a/hackfest/tapi/tapi_app/ols-topo.png b/hackfest/tapi/tapi_app/ols-topo.png new file mode 100644 index 0000000000000000000000000000000000000000..94ac969f94679d1bc9e7bad7f5810b153106a517 Binary files /dev/null and b/hackfest/tapi/tapi_app/ols-topo.png differ diff --git a/hackfest/tapi/tapi_app/requirements.sh b/hackfest/tapi/tapi_app/requirements.sh new file mode 100644 index 0000000000000000000000000000000000000000..95832bb6628447bb1d5d6e7cd8a477468ebe5ef6 --- /dev/null +++ b/hackfest/tapi/tapi_app/requirements.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sudo apt install graphviz +pip install -r requirements.txt diff --git a/hackfest/tapi/tapi_app/requirements.txt b/hackfest/tapi/tapi_app/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..43c1b1341f489fd80fe350d1e7916df6a3c5506d --- /dev/null +++ b/hackfest/tapi/tapi_app/requirements.txt @@ -0,0 +1,2 @@ +matplotlib == 3.6.1 +networkx == 2.6.3 diff --git a/hackfest/tapi/tapi_app/tapi_app.py b/hackfest/tapi/tapi_app/tapi_app.py new file mode 100644 index 0000000000000000000000000000000000000000..195306c7b1e0f586f03b1c625846550a2cc06c57 --- /dev/null +++ b/hackfest/tapi/tapi_app/tapi_app.py @@ -0,0 +1,51 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import json, requests, networkx as nx +from requests.auth import HTTPBasicAuth + +IP = '127.0.0.1' +PORT = 8080 +TOPO_UUID = 'ols-topo' +TOPO_URL = 'http://{:s}:{:d}/restconf/data/tapi-common:context/'\ + 'tapi-topology:topology-context/topology={:s}/' + +def retrieve_topology(ip, port, topo_uuid, user='', passwd=''): + print ("Reading network-topology") + topo_url = TOPO_URL.format(ip, port, topo_uuid) + response = requests.get(topo_url, auth=HTTPBasicAuth(user, passwd)) + topology = response.json() + print ("Retrieved Topology: " + json.dumps(topology, indent=4)) + return topology + +def to_png_matplotlib(nwk_graph, topo_uuid): + import matplotlib.pyplot as plt + nx.draw(nwk_graph, pos=nx.spring_layout(nwk_graph, scale=500)) + plt.show(block=False) + plt.savefig('{:s}.png'.format(topo_uuid), format='PNG') + plt.close() + +def to_png_pydot(nwk_graph, topo_uuid): + from networkx.drawing.nx_pydot import write_dot, to_pydot + write_dot(nwk_graph, '{:s}.dot'.format(topo_uuid)) + dot_graph = to_pydot(nwk_graph) + with open('{:s}.png'.format(topo_uuid), 'wb') as f: + f.write(dot_graph.create(format='png')) + +def draw_topology(topology): + nwk_graph = nx.DiGraph() + + for node in topology['node']: + if node['owned-node-edge-point']: + nwk_graph.add_node(node['uuid']) + + for link in topology['link']: + node1 = link['node-edge-point'][0]['node-uuid'] + node2 = link['node-edge-point'][1]['node-uuid'] + nwk_graph.add_edge(node1, node2) + + #to_png_matplotlib(nwk_graph, topology['uuid']) + to_png_pydot(nwk_graph, topology['uuid']) + +if __name__ == "__main__": + draw_topology(retrieve_topology(IP, PORT, TOPO_UUID)) diff --git a/hackfest/tfs-descriptors/context-topology.json b/hackfest/tfs-descriptors/context-topology.json new file mode 100644 index 0000000000000000000000000000000000000000..36b3c44fd61fdec9d208a82a11d5a16c3671d004 --- /dev/null +++ b/hackfest/tfs-descriptors/context-topology.json @@ -0,0 +1,19 @@ +{ + "contexts": [ + { + "context_id": {"context_uuid": {"uuid": "admin"}}, + "topology_ids": [], + "service_ids": [] + } + ], + "topologies": [ + { + "topology_id": { + "context_id": {"context_uuid": {"uuid": "admin"}}, + "topology_uuid": {"uuid": "admin"} + }, + "device_ids": [], + "link_ids": [] + } + ] +} diff --git a/hackfest/tfs-descriptors/device-all.json b/hackfest/tfs-descriptors/device-all.json new file mode 100644 index 0000000000000000000000000000000000000000..8cb8e031488f0dd1fa4176b8d20d01fe2d24abc9 --- /dev/null +++ b/hackfest/tfs-descriptors/device-all.json @@ -0,0 +1,84 @@ +{ + "devices": [ + { + "device_id": {"device_uuid": {"uuid": "R1"}}, + "device_type": "packet-router", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8301"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", + "force_running": false, "hostkey_verify": false, "look_for_keys": false, + "allow_agent": false, "delete_rule": true, "device_params": {"name": "default"}, + "manager_params": {"timeout" : 120} + }}} + ]}, + "device_operational_status": 1, + "device_drivers": [1], + "device_endpoints": [] + }, + { + "device_id": {"device_uuid": {"uuid": "R2"}}, + "device_type": "packet-router", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8302"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", + "force_running": false, "hostkey_verify": false, "look_for_keys": false, + "allow_agent": false, "delete_rule": true, "device_params": {"name": "default"}, + "manager_params": {"timeout" : 120} + }}} + ]}, + "device_operational_status": 1, + "device_drivers": [1], + "device_endpoints": [] + }, + { + "device_id": {"device_uuid": {"uuid": "R3"}}, + "device_type": "packet-router", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8303"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", + "force_running": false, "hostkey_verify": false, "look_for_keys": false, + "allow_agent": false, "delete_rule": true, "device_params": {"name": "default"}, + "manager_params": {"timeout" : 120} + }}} + ]}, + "device_operational_status": 1, + "device_drivers": [1], + "device_endpoints": [] + }, + { + "device_id": {"device_uuid": {"uuid": "R4"}}, + "device_type": "packet-router", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8304"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", + "force_running": false, "hostkey_verify": false, "look_for_keys": false, + "allow_agent": false, "delete_rule": true, "device_params": {"name": "default"}, + "manager_params": {"timeout" : 120} + }}} + ]}, + "device_operational_status": 1, + "device_drivers": [1], + "device_endpoints": [] + }, + { + "device_id": {"device_uuid": {"uuid": "OLS"}}, + "device_type": "open-line-system", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8080"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"timeout": 120}}} + ]}, + "device_operational_status": 1, + "device_drivers": [2], + "device_endpoints": [] + } + ] +} diff --git a/hackfest/tfs-descriptors/device-netconf-openconfig.json b/hackfest/tfs-descriptors/device-netconf-openconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..7e01f037e744493a8cd1190b2510ed3d4d1c86aa --- /dev/null +++ b/hackfest/tfs-descriptors/device-netconf-openconfig.json @@ -0,0 +1,21 @@ +{ + "devices": [ + { + "device_id": {"device_uuid": {"uuid": "R1"}}, + "device_type": "packet-router", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.10"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8300"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "username": "admin", "password": "admin", + "force_running": false, "hostkey_verify": false, "look_for_keys": false, + "allow_agent": false, "delete_rule": true, "device_params": {"name": "default"}, + "manager_params": {"timeout" : 15} + }}} + ]}, + "device_operational_status": 1, + "device_drivers": [1], + "device_endpoints": [] + } + ] +} diff --git a/hackfest/tfs-descriptors/device-tapi-ols.json b/hackfest/tfs-descriptors/device-tapi-ols.json new file mode 100644 index 0000000000000000000000000000000000000000..3dcdc562edb50e0b63e69f5745600110dd42151c --- /dev/null +++ b/hackfest/tfs-descriptors/device-tapi-ols.json @@ -0,0 +1,16 @@ +{ + "devices": [ + { + "device_id": {"device_uuid": {"uuid": "OLS"}}, + "device_type": "open-line-system", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.10"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8080"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"timeout": 120}}} + ]}, + "device_operational_status": 1, + "device_drivers": [2], + "device_endpoints": [] + } + ] +} diff --git a/hackfest/tfs-descriptors/links.json b/hackfest/tfs-descriptors/links.json new file mode 100644 index 0000000000000000000000000000000000000000..8a991fd622ac89bcb6fafed5abe61de0c6e17641 --- /dev/null +++ b/hackfest/tfs-descriptors/links.json @@ -0,0 +1,63 @@ +{ + "links": [ + { + "link_id": {"link_uuid": {"uuid": "R1/1/1==OLS/node-1-port-15-input"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "1/1"}}, + {"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "node-1-port-15-input"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "OLS/node-1-port-15-output==R1/1/1"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "node-1-port-15-output"}}, + {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "1/1"}} + ] + }, + + { + "link_id": {"link_uuid": {"uuid": "R2/1/1==OLS/node-2-port-15-input"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "1/1"}}, + {"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "node-2-port-15-input"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "OLS/node-2-port-15-output==R2/1/1"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "node-2-port-15-output"}}, + {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "1/1"}} + ] + }, + + { + "link_id": {"link_uuid": {"uuid": "R3/1/1==OLS/node-3-port-15-input"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "1/1"}}, + {"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "node-3-port-15-input"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "OLS/node-3-port-15-output==R3/1/1"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "node-3-port-15-output"}}, + {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "1/1"}} + ] + }, + + { + "link_id": {"link_uuid": {"uuid": "R4/1/1==OLS/node-4-port-15-input"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "1/1"}}, + {"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "node-4-port-15-input"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "OLS/node-4-port-15-output==R4/1/1"}}, + "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "OLS"}}, "endpoint_uuid": {"uuid": "node-4-port-15-output"}}, + {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "1/1"}} + ] + } + ] +} diff --git a/hackfest/tfs-descriptors/old/device.json b/hackfest/tfs-descriptors/old/device.json new file mode 100644 index 0000000000000000000000000000000000000000..03736314dee9ea0a8aae27627361dcdd24457fca --- /dev/null +++ b/hackfest/tfs-descriptors/old/device.json @@ -0,0 +1,77 @@ +{ + "contexts": [ + { + "context_id": {"context_uuid": {"uuid": "admin"}}, + "topology_ids": [], + "service_ids": [] + } + ], + "topologies": [ + { + "topology_id": {"topology_uuid": {"uuid": "admin"}, "context_id": {"context_uuid": {"uuid": "admin"}}}, + "device_ids": [ + {"device_uuid": {"uuid": "R1"}}, + {"device_uuid": {"uuid": "R2"}}, + {"device_uuid": {"uuid": "R3"}} + ], + "link_ids": [ + {"link_uuid":{"uuid":"R1-1/1==R2-1/2"}}, + {"link_uuid":{"uuid":"R2-1/1==R3-1/2"}} + ] + } + ], + "devices": [ + { + "device_id": {"device_uuid": {"uuid": "R1"}}, + "device_type": "packet-router", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8301"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": "{\"username\": \"admin\", \"password\": \"admin\", \"force_running\": true, \"hostkey_verify\": false, \"look_for_keys\": false, \"allow_agent\": true, \"delete_rule\": false, \"device_params\" : {\"name\": \"default\"}, \"manager_params\" : {\"timeout\": 15}}"}} + ]}, + "device_operational_status": 1, + "device_drivers": [1], + "device_endpoints": [] + }, + { + "device_id": {"device_uuid": {"uuid": "R2"}}, + "device_type": "packet-router", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8302"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": "{\"username\": \"admin\", \"password\": \"admin\", \"force_running\": true, \"hostkey_verify\": false, \"look_for_keys\": false, \"allow_agent\": true, \"delete_rule\": false, \"device_params\" : {\"name\": \"default\"}, \"manager_params\" : {\"timeout\": 15}}"}} + ]}, + "device_operational_status": 1, + "device_drivers": [1], + "device_endpoints": [] + }, + { + "device_id": {"device_uuid": {"uuid": "R3"}}, + "device_type": "packet-router", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "10.0.2.15"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "8303"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": "{\"username\": \"admin\", \"password\": \"admin\", \"force_running\": true, \"hostkey_verify\": false, \"look_for_keys\": false, \"allow_agent\": true, \"delete_rule\": false, \"device_params\" : {\"name\": \"default\"}, \"manager_params\" : {\"timeout\": 15}}"}} + ]}, + "device_operational_status": 1, + "device_drivers": [1], + "device_endpoints": [] + } + ], + "links": [ + { + "link_id":{"link_uuid":{"uuid":"R1-1/1==R2-1/2"}}, + "link_endpoint_ids":[ + {"device_id":{"device_uuid":{"uuid":"R1"}},"endpoint_uuid":{"uuid":"1/1"}}, + {"device_id":{"device_uuid":{"uuid":"R2"}},"endpoint_uuid":{"uuid":"1/2"}} + ] + }, + { + "link_id":{"link_uuid":{"uuid":"R2-1/1==R3-1/2"}}, + "link_endpoint_ids":[ + {"device_id":{"device_uuid":{"uuid":"R2"}},"endpoint_uuid":{"uuid":"1/1"}}, + {"device_id":{"device_uuid":{"uuid":"R3"}},"endpoint_uuid":{"uuid":"1/2"}} + ] + } + ] +} diff --git a/hackfest/tfs-descriptors/old/service.json b/hackfest/tfs-descriptors/old/service.json new file mode 100644 index 0000000000000000000000000000000000000000..a25d0171dbfdbf174a877151201752c76759514a --- /dev/null +++ b/hackfest/tfs-descriptors/old/service.json @@ -0,0 +1,27 @@ +{ + "contexts": [ + { + "context_id": {"context_uuid": {"uuid": "admin"}}, + "topology_ids": [], + "service_ids": [ + {"context_id":{"context_uuid":{"uuid":"admin"}},"service_uuid":{"uuid":"hackfest-svc"}} + ] + } + ], + "services": [ + { + "service_id":{"context_id":{"context_uuid":{"uuid":"admin"}},"service_uuid":{"uuid":"hackfest-svc"}}, + "service_type": 1, + "service_status":{"service_status": 1}, + "service_endpoint_ids":[ + {"device_id":{"device_uuid":{"uuid":"R1"}},"endpoint_uuid":{"uuid":"1/3"}}, + {"device_id":{"device_uuid":{"uuid":"R2"}},"endpoint_uuid":{"uuid":"1/3"}} + ], + "service_constraints":[ + {"custom": {"constraint_type": "bandwidth[gbps]", "constraint_value": "10.0"}}, + {"custom": {"constraint_type": "latency[ms]", "constraint_value": "20.0"}} + ], + "service_config":{"config_rules":[]} + } + ] +} diff --git a/hackfest/tfs-descriptors/service-l3vpn.json b/hackfest/tfs-descriptors/service-l3vpn.json new file mode 100644 index 0000000000000000000000000000000000000000..457ba1a509aebc5eaea8caa37a09ac62ef286f32 --- /dev/null +++ b/hackfest/tfs-descriptors/service-l3vpn.json @@ -0,0 +1,44 @@ +{ + "services": [ + { + "service_id": { + "context_id": {"context_uuid": {"uuid": "admin"}}, + "service_uuid": {"uuid": "netx-l3-svc"} + }, + "service_type": 1, + "service_status": {"service_status": 1}, + "service_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "1/2"}}, + {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "1/2"}} + ], + "service_constraints": [ + {"custom": {"constraint_type": "bandwidth[gbps]", "constraint_value": "10.0"}}, + {"custom": {"constraint_type": "latency[ms]", "constraint_value": "15.2"}} + ], + "service_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "/settings", "resource_value": { + "address_families": ["IPV4"], + "bgp_as": 65000, + "bgp_route_target": "65000:333", + "mtu": 1512 + }}}, + {"action": 1, "custom": {"resource_key": "/device[R1]/endpoint[1/2]/settings", "resource_value": { + "address_ip": "3.3.2.1", + "address_prefix": 24, + "route_distinguisher": "65000:123", + "router_id": "10.10.10.1", + "sub_interface_index": 400, + "vlan_id": 400 + }}}, + {"action": 1, "custom": {"resource_key": "/device[R3]/endpoint[1/2]/settings", "resource_value": { + "address_ip": "3.3.1.1", + "address_prefix": 24, + "route_distinguisher": "65000:321", + "router_id": "20.20.20.1", + "sub_interface_index": 400, + "vlan_id": 500 + }}} + ]} + } + ] +} diff --git a/hackfest/yang/binding_topology.py b/hackfest/yang/binding_topology.py new file mode 100644 index 0000000000000000000000000000000000000000..12ea1901b5a40b736434978b145a6d9110a16470 --- /dev/null +++ b/hackfest/yang/binding_topology.py @@ -0,0 +1,714 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class yc_port_topology__topology_node_port(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology/node/port. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__port_id','__layer_protocol_name',) + + _yang_name = 'port' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__port_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH': {}, 'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['topology', 'node', 'port'] + + def _get_port_id(self): + """ + Getter method for port_id, mapped from YANG variable /topology/node/port/port_id (string) + """ + return self.__port_id + + def _set_port_id(self, v, load=False): + """ + Setter method for port_id, mapped from YANG variable /topology/node/port/port_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_port_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True)""", + }) + + self.__port_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_port_id(self): + self.__port_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="port-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + + def _get_layer_protocol_name(self): + """ + Getter method for layer_protocol_name, mapped from YANG variable /topology/node/port/layer_protocol_name (layer-protocol-name) + """ + return self.__layer_protocol_name + + def _set_layer_protocol_name(self, v, load=False): + """ + Setter method for layer_protocol_name, mapped from YANG variable /topology/node/port/layer_protocol_name (layer-protocol-name) + If this variable is read-only (config: false) in the + source YANG file, then _set_layer_protocol_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_layer_protocol_name() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH': {}, 'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """layer_protocol_name must be of a type compatible with layer-protocol-name""", + 'defined-type': "topology:layer-protocol-name", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH': {}, 'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True)""", + }) + + self.__layer_protocol_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_layer_protocol_name(self): + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={'ETH': {}, 'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='layer-protocol-name', is_config=True) + + port_id = __builtin__.property(_get_port_id, _set_port_id) + layer_protocol_name = __builtin__.property(_get_layer_protocol_name, _set_layer_protocol_name) + + + _pyangbind_elements = OrderedDict([('port_id', port_id), ('layer_protocol_name', layer_protocol_name), ]) + + +class yc_node_topology__topology_node(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology/node. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__node_id','__port',) + + _yang_name = 'node' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + self.__port = YANGDynClass(base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['topology', 'node'] + + def _get_node_id(self): + """ + Getter method for node_id, mapped from YANG variable /topology/node/node_id (string) + """ + return self.__node_id + + def _set_node_id(self, v, load=False): + """ + Setter method for node_id, mapped from YANG variable /topology/node/node_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_node_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True)""", + }) + + self.__node_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_node_id(self): + self.__node_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="node-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + + def _get_port(self): + """ + Getter method for port, mapped from YANG variable /topology/node/port (list) + """ + return self.__port + + def _set_port(self, v, load=False): + """ + Setter method for port, mapped from YANG variable /topology/node/port (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """port must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True)""", + }) + + self.__port = t + if hasattr(self, '_set'): + self._set() + + def _unset_port(self): + self.__port = YANGDynClass(base=YANGListType("port_id",yc_port_topology__topology_node_port, yang_name="port", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='port-id', extensions=None), is_container='list', yang_name="port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + node_id = __builtin__.property(_get_node_id, _set_node_id) + port = __builtin__.property(_get_port, _set_port) + + + _pyangbind_elements = OrderedDict([('node_id', node_id), ('port', port), ]) + + +class yc_link_topology__topology_link(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology/link. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__link_id','__source_node','__target_node','__source_port','__target_port',) + + _yang_name = 'link' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__link_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['topology', 'link'] + + def _get_link_id(self): + """ + Getter method for link_id, mapped from YANG variable /topology/link/link_id (string) + """ + return self.__link_id + + def _set_link_id(self, v, load=False): + """ + Setter method for link_id, mapped from YANG variable /topology/link/link_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_link_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True)""", + }) + + self.__link_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_link_id(self): + self.__link_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="link-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:topology', defining_module='topology', yang_type='string', is_config=True) + + + def _get_source_node(self): + """ + Getter method for source_node, mapped from YANG variable /topology/link/source_node (leafref) + """ + return self.__source_node + + def _set_source_node(self, v, load=False): + """ + Setter method for source_node, mapped from YANG variable /topology/link/source_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__source_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_node(self): + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + + def _get_target_node(self): + """ + Getter method for target_node, mapped from YANG variable /topology/link/target_node (leafref) + """ + return self.__target_node + + def _set_target_node(self, v, load=False): + """ + Setter method for target_node, mapped from YANG variable /topology/link/target_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__target_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_node(self): + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + + def _get_source_port(self): + """ + Getter method for source_port, mapped from YANG variable /topology/link/source_port (leafref) + """ + return self.__source_port + + def _set_source_port(self, v, load=False): + """ + Setter method for source_port, mapped from YANG variable /topology/link/source_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__source_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_port(self): + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + + def _get_target_port(self): + """ + Getter method for target_port, mapped from YANG variable /topology/link/target_port (leafref) + """ + return self.__target_port + + def _set_target_port(self, v, load=False): + """ + Setter method for target_port, mapped from YANG variable /topology/link/target_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True)""", + }) + + self.__target_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_port(self): + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:topology', defining_module='topology', yang_type='leafref', is_config=True) + + link_id = __builtin__.property(_get_link_id, _set_link_id) + source_node = __builtin__.property(_get_source_node, _set_source_node) + target_node = __builtin__.property(_get_target_node, _set_target_node) + source_port = __builtin__.property(_get_source_port, _set_source_port) + target_port = __builtin__.property(_get_target_port, _set_target_port) + + + _pyangbind_elements = OrderedDict([('link_id', link_id), ('source_node', source_node), ('target_node', target_node), ('source_port', source_port), ('target_port', target_port), ]) + + +class yc_topology_topology__topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__node','__link',) + + _yang_name = 'topology' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__node = YANGDynClass(base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + self.__link = YANGDynClass(base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return ['topology'] + + def _get_node(self): + """ + Getter method for node, mapped from YANG variable /topology/node (list) + """ + return self.__node + + def _set_node(self, v, load=False): + """ + Setter method for node, mapped from YANG variable /topology/node (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """node must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True)""", + }) + + self.__node = t + if hasattr(self, '_set'): + self._set() + + def _unset_node(self): + self.__node = YANGDynClass(base=YANGListType("node_id",yc_node_topology__topology_node, yang_name="node", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='node-id', extensions=None), is_container='list', yang_name="node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + + def _get_link(self): + """ + Getter method for link, mapped from YANG variable /topology/link (list) + """ + return self.__link + + def _set_link(self, v, load=False): + """ + Setter method for link, mapped from YANG variable /topology/link (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_link is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_link() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """link must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True)""", + }) + + self.__link = t + if hasattr(self, '_set'): + self._set() + + def _unset_link(self): + self.__link = YANGDynClass(base=YANGListType("link_id",yc_link_topology__topology_link, yang_name="link", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='link-id', extensions=None), is_container='list', yang_name="link", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='list', is_config=True) + + node = __builtin__.property(_get_node, _set_node) + link = __builtin__.property(_get_link, _set_link) + + + _pyangbind_elements = OrderedDict([('node', node), ('link', link), ]) + + +class topology(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module topology - based on the path /topology. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Basic example of network topology + """ + __slots__ = ('_path_helper', '_extmethods', '__topology',) + + _yang_name = 'topology' + _yang_namespace = 'urn:topology' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__topology = YANGDynClass(base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [] + + def _get_topology(self): + """ + Getter method for topology, mapped from YANG variable /topology (container) + """ + return self.__topology + + def _set_topology(self, v, load=False): + """ + Setter method for topology, mapped from YANG variable /topology (container) + If this variable is read-only (config: false) in the + source YANG file, then _set_topology is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_topology() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """topology must be of a type compatible with container""", + 'defined-type': "container", + 'generated-type': """YANGDynClass(base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True)""", + }) + + self.__topology = t + if hasattr(self, '_set'): + self._set() + + def _unset_topology(self): + self.__topology = YANGDynClass(base=yc_topology_topology__topology, is_container='container', yang_name="topology", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:topology', defining_module='topology', yang_type='container', is_config=True) + + topology = __builtin__.property(_get_topology, _set_topology) + + + _pyangbind_elements = OrderedDict([('topology', topology), ]) + + diff --git a/hackfest/yang/connection/binding_connection.py b/hackfest/yang/connection/binding_connection.py new file mode 100644 index 0000000000000000000000000000000000000000..6da8d21d942afce3e3502783def6179bef406cae --- /dev/null +++ b/hackfest/yang/connection/binding_connection.py @@ -0,0 +1,411 @@ +# -*- coding: utf-8 -*- +from operator import attrgetter +from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType +from pyangbind.lib.yangtypes import RestrictedClassType +from pyangbind.lib.yangtypes import TypedListType +from pyangbind.lib.yangtypes import YANGBool +from pyangbind.lib.yangtypes import YANGListType +from pyangbind.lib.yangtypes import YANGDynClass +from pyangbind.lib.yangtypes import ReferenceType +from pyangbind.lib.base import PybindBase +from collections import OrderedDict +from decimal import Decimal +from bitarray import bitarray +import six + +# PY3 support of some PY2 keywords (needs improved) +if six.PY3: + import builtins as __builtin__ + long = int +elif six.PY2: + import __builtin__ + +class yc_connection_connection__connection(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module connection - based on the path /connection. Each member element of + the container is represented as a class variable - with a specific + YANG type. + """ + __slots__ = ('_path_helper', '_extmethods', '__connection_id','__source_node','__target_node','__source_port','__target_port','__bandwidth','__layer_protocol_name',) + + _yang_name = 'connection' + _yang_namespace = 'urn:connection' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True) + self.__connection_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True) + self.__bandwidth = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True) + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [u'connection'] + + def _get_connection_id(self): + """ + Getter method for connection_id, mapped from YANG variable /connection/connection_id (string) + """ + return self.__connection_id + + def _set_connection_id(self, v, load=False): + """ + Setter method for connection_id, mapped from YANG variable /connection/connection_id (string) + If this variable is read-only (config: false) in the + source YANG file, then _set_connection_id is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connection_id() directly. + """ + parent = getattr(self, "_parent", None) + if parent is not None and load is False: + raise AttributeError("Cannot set keys directly when" + + " within an instantiated list") + + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connection_id must be of a type compatible with string""", + 'defined-type': "string", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True)""", + }) + + self.__connection_id = t + if hasattr(self, '_set'): + self._set() + + def _unset_connection_id(self): + self.__connection_id = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="connection-id", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, is_keyval=True, namespace='urn:connection', defining_module='connection', yang_type='string', is_config=True) + + + def _get_source_node(self): + """ + Getter method for source_node, mapped from YANG variable /connection/source_node (leafref) + """ + return self.__source_node + + def _set_source_node(self, v, load=False): + """ + Setter method for source_node, mapped from YANG variable /connection/source_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__source_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_node(self): + self.__source_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_target_node(self): + """ + Getter method for target_node, mapped from YANG variable /connection/target_node (leafref) + """ + return self.__target_node + + def _set_target_node(self, v, load=False): + """ + Setter method for target_node, mapped from YANG variable /connection/target_node (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_node is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_node() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_node must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__target_node = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_node(self): + self.__target_node = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-node", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_source_port(self): + """ + Getter method for source_port, mapped from YANG variable /connection/source_port (leafref) + """ + return self.__source_port + + def _set_source_port(self, v, load=False): + """ + Setter method for source_port, mapped from YANG variable /connection/source_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_source_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_source_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """source_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__source_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_source_port(self): + self.__source_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="source-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_target_port(self): + """ + Getter method for target_port, mapped from YANG variable /connection/target_port (leafref) + """ + return self.__target_port + + def _set_target_port(self, v, load=False): + """ + Setter method for target_port, mapped from YANG variable /connection/target_port (leafref) + If this variable is read-only (config: false) in the + source YANG file, then _set_target_port is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_target_port() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """target_port must be of a type compatible with leafref""", + 'defined-type': "leafref", + 'generated-type': """YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True)""", + }) + + self.__target_port = t + if hasattr(self, '_set'): + self._set() + + def _unset_target_port(self): + self.__target_port = YANGDynClass(base=six.text_type, is_leaf=True, yang_name="target-port", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='leafref', is_config=True) + + + def _get_bandwidth(self): + """ + Getter method for bandwidth, mapped from YANG variable /connection/bandwidth (uint32) + """ + return self.__bandwidth + + def _set_bandwidth(self, v, load=False): + """ + Setter method for bandwidth, mapped from YANG variable /connection/bandwidth (uint32) + If this variable is read-only (config: false) in the + source YANG file, then _set_bandwidth is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_bandwidth() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """bandwidth must be of a type compatible with uint32""", + 'defined-type': "uint32", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True)""", + }) + + self.__bandwidth = t + if hasattr(self, '_set'): + self._set() + + def _unset_bandwidth(self): + self.__bandwidth = YANGDynClass(base=RestrictedClassType(base_type=long, restriction_dict={'range': ['0..4294967295']}, int_size=32), is_leaf=True, yang_name="bandwidth", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='uint32', is_config=True) + + + def _get_layer_protocol_name(self): + """ + Getter method for layer_protocol_name, mapped from YANG variable /connection/layer_protocol_name (topology:layer-protocol-name) + """ + return self.__layer_protocol_name + + def _set_layer_protocol_name(self, v, load=False): + """ + Setter method for layer_protocol_name, mapped from YANG variable /connection/layer_protocol_name (topology:layer-protocol-name) + If this variable is read-only (config: false) in the + source YANG file, then _set_layer_protocol_name is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_layer_protocol_name() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """layer_protocol_name must be of a type compatible with topology:layer-protocol-name""", + 'defined-type': "topology:layer-protocol-name", + 'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True)""", + }) + + self.__layer_protocol_name = t + if hasattr(self, '_set'): + self._set() + + def _unset_layer_protocol_name(self): + self.__layer_protocol_name = YANGDynClass(base=RestrictedClassType(base_type=six.text_type, restriction_type="dict_key", restriction_arg={u'ETH': {}, u'OPTICAL': {}},), is_leaf=True, yang_name="layer-protocol-name", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='urn:connection', defining_module='connection', yang_type='topology:layer-protocol-name', is_config=True) + + connection_id = __builtin__.property(_get_connection_id, _set_connection_id) + source_node = __builtin__.property(_get_source_node, _set_source_node) + target_node = __builtin__.property(_get_target_node, _set_target_node) + source_port = __builtin__.property(_get_source_port, _set_source_port) + target_port = __builtin__.property(_get_target_port, _set_target_port) + bandwidth = __builtin__.property(_get_bandwidth, _set_bandwidth) + layer_protocol_name = __builtin__.property(_get_layer_protocol_name, _set_layer_protocol_name) + + + _pyangbind_elements = OrderedDict([('connection_id', connection_id), ('source_node', source_node), ('target_node', target_node), ('source_port', source_port), ('target_port', target_port), ('bandwidth', bandwidth), ('layer_protocol_name', layer_protocol_name), ]) + + +class connection(PybindBase): + """ + This class was auto-generated by the PythonClass plugin for PYANG + from YANG module connection - based on the path /connection. Each member element of + the container is represented as a class variable - with a specific + YANG type. + + YANG Description: Basic example of network topology + """ + __slots__ = ('_path_helper', '_extmethods', '__connection',) + + _yang_name = 'connection' + _yang_namespace = 'urn:connection' + + _pybind_generated_by = 'container' + + def __init__(self, *args, **kwargs): + + self._path_helper = False + + self._extmethods = False + self.__connection = YANGDynClass(base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True) + + load = kwargs.pop("load", None) + if args: + if len(args) > 1: + raise TypeError("cannot create a YANG container with >1 argument") + all_attr = True + for e in self._pyangbind_elements: + if not hasattr(args[0], e): + all_attr = False + break + if not all_attr: + raise ValueError("Supplied object did not have the correct attributes") + for e in self._pyangbind_elements: + nobj = getattr(args[0], e) + if nobj._changed() is False: + continue + setmethod = getattr(self, "_set_%s" % e) + if load is None: + setmethod(getattr(args[0], e)) + else: + setmethod(getattr(args[0], e), load=load) + + def _path(self): + if hasattr(self, "_parent"): + return self._parent._path()+[self._yang_name] + else: + return [] + + def _get_connection(self): + """ + Getter method for connection, mapped from YANG variable /connection (list) + """ + return self.__connection + + def _set_connection(self, v, load=False): + """ + Setter method for connection, mapped from YANG variable /connection (list) + If this variable is read-only (config: false) in the + source YANG file, then _set_connection is considered as a private + method. Backends looking to populate this variable should + do so via calling thisObj._set_connection() directly. + """ + if hasattr(v, "_utype"): + v = v._utype(v) + try: + t = YANGDynClass(v,base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True) + except (TypeError, ValueError): + raise ValueError({ + 'error-string': """connection must be of a type compatible with list""", + 'defined-type': "list", + 'generated-type': """YANGDynClass(base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True)""", + }) + + self.__connection = t + if hasattr(self, '_set'): + self._set() + + def _unset_connection(self): + self.__connection = YANGDynClass(base=YANGListType("connection_id",yc_connection_connection__connection, yang_name="connection", parent=self, is_container='list', user_ordered=False, path_helper=self._path_helper, yang_keys='connection-id', extensions=None), is_container='list', yang_name="connection", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, extensions=None, namespace='urn:connection', defining_module='connection', yang_type='list', is_config=True) + + connection = __builtin__.property(_get_connection, _set_connection) + + + _pyangbind_elements = OrderedDict([('connection', connection), ]) + + diff --git a/hackfest/yang/connection/connection.py b/hackfest/yang/connection/connection.py new file mode 100644 index 0000000000000000000000000000000000000000..c404d2f5c06508a5b23d733b618dc16dc0b20a9f --- /dev/null +++ b/hackfest/yang/connection/connection.py @@ -0,0 +1,15 @@ +from binding_connection import connection +from pyangbind.lib.serialise import pybindIETFXMLEncoder +import pyangbind.lib.pybindJSON as pybindJSON + +con = connection() +con1 = con.connection.add("con1") +con1.source_node = "node1" +con1.target_node = "node2" +con1.source_port = "node1portA" +con1.target_port = "node2portA" +con1.bandwidth = 1000 +con1.layer_protocol_name = "OPTICAL" + +print(pybindIETFXMLEncoder.serialise(con)) +print(pybindJSON.dumps(con)) diff --git a/hackfest/yang/connection/connection.tree b/hackfest/yang/connection/connection.tree new file mode 100644 index 0000000000000000000000000000000000000000..cf8954eb7ceeae52d22ba73b37c482804dcca068 --- /dev/null +++ b/hackfest/yang/connection/connection.tree @@ -0,0 +1,9 @@ +module: connection + +--rw connection* [connection-id] + +--rw connection-id string + +--rw source-node? -> /topology:topology/node/node-id + +--rw target-node? -> /topology:topology/node/node-id + +--rw source-port? -> /topology:topology/node/port/port-id + +--rw target-port? -> /topology:topology/node/port/port-id + +--rw bandwidth? uint32 + +--rw layer-protocol-name? topology:layer-protocol-name diff --git a/hackfest/yang/connection/connection.uml b/hackfest/yang/connection/connection.uml new file mode 100644 index 0000000000000000000000000000000000000000..9abf20da021b920eb4b34e963192c14e178318ad --- /dev/null +++ b/hackfest/yang/connection/connection.uml @@ -0,0 +1,38 @@ +'Download plantuml from http://plantuml.sourceforge.net/ +'Generate png with java -jar plantuml.jar +'Output in img/.png +'If Java spits out memory error increase heap size with java -Xmx1024m -jar plantuml.jar +@startuml img/connection.png +hide empty fields +hide empty methods +hide <> circle +hide <> circle +hide <> circle +hide <> stereotype +hide <> circle +page 1x1 +Title connection +package "topology:topology" as topology_topology { +} +note top of connection_connection : Namespace: urn:connection \nPrefix: connection \nOrganization : \nCTTC \nContact : \nricard.vilalta@cttc.es \nRevision : 2018-08-24 \n +package "connection:connection" as connection_connection { +topology_topology +-- connection_connection +class "connection" as connection << (M, #33CCFF) module>> +class "connection" as connection_I_connection_grouping <<(G,Lime) grouping>> +connection_I_connection_grouping : connection-id : string +connection_I_connection_grouping : source-node : leafref : /topology:topology/topology:node/topology:node-id +connection_I_connection_grouping : target-node : leafref : /topology:topology/topology:node/topology:node-id +connection_I_connection_grouping : source-port : leafref : /topology:topology/topology:node/topology:port/topology:port-id +connection_I_connection_grouping : target-port : leafref : /topology:topology/topology:node/topology:port/topology:port-id +connection_I_connection_grouping : bandwidth : uint32 +connection_I_connection_grouping : layer-protocol-name : topology:layer-protocol-name +class "connection" as connection_I_connection << (L, #FF7700) list>> +connection *-- "0..N" connection_I_connection +connection_I_connection : connection {uses} +} + +connection_I_connection --> connection_I_connection_grouping : uses +center footer + UML Generated : 2018-11-08 09:13 + endfooter +@enduml diff --git a/hackfest/yang/connection/connection.yang b/hackfest/yang/connection/connection.yang new file mode 100644 index 0000000000000000000000000000000000000000..b94f9f81d932c829c4bb13f1fdd85781e8a6cc33 --- /dev/null +++ b/hackfest/yang/connection/connection.yang @@ -0,0 +1,68 @@ +module connection { + + namespace "urn:connection"; + + prefix "connection"; + + import topology { + prefix "topology"; + } + + organization + "CTTC"; + + contact + "ricard.vilalta@cttc.es"; + + description + "Basic example of network topology"; + + revision "2018-08-24" { + description "Basic example of network topology"; + reference ""; + } + + /** + * Groupings + */ + grouping connection { + leaf connection-id { + type string; + } + leaf source-node { + type leafref { + path "/topology:topology/topology:node/topology:node-id"; + } + } + leaf target-node { + type leafref { + path "/topology:topology/topology:node/topology:node-id"; + } + } + leaf source-port { + type leafref { + path "/topology:topology/topology:node/topology:port/topology:port-id"; + } + } + leaf target-port { + type leafref { + path "/topology:topology/topology:node/topology:port/topology:port-id"; + } + } + leaf bandwidth { + type uint32; + } + leaf layer-protocol-name { + type topology:layer-protocol-name; + } + } + + /** + * Container/lists + */ + list connection { + key "connection-id"; + uses connection; + } + +} diff --git a/hackfest/yang/img/connection.png b/hackfest/yang/img/connection.png new file mode 100644 index 0000000000000000000000000000000000000000..f282df27e0ffaa079b007157c2078d1e95655d9e Binary files /dev/null and b/hackfest/yang/img/connection.png differ diff --git a/hackfest/yang/img/topology.png b/hackfest/yang/img/topology.png new file mode 100644 index 0000000000000000000000000000000000000000..69ea84a1ee6a1396233381841ffef1e00edeb88d Binary files /dev/null and b/hackfest/yang/img/topology.png differ diff --git a/hackfest/yang/plantuml.jar b/hackfest/yang/plantuml.jar new file mode 100644 index 0000000000000000000000000000000000000000..880a35ec71b4de28da4541603ee08c5189831791 Binary files /dev/null and b/hackfest/yang/plantuml.jar differ diff --git a/hackfest/yang/topology.py b/hackfest/yang/topology.py new file mode 100644 index 0000000000000000000000000000000000000000..441300fb5ca91243e55bbd1995b6610109b52d7e --- /dev/null +++ b/hackfest/yang/topology.py @@ -0,0 +1,20 @@ +from binding_topology import topology +from pyangbind.lib.serialise import pybindIETFXMLEncoder +import pyangbind.lib.pybindJSON as pybindJSON + +topo = topology() + +node1 = topo.topology.node.add("node1") +node1.port.add("node1portA") + +node2 = topo.topology.node.add("node2") +node2.port.add("node2portA") + +link = topo.topology.link.add("link1") +link.source_node = "node1" +link.target_node = "node2" +link.source_port = "node1portA" +link.target_port = "node2portA" + +print(pybindIETFXMLEncoder.serialise(topo)) +print(pybindJSON.dumps(topo)) diff --git a/hackfest/yang/topology.tree b/hackfest/yang/topology.tree new file mode 100644 index 0000000000000000000000000000000000000000..0baf4768f3cc85c5465d04b0ff1a55b939077167 --- /dev/null +++ b/hackfest/yang/topology.tree @@ -0,0 +1,13 @@ +module: topology + +--rw topology + +--rw node* [node-id] + | +--rw node-id string + | +--rw port* [port-id] + | +--rw port-id string + | +--rw layer-protocol-name? layer-protocol-name + +--rw link* [link-id] + +--rw link-id string + +--rw source-node? -> /topology/node/node-id + +--rw target-node? -> /topology/node/node-id + +--rw source-port? -> /topology/node/port/port-id + +--rw target-port? -> /topology/node/port/port-id diff --git a/hackfest/yang/topology.uml b/hackfest/yang/topology.uml new file mode 100644 index 0000000000000000000000000000000000000000..b4210312c1a594df306898de78835eb50989563d --- /dev/null +++ b/hackfest/yang/topology.uml @@ -0,0 +1,55 @@ +'Download plantuml from http://plantuml.sourceforge.net/ +'Generate png with java -jar plantuml.jar +'Output in img/.png +'If Java spits out memory error increase heap size with java -Xmx1024m -jar plantuml.jar +@startuml img/topology.png +hide empty fields +hide empty methods +hide <> circle +hide <> circle +hide <> circle +hide <> stereotype +hide <> circle +page 1x1 +Title topology +note top of topology_topology : Namespace: urn:topology \nPrefix: topology \nOrganization : \nCTTC \nContact : \nricard.vilalta@cttc.es \nRevision : 2018-08-24 \n +package "topology:topology" as topology_topology { +class "topology" as topology << (M, #33CCFF) module>> +enum "layer-protocol-name" as topology_I_layer_protocol_name { +ETH +OPTICAL +} +class "port" as topology_I_port_grouping <<(G,Lime) grouping>> +topology_I_port_grouping : port-id : string +topology_I_port_grouping : layer-protocol-name : layer-protocol-name +class "node" as topology_I_node_grouping <<(G,Lime) grouping>> +topology_I_node_grouping : node-id : string +class "port" as topology_I_node_I_port << (L, #FF7700) list>> +topology_I_node_grouping *-- "0..N" topology_I_node_I_port +topology_I_node_I_port : port {uses} +class "link" as topology_I_link_grouping <<(G,Lime) grouping>> +topology_I_link_grouping : link-id : string +topology_I_link_grouping : source-node : leafref : /topology/node/node-id +topology_I_link_grouping : target-node : leafref : /topology/node/node-id +topology_I_link_grouping : source-port : leafref : /topology/node/port/port-id +topology_I_link_grouping : target-port : leafref : /topology/node/port/port-id +class "topology" as topology_I_topology_grouping <<(G,Lime) grouping>> +class "node" as topology_I_topology_I_node << (L, #FF7700) list>> +topology_I_topology_grouping *-- "0..N" topology_I_topology_I_node +topology_I_topology_I_node : node {uses} +class "link" as topology_I_topology_I_link << (L, #FF7700) list>> +topology_I_topology_grouping *-- "0..N" topology_I_topology_I_link +topology_I_topology_I_link : link {uses} +class "topology" as topology_I_topology <> +topology *-- "1" topology_I_topology +topology_I_topology : topology {uses} +} + +topology_I_node_I_port --> topology_I_port_grouping : uses +topology_I_topology_I_node --> topology_I_node_grouping : uses +topology_I_topology_I_link --> topology_I_link_grouping : uses +topology_I_topology --> topology_I_topology_grouping : uses +center footer + UML Generated : 2022-10-10 17:35 + endfooter +@enduml diff --git a/hackfest/yang/topology.xml b/hackfest/yang/topology.xml new file mode 100644 index 0000000000000000000000000000000000000000..93af480850b540669f133a76b12519f5554b8850 --- /dev/null +++ b/hackfest/yang/topology.xml @@ -0,0 +1,23 @@ + + + + node1 + + node1portA + + + + node2 + + node2portA + + + + link1 + node1 + node1portA + node2 + node2portA + + + diff --git a/hackfest/yang/topology.yang b/hackfest/yang/topology.yang new file mode 100644 index 0000000000000000000000000000000000000000..521ceacd817fa70e89609dca825db2c7fa9c8302 --- /dev/null +++ b/hackfest/yang/topology.yang @@ -0,0 +1,99 @@ +module topology { + + namespace "urn:topology"; + + prefix "topology"; + + organization + "CTTC"; + + contact + "ricard.vilalta@cttc.es"; + + description + "Basic example of network topology"; + + revision "2018-08-24" { + description "Basic example of network topology"; + reference ""; + } + + /** + * Typedefs / identities + */ + typedef layer-protocol-name { + type enumeration { + enum "ETH"; + enum "OPTICAL"; + } + } + + + /** + * Groupings + */ + grouping port { + leaf port-id { + type string; + } + leaf layer-protocol-name { + type layer-protocol-name; + } + + } + + grouping node { + leaf node-id { + type string; + } + list port { + key "port-id"; + uses port; + } + } + + grouping link { + leaf link-id { + type string; + } + leaf source-node { + type leafref { + path "/topology/node/node-id"; + } + } + leaf target-node { + type leafref { + path "/topology/node/node-id"; + } + } + leaf source-port { + type leafref { + path "/topology/node/port/port-id"; + } + } + leaf target-port { + type leafref { + path "/topology/node/port/port-id"; + } + } + } + + grouping topology { + list node { + key "node-id"; + uses node; + } + list link { + key "link-id"; + uses link; + } + } + + /** + * Container/lists + */ + container topology { + uses topology; + } + +} diff --git a/manifests/contextservice.yaml b/manifests/contextservice.yaml index 04da586dfeb25a01a6f5267aa31441498ce4f2cc..2998640327864c1e9c2f6782a5adf252eb6673a7 100644 --- a/manifests/contextservice.yaml +++ b/manifests/contextservice.yaml @@ -34,10 +34,10 @@ spec: - containerPort: 6379 resources: requests: - cpu: 250m - memory: 512Mi + cpu: 100m + memory: 128Mi limits: - cpu: 700m + cpu: 500m memory: 1024Mi - name: server image: registry.gitlab.com/teraflow-h2020/controller/context:latest @@ -45,6 +45,7 @@ spec: ports: - containerPort: 1010 - containerPort: 8080 + - containerPort: 9192 env: - name: DB_BACKEND value: "redis" @@ -64,16 +65,18 @@ spec: command: ["/bin/grpc_health_probe", "-addr=:1010"] resources: requests: - cpu: 250m - memory: 512Mi + cpu: 50m + memory: 64Mi limits: - cpu: 700m - memory: 1024Mi + cpu: 500m + memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: contextservice + labels: + app: contextservice spec: type: ClusterIP selector: @@ -87,3 +90,7 @@ spec: protocol: TCP port: 8080 targetPort: 8080 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 diff --git a/manifests/deviceservice.yaml b/manifests/deviceservice.yaml index 171394f7c43b2447e898902c78d5276fe1bcbc7c..83daa41f3c0cdf8e84b02dfc0ad18d8f7644e57b 100644 --- a/manifests/deviceservice.yaml +++ b/manifests/deviceservice.yaml @@ -20,6 +20,7 @@ spec: selector: matchLabels: app: deviceservice + replicas: 1 template: metadata: labels: @@ -32,6 +33,7 @@ spec: imagePullPolicy: Always ports: - containerPort: 2020 + - containerPort: 9192 env: - name: LOG_LEVEL value: "INFO" @@ -43,16 +45,18 @@ spec: command: ["/bin/grpc_health_probe", "-addr=:2020"] resources: requests: - cpu: 250m - memory: 512Mi + cpu: 50m + memory: 64Mi limits: - cpu: 700m - memory: 1024Mi + cpu: 500m + memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: deviceservice + labels: + app: deviceservice spec: type: ClusterIP selector: @@ -62,3 +66,7 @@ spec: protocol: TCP port: 2020 targetPort: 2020 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 diff --git a/manifests/dltservice.yaml b/manifests/dltservice.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0f6b5bb9df1ccfc6057c0746058da6754233376a --- /dev/null +++ b/manifests/dltservice.yaml @@ -0,0 +1,100 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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: apps/v1 +kind: Deployment +metadata: + name: dltservice +spec: + selector: + matchLabels: + app: dltservice + template: + metadata: + labels: + app: dltservice + spec: + terminationGracePeriodSeconds: 5 + containers: + - name: connector + image: registry.gitlab.com/teraflow-h2020/controller/dlt-connector:latest + imagePullPolicy: Always + ports: + - containerPort: 8080 + - containerPort: 9192 + env: + - name: LOG_LEVEL + value: "INFO" + ## for debug purposes + #- name: DLT_GATEWAY_HOST + # value: "mock-blockchain.tfs-bchain.svc.cluster.local" + #- name: DLT_GATEWAY_PORT + # value: "50051" + readinessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:8080"] + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:8080"] + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + cpu: 500m + memory: 512Mi + - name: gateway + image: registry.gitlab.com/teraflow-h2020/controller/dlt-gateway:latest + imagePullPolicy: Always + ports: + - containerPort: 50051 + #readinessProbe: + # httpGet: + # path: /health + # port: 8081 + # initialDelaySeconds: 5 + # timeoutSeconds: 5 + #livenessProbe: + # httpGet: + # path: /health + # port: 8081 + # initialDelaySeconds: 5 + # timeoutSeconds: 5 + resources: + requests: + cpu: 200m + memory: 512Mi + limits: + cpu: 700m + memory: 1024Mi +--- +apiVersion: v1 +kind: Service +metadata: + name: dltservice + labels: + app: dltservice +spec: + type: ClusterIP + selector: + app: dltservice + ports: + - name: grpc + protocol: TCP + port: 8080 + targetPort: 8080 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 diff --git a/manifests/interdomainservice.yaml b/manifests/interdomainservice.yaml index ca30da0101659f801440af343e42851146d17bda..b275035f62c68eeb8d28f1892909650ca10defee 100644 --- a/manifests/interdomainservice.yaml +++ b/manifests/interdomainservice.yaml @@ -32,9 +32,10 @@ spec: imagePullPolicy: Always ports: - containerPort: 10010 + - containerPort: 9192 env: - name: LOG_LEVEL - value: "DEBUG" + value: "INFO" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:10010"] @@ -43,16 +44,18 @@ spec: command: ["/bin/grpc_health_probe", "-addr=:10010"] resources: requests: - cpu: 250m - memory: 512Mi + cpu: 50m + memory: 64Mi limits: - cpu: 700m - memory: 1024Mi + cpu: 500m + memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: interdomainservice + labels: + app: interdomainservice spec: type: ClusterIP selector: @@ -62,3 +65,7 @@ spec: protocol: TCP port: 10010 targetPort: 10010 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 diff --git a/manifests/mock_blockchain.yaml b/manifests/mock_blockchain.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bf9abac703b263ad6a843f0d70848dde94a4ab97 --- /dev/null +++ b/manifests/mock_blockchain.yaml @@ -0,0 +1,64 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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: apps/v1 +kind: Deployment +metadata: + name: mock-blockchain +spec: + selector: + matchLabels: + app: mock-blockchain + template: + metadata: + labels: + app: mock-blockchain + spec: + terminationGracePeriodSeconds: 5 + containers: + - name: server + image: registry.gitlab.com/teraflow-h2020/controller/mock_blockchain:latest + imagePullPolicy: Always + ports: + - containerPort: 50051 + env: + - name: LOG_LEVEL + value: "INFO" + readinessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:50051"] + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:50051"] + resources: + requests: + cpu: 100m + memory: 512Mi + limits: + cpu: 700m + memory: 1024Mi +--- +apiVersion: v1 +kind: Service +metadata: + name: mock-blockchain +spec: + type: ClusterIP + selector: + app: mock-blockchain + ports: + - name: grpc + protocol: TCP + port: 50051 + targetPort: 50051 diff --git a/manifests/monitoringservice.yaml b/manifests/monitoringservice.yaml index 7f0bee9efc68e66c72487624241e763dccb2fc76..aed8d1c51e5e84abec11dcc272c786b208dd9556 100644 --- a/manifests/monitoringservice.yaml +++ b/manifests/monitoringservice.yaml @@ -13,13 +13,14 @@ # limitations under the License. apiVersion: apps/v1 -kind: Deployment +kind: StatefulSet metadata: - name: monitoringservice + name: monitoringdb spec: selector: matchLabels: app: monitoringservice + serviceName: "monitoringservice" replicas: 1 template: metadata: @@ -32,35 +33,53 @@ spec: - name: metricsdb image: questdb/questdb ports: - - containerPort: 9000 - - containerPort: 9009 - - containerPort: 9003 + - name: http + containerPort: 9000 + protocol: TCP + - name: influxdb + containerPort: 9009 + protocol: TCP + - name: postgre + containerPort: 8812 + protocol: TCP env: - name: QDB_CAIRO_COMMIT_LAG value: "1000" - name: QDB_CAIRO_MAX_UNCOMMITTED_ROWS value: "100000" - readinessProbe: - exec: - command: ["curl", "-XGET", "localhost:9000"] - livenessProbe: - exec: - command: ["curl", "-XGET", "localhost:9003/metrics"] - resources: - requests: - cpu: 250m - memory: 512Mi - limits: - cpu: 700m - memory: 1024Mi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: monitoringservice +spec: + selector: + matchLabels: + app: monitoringservice + replicas: 1 + template: + metadata: + labels: + app: monitoringservice + spec: + terminationGracePeriodSeconds: 5 + restartPolicy: Always + containers: - name: server image: registry.gitlab.com/teraflow-h2020/controller/monitoring:latest imagePullPolicy: Always ports: - - containerPort: 7070 + - name: grpc + containerPort: 7070 + protocol: TCP + - name: metrics + containerPort: 9192 + protocol: TCP env: + - name: LOG_LEVEL + value: "INFO" - name: METRICSDB_HOSTNAME - value: "localhost" + value: "monitoringservice" - name: METRICSDB_ILP_PORT value: "9009" - name: METRICSDB_REST_PORT @@ -80,12 +99,13 @@ spec: limits: cpu: 700m memory: 1024Mi - --- apiVersion: v1 kind: Service metadata: name: monitoringservice + labels: + app: monitoringservice spec: type: ClusterIP selector: @@ -95,7 +115,41 @@ spec: protocol: TCP port: 7070 targetPort: 7070 - - name: questdb + - name: http protocol: TCP port: 9000 - targetPort: 9000 \ No newline at end of file + targetPort: 9000 + - name: influxdb + protocol: TCP + port: 9009 + targetPort: 9009 + - name: postgre + protocol: TCP + port: 8812 + targetPort: 8812 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 + +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: access-monitoring +spec: + podSelector: + matchLabels: + app: monitoringservice + ingress: + - from: [] + ports: + - port: 7070 + - port: 8812 + - from: + - podSelector: + matchLabels: + app: monitoringservice + ports: + - port: 9009 + - port: 9000 diff --git a/manifests/pathcompservice.yaml b/manifests/pathcompservice.yaml index b5316e22f1eefd4177ae33f4fc89da256f65bff8..71c927b567316bb118ff085f1727abd03e92c0d7 100644 --- a/manifests/pathcompservice.yaml +++ b/manifests/pathcompservice.yaml @@ -20,6 +20,7 @@ spec: selector: matchLabels: app: pathcompservice + replicas: 5 template: metadata: labels: @@ -27,11 +28,12 @@ spec: spec: terminationGracePeriodSeconds: 5 containers: - - name: server - image: registry.gitlab.com/teraflow-h2020/controller/pathcomp:latest + - name: frontend + image: registry.gitlab.com/teraflow-h2020/controller/pathcomp-frontend:latest imagePullPolicy: Always ports: - containerPort: 10020 + - containerPort: 9192 env: - name: LOG_LEVEL value: "INFO" @@ -43,8 +45,30 @@ spec: command: ["/bin/grpc_health_probe", "-addr=:10020"] resources: requests: - cpu: 250m + cpu: 50m + memory: 64Mi + limits: + cpu: 500m memory: 512Mi + - name: backend + image: registry.gitlab.com/teraflow-h2020/controller/pathcomp-backend:latest + imagePullPolicy: Always + #readinessProbe: + # httpGet: + # path: /health + # port: 8081 + # initialDelaySeconds: 5 + # timeoutSeconds: 5 + #livenessProbe: + # httpGet: + # path: /health + # port: 8081 + # initialDelaySeconds: 5 + # timeoutSeconds: 5 + resources: + requests: + cpu: 100m + memory: 256Mi limits: cpu: 700m memory: 1024Mi @@ -53,6 +77,8 @@ apiVersion: v1 kind: Service metadata: name: pathcompservice + labels: + app: pathcompservice spec: type: ClusterIP selector: @@ -62,3 +88,11 @@ spec: protocol: TCP port: 10020 targetPort: 10020 + - name: http + protocol: TCP + port: 8081 + targetPort: 8081 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 diff --git a/manifests/servicemonitors.yaml b/manifests/servicemonitors.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ad5f042baa273d67d646a9168be1e0c0b1133ec1 --- /dev/null +++ b/manifests/servicemonitors.yaml @@ -0,0 +1,231 @@ +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-contextservice-metric + labels: + app: contextservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: contextservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-deviceservice-metric + labels: + app: deviceservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: deviceservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-serviceservice-metric + labels: + app: serviceservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: serviceservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-sliceservice-metric + labels: + app: sliceservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: sliceservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-pathcompservice-metric + labels: + app: pathcompservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: pathcompservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-monitoringservice-metric + labels: + app: monitoringservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: monitoringservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-dltservice-metric + labels: + app: dltservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: dltservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + namespace: monitoring # namespace where prometheus is running + name: tfs-interdomainservice-metric + labels: + app: interdomainservice + #release: prometheus + #release: prom # name of the release + # ( VERY IMPORTANT: You need to know the correct release name by viewing + # the servicemonitor of Prometheus itself: Without the correct name, + # Prometheus cannot identify the metrics of the Flask app as the target.) +spec: + selector: + matchLabels: + # Target app service + #namespace: tfs + app: interdomainservice # same as above + #release: prometheus # same as above + endpoints: + - port: metrics # named port in target app + scheme: http + path: /metrics # path to scrape + interval: 5s # scrape interval + namespaceSelector: + any: false + matchNames: + - tfs # namespace where the app is running diff --git a/manifests/serviceservice.yaml b/manifests/serviceservice.yaml index 75832b94fa2a6ba97617641e7b249157508614bf..089be20f969509c9d5f12922a6cd991acd2f3bc0 100644 --- a/manifests/serviceservice.yaml +++ b/manifests/serviceservice.yaml @@ -20,6 +20,7 @@ spec: selector: matchLabels: app: serviceservice + replicas: 5 template: metadata: labels: @@ -32,6 +33,7 @@ spec: imagePullPolicy: Always ports: - containerPort: 3030 + - containerPort: 9192 env: - name: LOG_LEVEL value: "INFO" @@ -43,16 +45,18 @@ spec: command: ["/bin/grpc_health_probe", "-addr=:3030"] resources: requests: - cpu: 250m - memory: 512Mi + cpu: 50m + memory: 64Mi limits: - cpu: 700m - memory: 1024Mi + cpu: 500m + memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: serviceservice + labels: + app: serviceservice spec: type: ClusterIP selector: @@ -62,3 +66,7 @@ spec: protocol: TCP port: 3030 targetPort: 3030 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 diff --git a/manifests/sliceservice.yaml b/manifests/sliceservice.yaml index eeed3776c10958751b74fc81b52ab79806153b18..ff4b41fe7c709acf0d58c9c73b9f6198104a89fd 100644 --- a/manifests/sliceservice.yaml +++ b/manifests/sliceservice.yaml @@ -20,6 +20,7 @@ spec: selector: matchLabels: app: sliceservice + replicas: 1 template: metadata: labels: @@ -32,9 +33,10 @@ spec: imagePullPolicy: Always ports: - containerPort: 4040 + - containerPort: 9192 env: - name: LOG_LEVEL - value: "DEBUG" + value: "INFO" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:4040"] @@ -43,16 +45,18 @@ spec: command: ["/bin/grpc_health_probe", "-addr=:4040"] resources: requests: - cpu: 250m - memory: 512Mi + cpu: 50m + memory: 64Mi limits: - cpu: 700m - memory: 1024Mi + cpu: 500m + memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: sliceservice + labels: + app: sliceservice spec: type: ClusterIP selector: @@ -62,3 +66,7 @@ spec: protocol: TCP port: 4040 targetPort: 4040 + - name: metrics + protocol: TCP + port: 9192 + targetPort: 9192 diff --git a/manifests/webuiservice.yaml b/manifests/webuiservice.yaml index 52fc75a9868001d50f7380cfe238fa344de27f6e..7f70e837c4b6b979477a3a02db6e744b41387d73 100644 --- a/manifests/webuiservice.yaml +++ b/manifests/webuiservice.yaml @@ -35,12 +35,12 @@ spec: image: registry.gitlab.com/teraflow-h2020/controller/webui:latest imagePullPolicy: Always ports: - - containerPort: 8004 # TODO: define the real port + - containerPort: 8004 env: - name: LOG_LEVEL - value: "DEBUG" + value: "INFO" - name: WEBUISERVICE_SERVICE_BASEURL_HTTP - value: "/webui" + value: "/webui/" readinessProbe: httpGet: path: /healthz/ready @@ -55,13 +55,13 @@ spec: timeoutSeconds: 1 resources: requests: - cpu: 250m + cpu: 100m memory: 512Mi limits: cpu: 700m memory: 1024Mi - name: grafana - image: grafana/grafana:8.2.6 + image: grafana/grafana:8.5.11 imagePullPolicy: IfNotPresent ports: - containerPort: 3000 diff --git a/my_deploy.sh b/my_deploy.sh index 67a2e0558c25d767e14b635e6dd9174433827156..ffd91da35186fe21f418950493ef797a9af1b522 100644 --- a/my_deploy.sh +++ b/my_deploy.sh @@ -1,13 +1,13 @@ # 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 comas, you want to build images for, and deploy. +# Set the list of components, separated by spaces, you want to build images for, and deploy. # Supported components are: # context device automation policy service compute monitoring webui # interdomain slice pathcomp dlt -# dbscanserving opticalattackmitigator opticalcentralizedattackdetector +# dbscanserving opticalattackmitigator opticalattackdetector # l3_attackmitigator l3_centralizedattackdetector l3_distributedattackdetector -export TFS_COMPONENTS="context device automation service compute monitoring webui" +export TFS_COMPONENTS="context device automation monitoring pathcomp service slice compute webui" # Set the tag you want to use for your images. export TFS_IMAGE_TAG="dev" @@ -18,5 +18,9 @@ export TFS_K8S_NAMESPACE="tfs" # Set additional manifest files to be applied after the deployment export TFS_EXTRA_MANIFESTS="manifests/nginx_ingress_http.yaml" -# Set the neew Grafana admin password +# Set the new 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=${TFS_SKIP_BUILD:-""} diff --git a/nfvsdn22 b/nfvsdn22 new file mode 120000 index 0000000000000000000000000000000000000000..ac93a84be42e09c11106c5e0836bb4e51cc1fa1a --- /dev/null +++ b/nfvsdn22 @@ -0,0 +1 @@ +src/tests/nfvsdn22/ \ No newline at end of file diff --git a/proto/context.proto b/proto/context.proto index 866876175f108c056f7e35c6457a1bf48a226a9c..3f0532d231535c2e59c798cbc9a6b1c92e1eb4bf 100644 --- a/proto/context.proto +++ b/proto/context.proto @@ -51,6 +51,7 @@ service ContextService { rpc ListServices (ContextId ) returns ( ServiceList ) {} rpc GetService (ServiceId ) returns ( Service ) {} rpc SetService (Service ) returns ( ServiceId ) {} + rpc UnsetService (Service ) returns ( ServiceId ) {} rpc RemoveService (ServiceId ) returns ( Empty ) {} rpc GetServiceEvents (Empty ) returns (stream ServiceEvent ) {} @@ -58,6 +59,7 @@ service ContextService { rpc ListSlices (ContextId ) returns ( SliceList ) {} rpc GetSlice (SliceId ) returns ( Slice ) {} rpc SetSlice (Slice ) returns ( SliceId ) {} + rpc UnsetSlice (Slice ) returns ( SliceId ) {} rpc RemoveSlice (SliceId ) returns ( Empty ) {} rpc GetSliceEvents (Empty ) returns (stream SliceEvent ) {} @@ -156,6 +158,11 @@ message Device { DeviceOperationalStatusEnum device_operational_status = 4; repeated DeviceDriverEnum device_drivers = 5; repeated EndPoint device_endpoints = 6; + repeated Component component = 7; // Used for inventory +} + +message Component { + repeated string comp_string = 1; } message DeviceConfig { @@ -169,6 +176,7 @@ enum DeviceDriverEnum { DEVICEDRIVER_P4 = 3; DEVICEDRIVER_IETF_NETWORK_TOPOLOGY = 4; DEVICEDRIVER_ONF_TR_352 = 5; + DEVICEDRIVER_XR = 6; } enum DeviceOperationalStatusEnum { @@ -188,6 +196,7 @@ message DeviceList { message DeviceEvent { Event event = 1; DeviceId device_id = 2; + DeviceConfig device_config = 3; } diff --git a/proto/context_policy.proto b/proto/context_policy.proto index 9fe25dec5205b66f6d622df2f9435c1321f7e45e..efad68df6c65481a3a8c21417bc62ed230673c44 100644 --- a/proto/context_policy.proto +++ b/proto/context_policy.proto @@ -22,7 +22,7 @@ import "policy.proto"; service ContextPolicyService { rpc ListPolicyRuleIds(context.Empty ) returns (policy.PolicyRuleIdList) {} rpc ListPolicyRules (context.Empty ) returns (policy.PolicyRuleList ) {} - rpc GetPolicyRule (policy.PolicyRuleId ) returns (policy.PolicyRuleBasic ) {} - rpc SetPolicyRule (policy.PolicyRuleBasic) returns (policy.PolicyRuleId ) {} + rpc GetPolicyRule (policy.PolicyRuleId ) returns (policy.PolicyRule ) {} + rpc SetPolicyRule (policy.PolicyRule ) returns (policy.PolicyRuleId ) {} rpc RemovePolicyRule (policy.PolicyRuleId ) returns (context.Empty ) {} } diff --git a/proto/dlt_connector.proto b/proto/dlt_connector.proto index c8cbeb663fafb3c133092e9c49c2ece3f59d75ae..cee0c70bdcda42f435339751c6cfabf609b14d21 100644 --- a/proto/dlt_connector.proto +++ b/proto/dlt_connector.proto @@ -18,14 +18,41 @@ package dlt; import "context.proto"; service DltConnectorService { - rpc RecordAll (context.Empty ) returns (context.Empty) {} + rpc RecordAll (context.TopologyId) returns (context.Empty) {} - rpc RecordAllDevices (context.Empty ) returns (context.Empty) {} - rpc RecordDevice (context.DeviceId ) returns (context.Empty) {} + rpc RecordAllDevices (context.TopologyId) returns (context.Empty) {} + rpc RecordDevice (DltDeviceId ) returns (context.Empty) {} - rpc RecordAllServices(context.Empty ) returns (context.Empty) {} - rpc RecordService (context.ServiceId) returns (context.Empty) {} + rpc RecordAllLinks (context.TopologyId) returns (context.Empty) {} + rpc RecordLink (DltLinkId ) returns (context.Empty) {} - rpc RecordAllSlices (context.Empty ) returns (context.Empty) {} - rpc RecordSlice (context.SliceId ) returns (context.Empty) {} + rpc RecordAllServices(context.TopologyId) returns (context.Empty) {} + rpc RecordService (DltServiceId ) returns (context.Empty) {} + + rpc RecordAllSlices (context.TopologyId) returns (context.Empty) {} + rpc RecordSlice (DltSliceId ) returns (context.Empty) {} +} + +message DltDeviceId { + context.TopologyId topology_id = 1; + context.DeviceId device_id = 2; + bool delete = 3; +} + +message DltLinkId { + context.TopologyId topology_id = 1; + context.LinkId link_id = 2; + bool delete = 3; +} + +message DltServiceId { + context.TopologyId topology_id = 1; + context.ServiceId service_id = 2; + bool delete = 3; +} + +message DltSliceId { + context.TopologyId topology_id = 1; + context.SliceId slice_id = 2; + bool delete = 3; } diff --git a/proto/dlt_gateway.proto b/proto/dlt_gateway.proto index b2c1297ccdd4c765862f4643b554d5373d8eccd3..84fe0fef6be366deb9286d49193ddb934c70a55c 100644 --- a/proto/dlt_gateway.proto +++ b/proto/dlt_gateway.proto @@ -21,8 +21,8 @@ service DltGatewayService { rpc RecordToDlt (DltRecord ) returns ( DltRecordStatus ) {} rpc GetFromDlt (DltRecordId ) returns ( DltRecord ) {} rpc SubscribeToDlt(DltRecordSubscription ) returns (stream DltRecordEvent ) {} - rpc GetDltStatus (context.TeraFlowController) returns ( DltPeerStatus ) {} // NEC is checkig if it is possible - rpc GetDltPeers (context.Empty ) returns ( DltPeerStatusList) {} // NEC is checkig if it is possible + rpc GetDltStatus (context.TeraFlowController) returns ( DltPeerStatus ) {} // NEC is checking if it is possible + rpc GetDltPeers (context.Empty ) returns ( DltPeerStatusList) {} // NEC is checking if it is possible } enum DltRecordTypeEnum { diff --git a/proto/kpi_sample_types.proto b/proto/kpi_sample_types.proto index 7445a0f25a57df9793bd8761da024581988cf9e6..4419a8df4a22047d8708c5cf2e2c3657148b5eeb 100644 --- a/proto/kpi_sample_types.proto +++ b/proto/kpi_sample_types.proto @@ -16,9 +16,19 @@ syntax = "proto3"; package kpi_sample_types; enum KpiSampleType { - KPISAMPLETYPE_UNKNOWN = 0; - KPISAMPLETYPE_PACKETS_TRANSMITTED = 101; - KPISAMPLETYPE_PACKETS_RECEIVED = 102; - KPISAMPLETYPE_BYTES_TRANSMITTED = 201; - KPISAMPLETYPE_BYTES_RECEIVED = 202; + KPISAMPLETYPE_UNKNOWN = 0; + KPISAMPLETYPE_PACKETS_TRANSMITTED = 101; + KPISAMPLETYPE_PACKETS_RECEIVED = 102; + KPISAMPLETYPE_PACKETS_DROPPED = 103; + KPISAMPLETYPE_BYTES_TRANSMITTED = 201; + KPISAMPLETYPE_BYTES_RECEIVED = 202; + KPISAMPLETYPE_BYTES_DROPPED = 203; + KPISAMPLETYPE_ML_CONFIDENCE = 401; //. can be used by both optical and L3 without any issue + KPISAMPLETYPE_OPTICAL_SECURITY_STATUS = 501; //. can be used by both optical and L3 without any issue + KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS = 601; + KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS = 602; + KPISAMPLETYPE_L3_UNIQUE_ATTACKERS = 603; + KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS = 604; + KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO = 605; + KPISAMPLETYPE_SERVICE_LATENCY_MS = 701; } diff --git a/proto/monitoring.proto b/proto/monitoring.proto index 8b83afa47b49c130d37dcbcc1024f079ebc2a2fe..f9c408c96ced121f35cc1116bf64d013e7320e6a 100644 --- a/proto/monitoring.proto +++ b/proto/monitoring.proto @@ -19,24 +19,24 @@ import "context.proto"; import "kpi_sample_types.proto"; service MonitoringService { - rpc SetKpi (KpiDescriptor ) returns (KpiId ) {} - rpc DeleteKpi (KpiId ) returns (context.Empty ) {} - rpc GetKpiDescriptor (KpiId ) returns (KpiDescriptor ) {} - rpc GetKpiDescriptorList (context.Empty ) returns (KpiDescriptorList ) {} - rpc IncludeKpi (Kpi ) returns (context.Empty ) {} - rpc MonitorKpi (MonitorKpiRequest ) returns (context.Empty ) {} - rpc QueryKpiData (KpiQuery ) returns (KpiList ) {} - rpc SetKpiSubscription (SubsDescriptor ) returns (stream KpiList ) {} - rpc GetSubsDescriptor (SubscriptionID ) returns (SubsDescriptor ) {} - rpc GetSubscriptions (context.Empty ) returns (SubsIDList ) {} - rpc DeleteSubscription (SubscriptionID ) returns (context.Empty ) {} - rpc SetKpiAlarm (AlarmDescriptor ) returns (AlarmID ) {} - rpc GetAlarms (context.Empty ) returns (AlarmIDList ) {} - rpc GetAlarmDescriptor (AlarmID ) returns (AlarmDescriptor ) {} - rpc GetAlarmResponseStream(AlarmSubscription ) returns (stream AlarmResponse) {} - rpc DeleteAlarm (AlarmID ) returns (context.Empty ) {} - rpc GetStreamKpi (KpiId ) returns (stream Kpi ) {} - rpc GetInstantKpi (KpiId ) returns (KpiList ) {} + rpc SetKpi (KpiDescriptor ) returns (KpiId ) {} // Stable not final + rpc DeleteKpi (KpiId ) returns (context.Empty ) {} // Stable and final + rpc GetKpiDescriptor (KpiId ) returns (KpiDescriptor ) {} // Stable and final + rpc GetKpiDescriptorList (context.Empty ) returns (KpiDescriptorList ) {} // Stable and final + rpc IncludeKpi (Kpi ) returns (context.Empty ) {} // Stable and final + rpc MonitorKpi (MonitorKpiRequest ) returns (context.Empty ) {} // Stable and final + rpc QueryKpiData (KpiQuery ) returns (RawKpiTable ) {} // Not implemented + rpc SetKpiSubscription (SubsDescriptor ) returns (stream SubsResponse ) {} // Stable not final + rpc GetSubsDescriptor (SubscriptionID ) returns (SubsDescriptor ) {} // Stable and final + rpc GetSubscriptions (context.Empty ) returns (SubsList ) {} // Stable and final + rpc DeleteSubscription (SubscriptionID ) returns (context.Empty ) {} // Stable and final + rpc SetKpiAlarm (AlarmDescriptor ) returns (AlarmID ) {} // Stable not final + rpc GetAlarms (context.Empty ) returns (AlarmList ) {} // Stable and final + rpc GetAlarmDescriptor (AlarmID ) returns (AlarmDescriptor ) {} // Stable and final + rpc GetAlarmResponseStream(AlarmSubscription ) returns (stream AlarmResponse) {} // Not Stable not final + rpc DeleteAlarm (AlarmID ) returns (context.Empty ) {} // Stable and final + rpc GetStreamKpi (KpiId ) returns (stream Kpi ) {} // Stable not final + rpc GetInstantKpi (KpiId ) returns (Kpi ) {} // Stable not final } message KpiDescriptor { @@ -48,6 +48,7 @@ message KpiDescriptor { context.EndPointId endpoint_id = 6; context.ServiceId service_id = 7; context.SliceId slice_id = 8; + context.ConnectionId connection_id = 9; } message MonitorKpiRequest { @@ -58,13 +59,26 @@ message MonitorKpiRequest { } message KpiQuery { - repeated KpiId kpi_id = 1; + repeated KpiId kpi_ids = 1; float monitoring_window_s = 2; - float sampling_rate_s = 3; - uint32 last_n_samples = 4; // used when you want something like "get the last N many samples - context.Timestamp start_timestamp = 5; // used when you want something like "get the samples since X date/time" - context.Timestamp end_timestamp = 6; // used when you want something like "get the samples until X date/time" - // Pending add field to reflect Available Device Protocols + uint32 last_n_samples = 3; // used when you want something like "get the last N many samples + context.Timestamp start_timestamp = 4; // used when you want something like "get the samples since X date/time" + context.Timestamp end_timestamp = 5; // used when you want something like "get the samples until X date/time" +} + + +message RawKpi { // cell + context.Timestamp timestamp = 1; + KpiValue kpi_value = 2; +} + +message RawKpiList { // column + KpiId kpi_id = 1; + repeated RawKpi raw_kpis = 2; +} + +message RawKpiTable { // table + repeated RawKpiList raw_kpi_lists = 1; } message KpiId { @@ -99,7 +113,7 @@ message KpiValue { message KpiList { - repeated Kpi kpi_list = 1; + repeated Kpi kpi = 1; } message KpiDescriptorList { @@ -122,19 +136,19 @@ message SubscriptionID { message SubsResponse { SubscriptionID subs_id = 1; - repeated KpiList kpi_list = 2; + KpiList kpi_list = 2; } -message SubsIDList { - repeated SubscriptionID subs_list = 1; +message SubsList { + repeated SubsDescriptor subs_descriptor = 1; } message AlarmDescriptor { AlarmID alarm_id = 1; string alarm_description = 2; string name = 3; - repeated KpiId kpi_id = 4; - repeated KpiValueRange kpi_value_range = 5; + KpiId kpi_id = 4; + KpiValueRange kpi_value_range = 5; context.Timestamp timestamp = 6; } @@ -143,7 +157,7 @@ message AlarmID{ } message AlarmSubscription{ - AlarmID alarmID = 1; + AlarmID alarm_id = 1; float subscription_timeout_s = 2; float subscription_frequency_ms = 3; } @@ -151,10 +165,9 @@ message AlarmSubscription{ message AlarmResponse { AlarmID alarm_id = 1; string text = 2; - KpiValue kpi_value = 3; - context.Timestamp timestamp = 4; + KpiList kpi_list = 3; } -message AlarmIDList { - repeated AlarmID alarm_list = 1; +message AlarmList { + repeated AlarmDescriptor alarm_descriptor = 1; } diff --git a/proto/pathcomp.proto b/proto/pathcomp.proto index 9eb650fb9981b4b84f31b63796eec0c7a8e780b6..08f33efe99b6a25c568c8be14f1355b3d4521909 100644 --- a/proto/pathcomp.proto +++ b/proto/pathcomp.proto @@ -28,11 +28,16 @@ message Algorithm_KShortestPath { uint32 k_return = 2; } +message Algorithm_KDisjointPath { + uint32 num_disjoint = 1; +} + message PathCompRequest { repeated context.Service services = 1; oneof algorithm { Algorithm_ShortestPath shortest_path = 10; Algorithm_KShortestPath k_shortest_path = 11; + Algorithm_KDisjointPath k_disjoint_path = 12; } } diff --git a/proto/policy.proto b/proto/policy.proto index 0879389bf857df51b7f777fd21a4a249ff69682d..9d0c34a3304f68c47a19ac56d0e96b10936bee7b 100644 --- a/proto/policy.proto +++ b/proto/policy.proto @@ -30,7 +30,7 @@ service PolicyService { rpc GetPolicyByServiceId (context.ServiceId) returns (PolicyRuleServiceList) {} } -enum RuleState { +enum PolicyRuleStateEnum { POLICY_UNDEFINED = 0; // Undefined rule state POLICY_FAILED = 1; // Rule failed POLICY_INSERTED = 2; // Rule is just inserted @@ -49,7 +49,8 @@ message PolicyRuleId { } message PolicyRuleState { - RuleState policyRuleState = 1; + PolicyRuleStateEnum policyRuleState = 1; + string policyRuleStateMessage = 2; } // Basic policy rule attributes @@ -83,6 +84,14 @@ message PolicyRuleDevice { repeated context.DeviceId deviceList = 2; } +// Wrapper policy rule object +message PolicyRule { + oneof policy_rule { + PolicyRuleService service = 1; + PolicyRuleDevice device = 2; + } +} + // A list of policy rule IDs message PolicyRuleIdList { repeated PolicyRuleId policyRuleIdList = 1; @@ -100,5 +109,5 @@ message PolicyRuleDeviceList { // A list of policy rules message PolicyRuleList { - repeated PolicyRuleId policyRules = 1; + repeated PolicyRule policyRules = 1; } diff --git a/proto/policy_action.proto b/proto/policy_action.proto index 374b5975129353219902e270a521496e914b1625..8f681adf38f321aa06410bcb1bac26ea69fe14ec 100644 --- a/proto/policy_action.proto +++ b/proto/policy_action.proto @@ -18,7 +18,7 @@ package policy; // Action message PolicyRuleAction { PolicyRuleActionEnum action = 1; - repeated string parameters = 2; + repeated PolicyRuleActionConfig action_config = 2; } enum PolicyRuleActionEnum { @@ -27,3 +27,14 @@ enum PolicyRuleActionEnum { POLICYRULE_ACTION_ADD_SERVICE_CONFIGRULE = 2; POLICYRULE_ACTION_ADD_SERVICE_CONSTRAINT = 3; } + +// Action configuration +message PolicyRuleActionConfig { + string action_key = 1; + string action_value = 2; +} + +// message PolicyRuleAction { +// PolicyRuleActionEnum action = 1; +// repeated string parameters = 2; +// } \ No newline at end of file diff --git a/proto/uml/monitoring.png b/proto/uml/monitoring.png index 98f2e1d64766faf55599e465dd30f57e3518b11f..4257b4d3f4b570fa9c51734480bd8c73e8c72622 100644 Binary files a/proto/uml/monitoring.png and b/proto/uml/monitoring.png differ diff --git a/report_coverage_slice.sh b/report_coverage_slice.sh new file mode 100755 index 0000000000000000000000000000000000000000..f783ec069329a9efe100154a2702a72a93e0ad8a --- /dev/null +++ b/report_coverage_slice.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +./report_coverage_all.sh | grep --color -E -i "^slice/.*$|$" diff --git a/run_tests_docker.sh b/run_tests_docker.sh new file mode 100755 index 0000000000000000000000000000000000000000..fd885140999ac0f045c162f361f0075af96a8d48 --- /dev/null +++ b/run_tests_docker.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# Set the URL of your local Docker registry where the images will be uploaded to. Leave it blank if you do not want to +# use any Docker registry. +REGISTRY_IMAGE="" +#REGISTRY_IMAGE="http://my-container-registry.local/" + +# Set the list of components you want to build images for, and deploy. +COMPONENTS="context device automation policy service compute monitoring centralizedattackdetector" + +# Set the tag you want to use for your images. +IMAGE_TAG="tf-dev" + +# Constants +TMP_FOLDER="./tmp" + +TMP_LOGS_FOLDER="$TMP_FOLDER/logs" +mkdir -p $TMP_LOGS_FOLDER + +for COMPONENT in $COMPONENTS; do + echo "Processing '$COMPONENT' component..." + IMAGE_NAME="$COMPONENT:$IMAGE_TAG" + IMAGE_URL="$REGISTRY_IMAGE/$IMAGE_NAME" + + echo " Building Docker image..." + BUILD_LOG="$TMP_LOGS_FOLDER/build_${COMPONENT}.log" + + if [ "$COMPONENT" == "automation" ] || [ "$COMPONENT" == "policy" ]; then + docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile ./src/"$COMPONENT"/ > "$BUILD_LOG" + else + docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile ./src/ > "$BUILD_LOG" + fi + + if [ -n "$REGISTRY_IMAGE" ]; then + echo "Pushing Docker image to '$REGISTRY_IMAGE'..." + + TAG_LOG="$TMP_LOGS_FOLDER/tag_${COMPONENT}.log" + docker tag "$IMAGE_NAME" "$IMAGE_URL" > "$TAG_LOG" + + PUSH_LOG="$TMP_LOGS_FOLDER/push_${COMPONENT}.log" + docker push "$IMAGE_URL" > "$PUSH_LOG" + fi +done + +echo "Preparing for running the tests..." + +if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create -d bridge teraflowbridge; fi + +for COMPONENT in $COMPONENTS; do + IMAGE_NAME="$COMPONENT:$IMAGE_TAG" + echo " Running tests for $COMPONENT:" + docker run -it -d --name $COMPONENT $IMAGE_NAME --network=teraflowbridge + docker exec -it $COMPONENT bash -c "pytest --log-level=DEBUG --verbose $COMPONENT/tests/test_unitary.py" + docker stop $COMPONENT +done diff --git a/scripts/build_run_report_tests_locally.sh b/scripts/build_run_report_tests_locally.sh new file mode 100755 index 0000000000000000000000000000000000000000..9bdc81d9894df35a6bcc325d78e7f1f5214e8a96 --- /dev/null +++ b/scripts/build_run_report_tests_locally.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +die () { + echo >&2 "$@" + exit 1 +} + +[ "$#" -eq 1 ] || die "component name required but not provided" + +COMPONENT_NAME=$1 # parameter +IMAGE_NAME="${COMPONENT_NAME}-local" +IMAGE_TAG="latest" + +if docker ps | grep $IMAGE_NAME +then + docker stop $IMAGE_NAME +fi + +if docker network list | grep teraflowbridge +then + echo "teraflowbridge is already created" +else + docker network create -d bridge teraflowbridge +fi + +docker build -t "$IMAGE_NAME:$IMAGE_TAG" -f ./src/$COMPONENT_NAME/Dockerfile . + +docker run --name $IMAGE_NAME -d -v "${PWD}/src/${COMPONENT_NAME}/tests:/home/${COMPONENT_NAME}/results" --network=teraflowbridge --rm $IMAGE_NAME:$IMAGE_TAG + +docker exec -i $IMAGE_NAME bash -c "coverage run -m pytest --log-level=INFO --verbose $COMPONENT_NAME/tests/ --junitxml=/home/${COMPONENT_NAME}/results/${COMPONENT_NAME}_report.xml" + +PROJECTDIR=`pwd` + +cd $PROJECTDIR/src +RCFILE=$PROJECTDIR/coverage/.coveragerc + +echo +echo "Coverage report:" +echo "----------------" +docker exec -i $IMAGE_NAME bash -c "coverage report --include='${COMPONENT_NAME}/*' --show-missing" + +# docker stop $IMAGE_NAME +docker rm -f $IMAGE_NAME +docker network rm teraflowbridge diff --git a/scripts/create_component.sh b/scripts/create_component.sh new file mode 100755 index 0000000000000000000000000000000000000000..17f6abc64140f88e0b8f09f548afdaf1f1362f6f --- /dev/null +++ b/scripts/create_component.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +COMPONENT_NAME=$1 +PROJECTDIR=`pwd` + +mkdir -p ${PROJECTDIR}/src/${COMPONENT_NAME} +mkdir -p ${PROJECTDIR}/src/${COMPONENT_NAME}/client +mkdir -p ${PROJECTDIR}/src/${COMPONENT_NAME}/service +mkdir -p ${PROJECTDIR}/src/${COMPONENT_NAME}/tests + +touch ${PROJECTDIR}/src/${COMPONENT_NAME}/client/__init__.py +touch ${PROJECTDIR}/src/${COMPONENT_NAME}/service/__init__.py +touch ${PROJECTDIR}/src/${COMPONENT_NAME}/tests/__init__.py +touch ${PROJECTDIR}/src/${COMPONENT_NAME}/.gitlab-ci.yml +touch ${PROJECTDIR}/src/${COMPONENT_NAME}/__init__.py +touch ${PROJECTDIR}/src/${COMPONENT_NAME}/Config.py +touch ${PROJECTDIR}/src/${COMPONENT_NAME}/Dockerfile +touch ${PROJECTDIR}/src/${COMPONENT_NAME}/requirements.in + +cd ${PROJECTDIR}/src +python gitlab-ci.yml_generator.py -t latest forecaster + +cd ${PROJECTDIR}/src/${COMPONENT_NAME} +mv .gitlab-ci.yml gitlab-ci.yaml +${PROJECTDIR}/scripts/add_license_header_to_files.sh +mv gitlab-ci.yaml .gitlab-ci.yml diff --git a/scripts/dump_logs.sh b/scripts/dump_logs.sh new file mode 100755 index 0000000000000000000000000000000000000000..a6db945d245b832564353de71610bf720eb0acb8 --- /dev/null +++ b/scripts/dump_logs.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +mkdir -p tmp/exec_logs/$TFS_K8S_NAMESPACE/ +rm tmp/exec_logs/$TFS_K8S_NAMESPACE/* + +PODS=$(kubectl get pods --namespace $TFS_K8S_NAMESPACE --no-headers --output=custom-columns=":metadata.name") +for POD in $PODS; do + CONTAINERS=$(kubectl get pods --namespace $TFS_K8S_NAMESPACE $POD -o jsonpath='{.spec.containers[*].name}') + for CONTAINER in $CONTAINERS; do + kubectl --namespace $TFS_K8S_NAMESPACE logs pod/${POD} --container ${CONTAINER} \ + > tmp/exec_logs/$TFS_K8S_NAMESPACE/$POD\_\_$CONTAINER.log + done +done diff --git a/scripts/old/deploy_in_kubernetes.sh b/scripts/old/deploy_in_kubernetes.sh index 5e16120bb3b47e993e1d331ccdef3186380304ec..89f45a5484f95f065f6656249f3fb04bf507a782 100755 --- a/scripts/old/deploy_in_kubernetes.sh +++ b/scripts/old/deploy_in_kubernetes.sh @@ -81,7 +81,7 @@ for COMPONENT in $COMPONENTS; do if [ "$COMPONENT" == "automation" ] || [ "$COMPONENT" == "policy" ]; then docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile ./src/"$COMPONENT"/ > "$BUILD_LOG" else - docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile ./src/ > "$BUILD_LOG" + docker build -t "$IMAGE_NAME" -f ./src/"$COMPONENT"/Dockerfile . > "$BUILD_LOG" fi if [ -n "$REGISTRY_IMAGE" ]; then diff --git a/scripts/old/open_dashboard.sh b/scripts/old/open_dashboard.sh index a3864d2d04c5fb0b3220967f13c324cd554e7963..d0529a00921be896ae976c86d10d67139719de9c 100755 --- a/scripts/old/open_dashboard.sh +++ b/scripts/old/open_dashboard.sh @@ -18,8 +18,8 @@ K8S_NAMESPACE=${K8S_NAMESPACE:-'tfs'} -GRAFANA_IP=$(kubectl get service/webuiservice -n ${K8S_NAMESPACE} -o jsonpath='{.spec.clusterIP}') -GRAFANA_PORT=$(kubectl get service webuiservice-public --namespace $K8S_NAMESPACE -o 'jsonpath={.spec.ports[?(@.port==3000)].nodePort}') +GRAFANA_IP=$(kubectl get service/webuiservice -n ${TFS_K8S_NAMESPACE} -o jsonpath='{.spec.clusterIP}') +GRAFANA_PORT=3000 #$(kubectl get service webuiservice --namespace $TFS_K8S_NAMESPACE -o 'jsonpath={.spec.ports[?(@.port==3000)].nodePort}') URL=http://${GRAFANA_IP}:${GRAFANA_PORT} echo Opening Dashboard on URL ${URL} diff --git a/scripts/old/open_webui.sh b/scripts/old/open_webui.sh index 2d4659bf6080a989774050b7ff36ddb88ba41eae..d539c1970adb7882c9621fc909acf21c2dde743a 100755 --- a/scripts/old/open_webui.sh +++ b/scripts/old/open_webui.sh @@ -23,6 +23,58 @@ WEBUI_PORT=8004 # GRAFANA_PORT=$(kubectl get service ${WEBUI_SERVICE_NAME} --namespace $K8S_NAMESPACE -o 'jsonpath={.spec.ports[?(@.port==3000)].nodePort}') GRAFANA_PORT=3000 +echo "Configuring WebUI DataStores and Dashboards..." +sleep 3 +INFLUXDB_HOST="monitoringservice" +INFLUXDB_PORT=$(kubectl --namespace $TFS_K8S_NAMESPACE get service/monitoringservice -o jsonpath='{.spec.ports[?(@.name=="influxdb")].port}') +INFLUXDB_URL="http://${INFLUXDB_HOST}:${INFLUXDB_PORT}" +INFLUXDB_USER=$(kubectl --namespace $TFS_K8S_NAMESPACE get secrets influxdb-secrets -o jsonpath='{.data.INFLUXDB_ADMIN_USER}' | base64 --decode) +INFLUXDB_PASSWORD=$(kubectl --namespace $TFS_K8S_NAMESPACE get secrets influxdb-secrets -o jsonpath='{.data.INFLUXDB_ADMIN_PASSWORD}' | base64 --decode) +INFLUXDB_DATABASE=$(kubectl --namespace $TFS_K8S_NAMESPACE get secrets influxdb-secrets -o jsonpath='{.data.INFLUXDB_DB}' | base64 --decode) +# Exposed through the ingress controller "tfs-ingress" +# GRAFANA_HOSTNAME="127.0.0.1" +# GRAFANA_PORT="80" +# GRAFANA_BASEURL="/grafana" +# Default Grafana credentials +GRAFANA_USERNAME="admin" +GRAFANA_PASSWORD="admin" +# Default Grafana API URL +GRAFANA_URL_DEFAULT=http://${GRAFANA_USERNAME}:${GRAFANA_PASSWORD}@${WEBUI_IP}:${GRAFANA_PORT} #"http://${GRAFANA_USERNAME}:${GRAFANA_PASSWORD}@${GRAFANA_HOSTNAME}:${GRAFANA_PORT}${GRAFANA_BASEURL}" +# Updated Grafana API URL +GRAFANA_URL_UPDATED=http://${GRAFANA_USERNAME}:${TFS_GRAFANA_PASSWORD}@${WEBUI_IP}:${GRAFANA_PORT} #"http://${GRAFANA_USERNAME}:${TFS_GRAFANA_PASSWORD}@${GRAFANA_HOSTNAME}:${GRAFANA_PORT}${GRAFANA_BASEURL}" +echo "Connecting to grafana at URL: ${GRAFANA_URL_DEFAULT}..." +# Configure Grafana Admin Password +# Ref: https://grafana.com/docs/grafana/latest/http_api/user/#change-password +curl -X PUT -H "Content-Type: application/json" -d '{ + "oldPassword": "'${GRAFANA_PASSWORD}'", + "newPassword": "'${TFS_GRAFANA_PASSWORD}'", + "confirmNew" : "'${TFS_GRAFANA_PASSWORD}'" +}' ${GRAFANA_URL_DEFAULT}/api/user/password +echo +# Create InfluxDB DataSource +# Ref: https://grafana.com/docs/grafana/latest/http_api/data_source/ +curl -X POST -H "Content-Type: application/json" -d '{ + "type" : "influxdb", + "name" : "InfluxDB", + "url" : "'"$INFLUXDB_URL"'", + "access" : "proxy", + "basicAuth": false, + "user" : "'"$INFLUXDB_USER"'", + "password" : "'"$INFLUXDB_PASSWORD"'", + "isDefault": true, + "database" : "'"$INFLUXDB_DATABASE"'" +}' ${GRAFANA_URL_UPDATED}/api/datasources +echo +# Create Monitoring Dashboard +# Ref: https://grafana.com/docs/grafana/latest/http_api/dashboard/ +curl -X POST -H "Content-Type: application/json" \ +-d '@src/webui/grafana_dashboard.json' \ +${GRAFANA_URL_UPDATED}/api/dashboards/db +echo +DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tf-l3-monit" +DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') +curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + # Open WebUI UI_URL="http://${WEBUI_IP}:${WEBUI_PORT}" echo "Opening web UI on URL ${UI_URL}" diff --git a/scripts/run_tests_locally-context.sh b/scripts/run_tests_locally-context.sh index a9e601208aa9259219708a5e1ca770232e44faa6..7033fcb01a468731b498708096a80fac8d9a9a85 100755 --- a/scripts/run_tests_locally-context.sh +++ b/scripts/run_tests_locally-context.sh @@ -13,19 +13,31 @@ # See the License for the specific language governing permissions and # limitations under the License. +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +export TFS_K8S_HOSTNAME="tfs-vm" + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## PROJECTDIR=`pwd` cd $PROJECTDIR/src RCFILE=$PROJECTDIR/coverage/.coveragerc -K8S_NAMESPACE="tf-dev" -K8S_HOSTNAME="kubernetes-master" - -kubectl --namespace $K8S_NAMESPACE expose deployment contextservice --port=6379 --name=redis-tests --type=NodePort -export REDIS_SERVICE_HOST=$(kubectl get node $K8S_HOSTNAME -o 'jsonpath={.status.addresses[?(@.type=="InternalIP")].address}') -export REDIS_SERVICE_PORT=$(kubectl get service redis-tests --namespace $K8S_NAMESPACE -o 'jsonpath={.spec.ports[?(@.port==6379)].nodePort}') +kubectl --namespace $TFS_K8S_NAMESPACE expose deployment contextservice --name=redis-tests --port=6379 --type=NodePort +#export REDIS_SERVICE_HOST=$(kubectl --namespace $TFS_K8S_NAMESPACE get service redis-tests -o 'jsonpath={.spec.clusterIP}') +export REDIS_SERVICE_HOST=$(kubectl get node $TFS_K8S_HOSTNAME -o 'jsonpath={.status.addresses[?(@.type=="InternalIP")].address}') +export REDIS_SERVICE_PORT=$(kubectl --namespace $TFS_K8S_NAMESPACE get service redis-tests -o 'jsonpath={.spec.ports[?(@.port==6379)].nodePort}') # Run unitary tests and analyze coverage of code at same time -coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO --verbose \ +coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO --verbose --maxfail=1 \ context/tests/test_unitary.py + +kubectl --namespace $TFS_K8S_NAMESPACE delete service redis-tests diff --git a/scripts/run_tests_locally-pathcomp.sh b/scripts/run_tests_locally-pathcomp-frontend.sh similarity index 95% rename from scripts/run_tests_locally-pathcomp.sh rename to scripts/run_tests_locally-pathcomp-frontend.sh index f56f47a8b592939243a2ec5d9fd95d89046582d1..1bcf5e7f3792622622f9e59978fddbf11c54e492 100755 --- a/scripts/run_tests_locally-pathcomp.sh +++ b/scripts/run_tests_locally-pathcomp-frontend.sh @@ -25,4 +25,4 @@ RCFILE=$PROJECTDIR/coverage/.coveragerc #-o log_cli=true -o log_file=service.log -o log_file_level=DEBUG coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO --verbose \ - pathcomp/tests/test_unitary.py + pathcomp/frontend/tests/test_unitary.py diff --git a/scripts/run_tests_locally-service.sh b/scripts/run_tests_locally-service.sh index 8a2a8d0be1d1960c6197a67e471ae29abba501a7..8816b9faa24e55e486a54852632fdb8e00db1d04 100755 --- a/scripts/run_tests_locally-service.sh +++ b/scripts/run_tests_locally-service.sh @@ -21,4 +21,5 @@ RCFILE=$PROJECTDIR/coverage/.coveragerc # Run unitary tests and analyze coverage of code at same time coverage run --rcfile=$RCFILE --append -m pytest --log-level=INFO --verbose \ + service/tests/test_unitary_task_scheduler.py \ service/tests/test_unitary.py diff --git a/scripts/show_logs_dlt_connector.sh b/scripts/show_logs_dlt_connector.sh new file mode 100755 index 0000000000000000000000000000000000000000..db4c388c20399007ba10b357a5e153df4a86c519 --- /dev/null +++ b/scripts/show_logs_dlt_connector.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/dltservice -c connector diff --git a/scripts/show_logs_dlt_gateway.sh b/scripts/show_logs_dlt_gateway.sh new file mode 100755 index 0000000000000000000000000000000000000000..c00be2df16cb69b3ace501a854d1248a72abbf3e --- /dev/null +++ b/scripts/show_logs_dlt_gateway.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/dltservice -c gateway diff --git a/scripts/show_logs_monitoring.sh b/scripts/show_logs_monitoring.sh index bd37d0d142f76d532219f1dcdcbd229914d3b0b5..faa825fdfae2bb85f0790a877b75d533ff5aa0d5 100755 --- a/scripts/show_logs_monitoring.sh +++ b/scripts/show_logs_monitoring.sh @@ -24,4 +24,4 @@ export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} # Automated steps start here ######################################################################################################################## -kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/monitoringservice -c server +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/monitoringservice server diff --git a/scripts/show_logs_pathcomp_backend.sh b/scripts/show_logs_pathcomp_backend.sh new file mode 100755 index 0000000000000000000000000000000000000000..cee99ee4bd19de9b7cd4e45eb651e809397ccaeb --- /dev/null +++ b/scripts/show_logs_pathcomp_backend.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/pathcompservice -c backend diff --git a/scripts/show_logs_pathcomp_frontend.sh b/scripts/show_logs_pathcomp_frontend.sh new file mode 100755 index 0000000000000000000000000000000000000000..32f92b59d53b5804e9f1a0b145576667cfa21131 --- /dev/null +++ b/scripts/show_logs_pathcomp_frontend.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/pathcompservice -c frontend diff --git a/scripts/show_logs_slice.sh b/scripts/show_logs_slice.sh new file mode 100755 index 0000000000000000000000000000000000000000..c7bc0b69588307092b22ea3c600669359f04de99 --- /dev/null +++ b/scripts/show_logs_slice.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +######################################################################################################################## +# Define your deployment settings here +######################################################################################################################## + +# If not already set, set the name of the Kubernetes namespace to deploy to. +export TFS_K8S_NAMESPACE=${TFS_K8S_NAMESPACE:-"tfs"} + +######################################################################################################################## +# Automated steps start here +######################################################################################################################## + +kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/sliceservice diff --git a/src/automation/README.md b/src/automation/README.md index 099980bcc4172bf9e5c2d59459f40ae4331696cf..e98d2b8ab62563f43cf2c1011e91fb2a1d08d378 100644 --- a/src/automation/README.md +++ b/src/automation/README.md @@ -1,28 +1,57 @@ -# Automation TeraFlow OS service +# TeraFlowSDN Automation service -The Automation service, also known as Zero-Touch Provisioning (ZTP), is tested on Ubuntu 20.04. Follow the instructions below to build, test, and run this service on your local environment. +This repository hosts the TeraFlowSDN Automation service, also known as Zero-Touch Provisioning (ZTP) service. +Follow the instructions below to build, test, and run this service on your local environment. -## Automation Teraflow OS service architecture +## TeraFlowSDN Automation service architecture -| The Automation Teraflow OS service architecture consists of six (6) interfaces listed below: | +The TeraFlowSDN Automation architecture consists of six (6) interfaces listed below: + +Interfaces | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| 1. The `AutomationGateway` interface that implements all the rpc functions that are described in `automation.proto` file. | -| 2. The `ContextGateway` interface that communicates with a `Context` Service gRPC client and implements all the rpc functions that are described in `context.proto` file. | -| 3. The `DeviceGateway` interface that communicates with a `Device` Service gRPC client and implements all the rpc functions that are described in `device.proto` file. | -| 4. The `AutomationService` interface that implements the `addDevice()` method by communicating with a `Context` gRPC client & a `Device` gRPC client through the use of `ContextService` interface & `DeviceService` interface respectively. | -| 5. The `ContextService` interface that implements the `getDevice()` & `getDeviceEvents()` methods by communicating with a `Context` gRPC client through the use of `ContextGateway` interface. | -| 6. The `DeviceService` interface that implements the `getInitialConfiguration()` & `configureDevice()` methods by communicating with a `Device` gRPC client through the use of `DeviceGateway` interface. | +| 1. The `AutomationGateway` interface that implements all the RPC functions that are described in `automation.proto` file. | +| 2. The `ContextGateway` interface that communicates with a `Context` Service gRPC client to invoke key RPC functions described in `context.proto` file. | +| 3. The `DeviceGateway` interface that communicates with a `Device` Service gRPC client to invoke key RPC functions described in `device.proto` file. | +| 4. The `AutomationService` interface that implements the `addDevice()`, `updateDevice()`, and `deleteDevice()` methods by communicating with a `Context` gRPC client and a `Device` gRPC client through the use of `ContextService` interface and `DeviceService` interface respectively. | +| 5. The `ContextService` interface that implements the `getDevice()` and `getDeviceEvents()` methods by communicating with a `Context` gRPC client through the use of `ContextGateway` interface. | +| 6. The `DeviceService` interface that implements the `getInitialConfiguration()`, `configureDevice()`, and `deleteDevice()` methods by communicating with a `Device` gRPC client through the use of `DeviceGateway` interface. | + + +## Prerequisites +The Automation service is currently tested against Ubuntu 20.04 and Java 11. -## Run with dev profile +To quickly install Java 11 on a Debian-based Linux distro do: ```bash -./mvnw clean quarkus:dev +sudo apt-get install openjdk-11-jdk -y ``` -## Running tests +Feel free to try more recent Java versions. + +## Compile + +```bash +./mvnw compile +``` + +## Run tests + +```bash +./mvnw test +``` -Run unit and functional tests `./mvnw clean test` +## Run service + +```bash +./mvnw quarkus:dev +```` + +## Clean + +```bash +./mvnw clean +``` ## Deploying on a Kubernetes cluster @@ -30,10 +59,16 @@ To create the K8s manifest file under `target/kubernetes/kubernetes.yml` to be u ```bash ./mvnw clean package -DskipUTs -DskipITs -``` +``` To deploy the application in a K8s cluster run ```bash kubectl apply -f "manifests/automationservice.yaml" ``` + +## Maintainers + +This TeraFlowSDN service is implemented by [UBITECH](https://www.ubitech.eu). + +Feel free to contact Georgios Katsikas (gkatsikas at ubitech dot eu) in case you have questions. diff --git a/src/automation/src/main/java/eu/teraflow/automation/AutomationGatewayImpl.java b/src/automation/src/main/java/eu/teraflow/automation/AutomationGatewayImpl.java index 6d672fdea2c3e97f9f2a50c7efa8d77c05532357..466ebf7fefe69645cd23c72ca3b61d8e5bdd4713 100644 --- a/src/automation/src/main/java/eu/teraflow/automation/AutomationGatewayImpl.java +++ b/src/automation/src/main/java/eu/teraflow/automation/AutomationGatewayImpl.java @@ -76,12 +76,11 @@ public class AutomationGatewayImpl implements AutomationGateway { @Override public Uni ztpDelete(Automation.DeviceRole request) { - return Uni.createFrom() - .item( - () -> - Automation.DeviceRoleState.newBuilder() - .setDevRoleId(request.getDevRoleId()) - .build()); + final var devRoleId = request.getDevRoleId().getDevRoleId().getUuid(); + return automationService + .deleteDevice(devRoleId) + .onItem() + .transform(device -> transformToDeviceRoleState(device, devRoleId, DeviceState.DELETED)); } @Override diff --git a/src/automation/src/main/java/eu/teraflow/automation/AutomationServiceImpl.java b/src/automation/src/main/java/eu/teraflow/automation/AutomationServiceImpl.java index 773c99de6d94b5f8806a8a354b2371c0a6748f9f..54255cf78481bbaa1ecdd81a097a335292d81ed5 100644 --- a/src/automation/src/main/java/eu/teraflow/automation/AutomationServiceImpl.java +++ b/src/automation/src/main/java/eu/teraflow/automation/AutomationServiceImpl.java @@ -50,33 +50,34 @@ public class AutomationServiceImpl implements AutomationService { device -> { final var id = deviceId; - if (!device.isEnabled()) { - LOGGER.infof(MESSAGE, device); - - final var initialConfiguration = - deviceService.getInitialConfiguration(device.getDeviceId()); - - device.enableDevice(); - LOGGER.infof("Enabled device [%s]", id); - - initialConfiguration - .subscribe() - .with( - deviceConfig -> { - device.setDeviceConfiguration(deviceConfig); - final var configuredDeviceIdUni = deviceService.configureDevice(device); - - configuredDeviceIdUni - .subscribe() - .with( - configuredDeviceId -> - LOGGER.infof( - "Device [%s] has been enabled and configured successfully with %s.\n", - id, deviceConfig)); - }); - } else { - LOGGER.infof("%s has been already enabled. Ignoring...", device); + if (device.isEnabled()) { + LOGGER.warnf("%s has already been enabled. Ignoring...", device); + return; } + + LOGGER.infof(MESSAGE, device); + + final var initialConfiguration = + deviceService.getInitialConfiguration(device.getDeviceId()); + + device.enableDevice(); + LOGGER.infof("Enabled device [%s]", id); + + initialConfiguration + .subscribe() + .with( + deviceConfig -> { + device.setDeviceConfiguration(deviceConfig); + final var configuredDeviceIdUni = deviceService.configureDevice(device); + + configuredDeviceIdUni + .subscribe() + .with( + configuredDeviceId -> + LOGGER.infof( + "Device [%s] has been successfully enabled and configured with %s.\n", + id, deviceConfig)); + }); }); return deserializedDeviceUni; @@ -92,13 +93,23 @@ public class AutomationServiceImpl implements AutomationService { device -> { final var id = deviceId; + if (device.isDisabled()) { + LOGGER.warnf("%s has already been disabled. Ignoring...", device); + return; + } + + device.disableDevice(); + LOGGER.infof("Disabled device [%s]", id); + LOGGER.infof(MESSAGE, device); final var empty = deviceService.deleteDevice(device.getDeviceId()); empty .subscribe() - .with(emptyMessage -> LOGGER.infof("Device [%s] has been deleted.\n", id)); + .with( + emptyMessage -> + LOGGER.infof("Device [%s] has been successfully deleted.\n", id)); }); return deserializedDeviceUni; @@ -114,6 +125,11 @@ public class AutomationServiceImpl implements AutomationService { device -> { final var id = deviceId; + if (!device.isEnabled()) { + LOGGER.warnf("Cannot update disabled device %s. Ignoring...", device); + return; + } + LOGGER.infof(MESSAGE, device); device.setDeviceConfiguration(deviceConfig); final var updatedDeviceIdUni = deviceService.configureDevice(device); @@ -123,7 +139,7 @@ public class AutomationServiceImpl implements AutomationService { .with( configuredDeviceId -> LOGGER.infof( - "Device [%s] has been updated successfully with %s.\n", + "Device [%s] has been successfully updated with %s.\n", id, deviceConfig)); }); diff --git a/src/automation/src/main/java/eu/teraflow/automation/ContextSubscriber.java b/src/automation/src/main/java/eu/teraflow/automation/ContextSubscriber.java index ce977d1ff24788c471ab6bf2c8d6b2c113fb5c63..76e536d9bc03c196005a91be1c82d15879a6f8e8 100644 --- a/src/automation/src/main/java/eu/teraflow/automation/ContextSubscriber.java +++ b/src/automation/src/main/java/eu/teraflow/automation/ContextSubscriber.java @@ -78,9 +78,11 @@ public class ContextSubscriber { automationService.deleteDevice(deviceEvent.getDeviceId()); break; case UPDATE: - // TODO a DeviceConfig object should be part of the DeviceEvent object in order - // for automationService.updateDevice() to be triggered automatically like - // addDevice(). + LOGGER.warnf( + "Received %s for device [%s]. " + + "No automation action on an already updated device", + event, deviceId); + break; case UNDEFINED: logWarningMessage(event, deviceId, eventType); break; diff --git a/src/automation/src/main/java/eu/teraflow/automation/Serializer.java b/src/automation/src/main/java/eu/teraflow/automation/Serializer.java index 4359d60db364b4fb28e2623cb0e832a656e803af..445dea540b57717f1005d8b37269777f7e2147ee 100644 --- a/src/automation/src/main/java/eu/teraflow/automation/Serializer.java +++ b/src/automation/src/main/java/eu/teraflow/automation/Serializer.java @@ -269,6 +269,7 @@ public class Serializer { builder.setDeviceId(deviceId); builder.setEvent(serialize(deviceEvent.getEvent())); + builder.setDeviceConfig(serialize(deviceEvent.getDeviceConfig().orElse(null))); return builder.build(); } @@ -276,8 +277,9 @@ public class Serializer { public DeviceEvent deserialize(ContextOuterClass.DeviceEvent deviceEvent) { final var deviceId = deserialize(deviceEvent.getDeviceId()); final var event = deserialize(deviceEvent.getEvent()); + final var deviceConfig = deserialize(deviceEvent.getDeviceConfig()); - return new DeviceEvent(deviceId, event); + return new DeviceEvent(deviceId, event, deviceConfig); } public ContextOuterClass.ConfigActionEnum serialize(ConfigActionEnum configAction) { @@ -849,6 +851,8 @@ public class Serializer { return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_IETF_NETWORK_TOPOLOGY; case ONF_TR_352: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_ONF_TR_352; + case XR: + return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_XR; case UNDEFINED: default: return ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_UNDEFINED; @@ -868,6 +872,8 @@ public class Serializer { return DeviceDriverEnum.IETF_NETWORK_TOPOLOGY; case DEVICEDRIVER_ONF_TR_352: return DeviceDriverEnum.ONF_TR_352; + case DEVICEDRIVER_XR: + return DeviceDriverEnum.XR; case DEVICEDRIVER_UNDEFINED: case UNRECOGNIZED: default: diff --git a/src/automation/src/main/java/eu/teraflow/automation/context/model/Device.java b/src/automation/src/main/java/eu/teraflow/automation/context/model/Device.java index 77bd3ca5c861713b43faf178c6450e35e6032b3c..1e5563917625a9679feb9e9491990885cc4a3c22 100644 --- a/src/automation/src/main/java/eu/teraflow/automation/context/model/Device.java +++ b/src/automation/src/main/java/eu/teraflow/automation/context/model/Device.java @@ -61,10 +61,18 @@ public class Device { return deviceOperationalStatus == DeviceOperationalStatus.ENABLED; } + public boolean isDisabled() { + return deviceOperationalStatus == DeviceOperationalStatus.DISABLED; + } + public void enableDevice() { this.deviceOperationalStatus = DeviceOperationalStatus.ENABLED; } + public void disableDevice() { + this.deviceOperationalStatus = DeviceOperationalStatus.DISABLED; + } + public String getDeviceId() { return deviceId; } diff --git a/src/automation/src/main/java/eu/teraflow/automation/context/model/DeviceDriverEnum.java b/src/automation/src/main/java/eu/teraflow/automation/context/model/DeviceDriverEnum.java index 8fc767ac2e5d7fed70f0375fcf8c820e30fbb149..fc0521927dfc695229016ad42bc612b27304d6eb 100644 --- a/src/automation/src/main/java/eu/teraflow/automation/context/model/DeviceDriverEnum.java +++ b/src/automation/src/main/java/eu/teraflow/automation/context/model/DeviceDriverEnum.java @@ -22,5 +22,6 @@ public enum DeviceDriverEnum { TRANSPORT_API, P4, IETF_NETWORK_TOPOLOGY, - ONF_TR_352 + ONF_TR_352, + XR } diff --git a/src/automation/src/main/java/eu/teraflow/automation/context/model/DeviceEvent.java b/src/automation/src/main/java/eu/teraflow/automation/context/model/DeviceEvent.java index efc0be8308fb9a75132cd604a84fd5b4822f3af7..526b9b7b2ba34edc6d538619bdb190a9aefa9d97 100644 --- a/src/automation/src/main/java/eu/teraflow/automation/context/model/DeviceEvent.java +++ b/src/automation/src/main/java/eu/teraflow/automation/context/model/DeviceEvent.java @@ -16,14 +16,23 @@ package eu.teraflow.automation.context.model; +import java.util.Optional; + public class DeviceEvent { private final Event event; private final String deviceId; + private final Optional deviceConfig; public DeviceEvent(String deviceId, Event event) { + this(deviceId, event, null); + } + + public DeviceEvent(String deviceId, Event event, DeviceConfig deviceConfig) { this.event = event; this.deviceId = deviceId; + this.deviceConfig = + (deviceConfig == null) ? Optional.empty() : Optional.ofNullable(deviceConfig); } public Event getEvent() { @@ -34,8 +43,14 @@ public class DeviceEvent { return deviceId; } + public Optional getDeviceConfig() { + return deviceConfig; + } + @Override public String toString() { - return String.format("%s[%s, %s]", getClass().getSimpleName(), deviceId, event.toString()); + return String.format( + "%s[%s, %s, %s]", + getClass().getSimpleName(), deviceId, event.toString(), deviceConfig.orElse(null)); } } diff --git a/src/automation/src/test/java/eu/teraflow/automation/AutomationServiceTest.java b/src/automation/src/test/java/eu/teraflow/automation/AutomationServiceTest.java index 85ed170efbf938b11303d92a6697c89836e0bf70..e17fc8304455a543ffa96b4c1239abb77be4daca 100644 --- a/src/automation/src/test/java/eu/teraflow/automation/AutomationServiceTest.java +++ b/src/automation/src/test/java/eu/teraflow/automation/AutomationServiceTest.java @@ -280,6 +280,53 @@ class AutomationServiceTest { final var uuid = serializer.serializeUuid(UUID_VALUE); final var deviceRoleId = Automation.DeviceRoleId.newBuilder().setDevRoleId(uuid).build(); final var deviceRole = Automation.DeviceRole.newBuilder().setDevRoleId(deviceRoleId).build(); + final var DEVICE_ID = "0f14d0ab-9608-7862-a9e4-5ed26688389b"; + final var DEVICE_ROLE_ID = "0f14d0ab-9608-7862-a9e4-5ed26688389a"; + final var DEVICE_TYPE = "ztp"; + + final var deviceDrivers = List.of(DeviceDriverEnum.IETF_NETWORK_TOPOLOGY, DeviceDriverEnum.P4); + + final var topologyIdA = new TopologyId("contextIdA", "idA"); + final var deviceIdA = "deviceIdA"; + final var idA = "idA"; + final var endPointIdA = new EndPointId(topologyIdA, deviceIdA, idA); + + final var endPointTypeA = "endPointTypeA"; + final var kpiSampleTypesA = + List.of(KpiSampleType.BYTES_RECEIVED, KpiSampleType.BYTES_TRANSMITTED); + final var locationTypeRegionA = new LocationTypeRegion("ATH"); + final var locationA = new Location(locationTypeRegionA); + final var endPointA = + new EndPointBuilder(endPointIdA, endPointTypeA, kpiSampleTypesA) + .location(locationA) + .build(); + + final var topologyIdB = new TopologyId("contextIdB", "idB"); + final var deviceIdB = "deviceIdB"; + final var idB = "idB"; + final var endPointIdB = new EndPointId(topologyIdB, deviceIdB, idB); + final var endPointTypeB = "endPointTypeB"; + final var kpiSampleTypesB = + List.of(KpiSampleType.BYTES_RECEIVED, KpiSampleType.BYTES_TRANSMITTED); + final var locationTypeRegionB = new LocationTypeRegion("ATH"); + final var locationB = new Location(locationTypeRegionB); + final var endPointB = + new EndPointBuilder(endPointIdB, endPointTypeB, kpiSampleTypesB) + .location(locationB) + .build(); + + final var endPoints = List.of(endPointA, endPointB); + + final var emptyDeviceConfig = new DeviceConfig(List.of()); + final var device = + new Device( + DEVICE_ID, + DEVICE_TYPE, + emptyDeviceConfig, + DeviceOperationalStatus.ENABLED, + deviceDrivers, + endPoints); + Mockito.when(contextGateway.getDevice(Mockito.any())).thenReturn(Uni.createFrom().item(device)); client .ztpDelete(deviceRole) diff --git a/src/automation/src/test/java/eu/teraflow/automation/SerializerTest.java b/src/automation/src/test/java/eu/teraflow/automation/SerializerTest.java index 74cdc0060230f22ae6c022627a4a8be47a9705b5..1161d9552e9794412d6c1ee78b89d2e2404ea3d7 100644 --- a/src/automation/src/test/java/eu/teraflow/automation/SerializerTest.java +++ b/src/automation/src/test/java/eu/teraflow/automation/SerializerTest.java @@ -392,14 +392,51 @@ class SerializerTest { .setTimestamp(expectedTimestamp) .setEventType(ContextOuterClass.EventTypeEnum.EVENTTYPE_CREATE) .build(); + + final var expectedConfigRuleCustomA = + ContextOuterClass.ConfigRule_Custom.newBuilder() + .setResourceKey("resourceKeyA") + .setResourceValue("resourceValueA") + .build(); + + final var expectedConfigRuleCustomB = + ContextOuterClass.ConfigRule_Custom.newBuilder() + .setResourceKey("resourceKeyB") + .setResourceValue("resourceValueB") + .build(); + + final var expectedConfigRuleA = + ContextOuterClass.ConfigRule.newBuilder() + .setAction(ContextOuterClass.ConfigActionEnum.CONFIGACTION_SET) + .setCustom(expectedConfigRuleCustomA) + .build(); + final var expectedConfigRuleB = + ContextOuterClass.ConfigRule.newBuilder() + .setAction(ContextOuterClass.ConfigActionEnum.CONFIGACTION_DELETE) + .setCustom(expectedConfigRuleCustomB) + .build(); + + final var expectedDeviceConfig = + ContextOuterClass.DeviceConfig.newBuilder() + .addAllConfigRules(List.of(expectedConfigRuleA, expectedConfigRuleB)) + .build(); + final var expectedDeviceEvent = ContextOuterClass.DeviceEvent.newBuilder() .setDeviceId(expectedDeviceId) .setEvent(expectedEvent) + .setDeviceConfig(expectedDeviceConfig) .build(); final var creationEvent = new Event(1, EventTypeEnum.CREATE); - final var deviceEvent = new DeviceEvent("deviceId", creationEvent); + final var configRuleCustomA = new ConfigRuleCustom("resourceKeyA", "resourceValueA"); + final var configRuleCustomB = new ConfigRuleCustom("resourceKeyB", "resourceValueB"); + final var configRuleTypeA = new ConfigRuleTypeCustom(configRuleCustomA); + final var configRuleTypeB = new ConfigRuleTypeCustom(configRuleCustomB); + final var configRuleA = new ConfigRule(ConfigActionEnum.SET, configRuleTypeA); + final var configRuleB = new ConfigRule(ConfigActionEnum.DELETE, configRuleTypeB); + final var deviceConfig = new DeviceConfig(List.of(configRuleA, configRuleB)); + final var deviceEvent = new DeviceEvent("deviceId", creationEvent, deviceConfig); final var serializedDeviceEvent = serializer.serialize(deviceEvent); assertThat(serializedDeviceEvent).usingRecursiveComparison().isEqualTo(expectedDeviceEvent); @@ -412,7 +449,22 @@ class SerializerTest { final var expectedTimestamp = ContextOuterClass.Timestamp.newBuilder().setTimestamp(1).build(); final var creationEvent = new Event(1, expectedEventType); - final var expectedDeviceEvent = new DeviceEvent(dummyDeviceId, creationEvent); + + final var expectedConfigRuleCustomA = new ConfigRuleCustom("resourceKeyA", "resourceValueA"); + final var expectedConfigRuleCustomB = new ConfigRuleCustom("resourceKeyB", "resourceValueB"); + + final var expectedConfigRuleTypeA = new ConfigRuleTypeCustom(expectedConfigRuleCustomA); + final var expectedConfigRuleTypeB = new ConfigRuleTypeCustom(expectedConfigRuleCustomB); + + final var expectedConfigRuleA = new ConfigRule(ConfigActionEnum.SET, expectedConfigRuleTypeA); + final var expectedConfigRuleB = + new ConfigRule(ConfigActionEnum.DELETE, expectedConfigRuleTypeB); + + final var expectedDeviceConfig = + new DeviceConfig(List.of(expectedConfigRuleA, expectedConfigRuleB)); + + final var expectedDeviceEvent = + new DeviceEvent(dummyDeviceId, creationEvent, expectedDeviceConfig); final var deviceUuid = Uuid.newBuilder().setUuid("deviceId"); final var deviceId = DeviceId.newBuilder().setDeviceUuid(deviceUuid).build(); @@ -421,8 +473,38 @@ class SerializerTest { .setTimestamp(expectedTimestamp) .setEventType(ContextOuterClass.EventTypeEnum.EVENTTYPE_REMOVE) .build(); + + final var configRuleCustomA = + ContextOuterClass.ConfigRule_Custom.newBuilder() + .setResourceKey("resourceKeyA") + .setResourceValue("resourceValueA") + .build(); + final var configRuleCustomB = + ContextOuterClass.ConfigRule_Custom.newBuilder() + .setResourceKey("resourceKeyB") + .setResourceValue("resourceValueB") + .build(); + final var configRuleA = + ContextOuterClass.ConfigRule.newBuilder() + .setAction(ContextOuterClass.ConfigActionEnum.CONFIGACTION_SET) + .setCustom(configRuleCustomA) + .build(); + final var configRuleB = + ContextOuterClass.ConfigRule.newBuilder() + .setAction(ContextOuterClass.ConfigActionEnum.CONFIGACTION_DELETE) + .setCustom(configRuleCustomB) + .build(); + final var deviceConfig = + ContextOuterClass.DeviceConfig.newBuilder() + .addAllConfigRules(List.of(configRuleA, configRuleB)) + .build(); + final var serializedDeviceEvent = - ContextOuterClass.DeviceEvent.newBuilder().setDeviceId(deviceId).setEvent(event).build(); + ContextOuterClass.DeviceEvent.newBuilder() + .setDeviceId(deviceId) + .setEvent(event) + .setDeviceConfig(deviceConfig) + .build(); final var deviceEvent = serializer.deserialize(serializedDeviceEvent); assertThat(deviceEvent).usingRecursiveComparison().isEqualTo(expectedDeviceEvent); @@ -1132,6 +1214,7 @@ class SerializerTest { Arguments.of( DeviceDriverEnum.ONF_TR_352, ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_ONF_TR_352), + Arguments.of(DeviceDriverEnum.XR, ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_XR), Arguments.of( DeviceDriverEnum.UNDEFINED, ContextOuterClass.DeviceDriverEnum.DEVICEDRIVER_UNDEFINED)); } diff --git a/src/automation/target/generated-sources/grpc/context/ContextOuterClass.java b/src/automation/target/generated-sources/grpc/context/ContextOuterClass.java index 45a64fabb43bab645e97e9d80bc1825242006dce..fbbba62a2baa1c2fe2b3c3fe090883d6542996e4 100644 --- a/src/automation/target/generated-sources/grpc/context/ContextOuterClass.java +++ b/src/automation/target/generated-sources/grpc/context/ContextOuterClass.java @@ -173,6 +173,10 @@ public final class ContextOuterClass { * DEVICEDRIVER_ONF_TR_352 = 5; */ DEVICEDRIVER_ONF_TR_352(5), + /** + * DEVICEDRIVER_XR = 6; + */ + DEVICEDRIVER_XR(6), UNRECOGNIZED(-1), ; @@ -204,6 +208,10 @@ public final class ContextOuterClass { * DEVICEDRIVER_ONF_TR_352 = 5; */ public static final int DEVICEDRIVER_ONF_TR_352_VALUE = 5; + /** + * DEVICEDRIVER_XR = 6; + */ + public static final int DEVICEDRIVER_XR_VALUE = 6; public final int getNumber() { @@ -236,6 +244,7 @@ public final class ContextOuterClass { case 3: return DEVICEDRIVER_P4; case 4: return DEVICEDRIVER_IETF_NETWORK_TOPOLOGY; case 5: return DEVICEDRIVER_ONF_TR_352; + case 6: return DEVICEDRIVER_XR; default: return null; } } @@ -17331,6 +17340,21 @@ public final class ContextOuterClass { * .context.DeviceId device_id = 2; */ context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder(); + + /** + * .context.DeviceConfig device_config = 3; + * @return Whether the deviceConfig field is set. + */ + boolean hasDeviceConfig(); + /** + * .context.DeviceConfig device_config = 3; + * @return The deviceConfig. + */ + context.ContextOuterClass.DeviceConfig getDeviceConfig(); + /** + * .context.DeviceConfig device_config = 3; + */ + context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder(); } /** * Protobuf type {@code context.DeviceEvent} @@ -17403,6 +17427,19 @@ public final class ContextOuterClass { break; } + case 26: { + context.ContextOuterClass.DeviceConfig.Builder subBuilder = null; + if (deviceConfig_ != null) { + subBuilder = deviceConfig_.toBuilder(); + } + deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(deviceConfig_); + deviceConfig_ = subBuilder.buildPartial(); + } + + break; + } default: { if (!parseUnknownField( input, unknownFields, extensionRegistry, tag)) { @@ -17487,6 +17524,32 @@ public final class ContextOuterClass { return getDeviceId(); } + public static final int DEVICE_CONFIG_FIELD_NUMBER = 3; + private context.ContextOuterClass.DeviceConfig deviceConfig_; + /** + * .context.DeviceConfig device_config = 3; + * @return Whether the deviceConfig field is set. + */ + @java.lang.Override + public boolean hasDeviceConfig() { + return deviceConfig_ != null; + } + /** + * .context.DeviceConfig device_config = 3; + * @return The deviceConfig. + */ + @java.lang.Override + public context.ContextOuterClass.DeviceConfig getDeviceConfig() { + return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_; + } + /** + * .context.DeviceConfig device_config = 3; + */ + @java.lang.Override + public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() { + return getDeviceConfig(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -17507,6 +17570,9 @@ public final class ContextOuterClass { if (deviceId_ != null) { output.writeMessage(2, getDeviceId()); } + if (deviceConfig_ != null) { + output.writeMessage(3, getDeviceConfig()); + } unknownFields.writeTo(output); } @@ -17524,6 +17590,10 @@ public final class ContextOuterClass { size += com.google.protobuf.CodedOutputStream .computeMessageSize(2, getDeviceId()); } + if (deviceConfig_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getDeviceConfig()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -17549,6 +17619,11 @@ public final class ContextOuterClass { if (!getDeviceId() .equals(other.getDeviceId())) return false; } + if (hasDeviceConfig() != other.hasDeviceConfig()) return false; + if (hasDeviceConfig()) { + if (!getDeviceConfig() + .equals(other.getDeviceConfig())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -17568,6 +17643,10 @@ public final class ContextOuterClass { hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER; hash = (53 * hash) + getDeviceId().hashCode(); } + if (hasDeviceConfig()) { + hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER; + hash = (53 * hash) + getDeviceConfig().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -17713,6 +17792,12 @@ public final class ContextOuterClass { deviceId_ = null; deviceIdBuilder_ = null; } + if (deviceConfigBuilder_ == null) { + deviceConfig_ = null; + } else { + deviceConfig_ = null; + deviceConfigBuilder_ = null; + } return this; } @@ -17749,6 +17834,11 @@ public final class ContextOuterClass { } else { result.deviceId_ = deviceIdBuilder_.build(); } + if (deviceConfigBuilder_ == null) { + result.deviceConfig_ = deviceConfig_; + } else { + result.deviceConfig_ = deviceConfigBuilder_.build(); + } onBuilt(); return result; } @@ -17803,6 +17893,9 @@ public final class ContextOuterClass { if (other.hasDeviceId()) { mergeDeviceId(other.getDeviceId()); } + if (other.hasDeviceConfig()) { + mergeDeviceConfig(other.getDeviceConfig()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -18069,6 +18162,125 @@ public final class ContextOuterClass { } return deviceIdBuilder_; } + + private context.ContextOuterClass.DeviceConfig deviceConfig_; + private com.google.protobuf.SingleFieldBuilderV3< + context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> deviceConfigBuilder_; + /** + * .context.DeviceConfig device_config = 3; + * @return Whether the deviceConfig field is set. + */ + public boolean hasDeviceConfig() { + return deviceConfigBuilder_ != null || deviceConfig_ != null; + } + /** + * .context.DeviceConfig device_config = 3; + * @return The deviceConfig. + */ + public context.ContextOuterClass.DeviceConfig getDeviceConfig() { + if (deviceConfigBuilder_ == null) { + return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_; + } else { + return deviceConfigBuilder_.getMessage(); + } + } + /** + * .context.DeviceConfig device_config = 3; + */ + public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig value) { + if (deviceConfigBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + deviceConfig_ = value; + onChanged(); + } else { + deviceConfigBuilder_.setMessage(value); + } + + return this; + } + /** + * .context.DeviceConfig device_config = 3; + */ + public Builder setDeviceConfig( + context.ContextOuterClass.DeviceConfig.Builder builderForValue) { + if (deviceConfigBuilder_ == null) { + deviceConfig_ = builderForValue.build(); + onChanged(); + } else { + deviceConfigBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .context.DeviceConfig device_config = 3; + */ + public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) { + if (deviceConfigBuilder_ == null) { + if (deviceConfig_ != null) { + deviceConfig_ = + context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial(); + } else { + deviceConfig_ = value; + } + onChanged(); + } else { + deviceConfigBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .context.DeviceConfig device_config = 3; + */ + public Builder clearDeviceConfig() { + if (deviceConfigBuilder_ == null) { + deviceConfig_ = null; + onChanged(); + } else { + deviceConfig_ = null; + deviceConfigBuilder_ = null; + } + + return this; + } + /** + * .context.DeviceConfig device_config = 3; + */ + public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() { + + onChanged(); + return getDeviceConfigFieldBuilder().getBuilder(); + } + /** + * .context.DeviceConfig device_config = 3; + */ + public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() { + if (deviceConfigBuilder_ != null) { + return deviceConfigBuilder_.getMessageOrBuilder(); + } else { + return deviceConfig_ == null ? + context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_; + } + } + /** + * .context.DeviceConfig device_config = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> + getDeviceConfigFieldBuilder() { + if (deviceConfigBuilder_ == null) { + deviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>( + getDeviceConfig(), + getParentForChildren(), + isClean()); + deviceConfig_ = null; + } + return deviceConfigBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -61981,230 +62193,234 @@ public final class ContextOuterClass { "(\0132\023.context.ConfigRule\"5\n\014DeviceIdList\022" + "%\n\ndevice_ids\030\001 \003(\0132\021.context.DeviceId\"." + "\n\nDeviceList\022 \n\007devices\030\001 \003(\0132\017.context." + - "Device\"R\n\013DeviceEvent\022\035\n\005event\030\001 \001(\0132\016.c" + - "ontext.Event\022$\n\tdevice_id\030\002 \001(\0132\021.contex" + - "t.DeviceId\"*\n\006LinkId\022 \n\tlink_uuid\030\001 \001(\0132" + - "\r.context.Uuid\"X\n\004Link\022 \n\007link_id\030\001 \001(\0132" + - "\017.context.LinkId\022.\n\021link_endpoint_ids\030\002 " + - "\003(\0132\023.context.EndPointId\"/\n\nLinkIdList\022!" + - "\n\010link_ids\030\001 \003(\0132\017.context.LinkId\"(\n\010Lin" + - "kList\022\034\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tL" + - "inkEvent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022" + - " \n\007link_id\030\002 \001(\0132\017.context.LinkId\"X\n\tSer" + - "viceId\022&\n\ncontext_id\030\001 \001(\0132\022.context.Con" + - "textId\022#\n\014service_uuid\030\002 \001(\0132\r.context.U" + - "uid\"\315\002\n\007Service\022&\n\nservice_id\030\001 \001(\0132\022.co" + - "ntext.ServiceId\022.\n\014service_type\030\002 \001(\0162\030." + - "context.ServiceTypeEnum\0221\n\024service_endpo" + - "int_ids\030\003 \003(\0132\023.context.EndPointId\0220\n\023se" + - "rvice_constraints\030\004 \003(\0132\023.context.Constr" + - "aint\022.\n\016service_status\030\005 \001(\0132\026.context.S" + - "erviceStatus\022.\n\016service_config\030\006 \001(\0132\026.c" + - "ontext.ServiceConfig\022%\n\ttimestamp\030\007 \001(\0132" + - "\022.context.Timestamp\"C\n\rServiceStatus\0222\n\016" + - "service_status\030\001 \001(\0162\032.context.ServiceSt" + - "atusEnum\":\n\rServiceConfig\022)\n\014config_rule" + - "s\030\001 \003(\0132\023.context.ConfigRule\"8\n\rServiceI" + - "dList\022\'\n\013service_ids\030\001 \003(\0132\022.context.Ser" + - "viceId\"1\n\013ServiceList\022\"\n\010services\030\001 \003(\0132" + - "\020.context.Service\"U\n\014ServiceEvent\022\035\n\005eve" + - "nt\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002" + - " \001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nc" + - "ontext_id\030\001 \001(\0132\022.context.ContextId\022!\n\ns" + - "lice_uuid\030\002 \001(\0132\r.context.Uuid\"\222\003\n\005Slice" + - "\022\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022/\n\022" + - "slice_endpoint_ids\030\002 \003(\0132\023.context.EndPo" + - "intId\022.\n\021slice_constraints\030\003 \003(\0132\023.conte" + - "xt.Constraint\022-\n\021slice_service_ids\030\004 \003(\013" + - "2\022.context.ServiceId\022,\n\022slice_subslice_i" + - "ds\030\005 \003(\0132\020.context.SliceId\022*\n\014slice_stat" + - "us\030\006 \001(\0132\024.context.SliceStatus\022*\n\014slice_" + - "config\030\007 \001(\0132\024.context.SliceConfig\022(\n\013sl" + - "ice_owner\030\010 \001(\0132\023.context.SliceOwner\022%\n\t" + - "timestamp\030\t \001(\0132\022.context.Timestamp\"E\n\nS" + - "liceOwner\022!\n\nowner_uuid\030\001 \001(\0132\r.context." + - "Uuid\022\024\n\014owner_string\030\002 \001(\t\"=\n\013SliceStatu" + - "s\022.\n\014slice_status\030\001 \001(\0162\030.context.SliceS" + - "tatusEnum\"8\n\013SliceConfig\022)\n\014config_rules" + - "\030\001 \003(\0132\023.context.ConfigRule\"2\n\013SliceIdLi" + - "st\022#\n\tslice_ids\030\001 \003(\0132\020.context.SliceId\"" + - "+\n\tSliceList\022\036\n\006slices\030\001 \003(\0132\016.context.S" + - "lice\"O\n\nSliceEvent\022\035\n\005event\030\001 \001(\0132\016.cont" + - "ext.Event\022\"\n\010slice_id\030\002 \001(\0132\020.context.Sl" + - "iceId\"6\n\014ConnectionId\022&\n\017connection_uuid" + - "\030\001 \001(\0132\r.context.Uuid\"2\n\025ConnectionSetti" + - "ngs_L0\022\031\n\021lsp_symbolic_name\030\001 \001(\t\"\236\001\n\025Co" + - "nnectionSettings_L2\022\027\n\017src_mac_address\030\001" + - " \001(\t\022\027\n\017dst_mac_address\030\002 \001(\t\022\022\n\nether_t" + - "ype\030\003 \001(\r\022\017\n\007vlan_id\030\004 \001(\r\022\022\n\nmpls_label" + - "\030\005 \001(\r\022\032\n\022mpls_traffic_class\030\006 \001(\r\"t\n\025Co" + - "nnectionSettings_L3\022\026\n\016src_ip_address\030\001 " + - "\001(\t\022\026\n\016dst_ip_address\030\002 \001(\t\022\014\n\004dscp\030\003 \001(" + - "\r\022\020\n\010protocol\030\004 \001(\r\022\013\n\003ttl\030\005 \001(\r\"[\n\025Conn" + - "ectionSettings_L4\022\020\n\010src_port\030\001 \001(\r\022\020\n\010d" + - "st_port\030\002 \001(\r\022\021\n\ttcp_flags\030\003 \001(\r\022\013\n\003ttl\030" + - "\004 \001(\r\"\304\001\n\022ConnectionSettings\022*\n\002l0\030\001 \001(\013" + - "2\036.context.ConnectionSettings_L0\022*\n\002l2\030\002" + - " \001(\0132\036.context.ConnectionSettings_L2\022*\n\002" + - "l3\030\003 \001(\0132\036.context.ConnectionSettings_L3" + - "\022*\n\002l4\030\004 \001(\0132\036.context.ConnectionSetting" + - "s_L4\"\363\001\n\nConnection\022,\n\rconnection_id\030\001 \001" + - "(\0132\025.context.ConnectionId\022&\n\nservice_id\030" + - "\002 \001(\0132\022.context.ServiceId\0223\n\026path_hops_e" + - "ndpoint_ids\030\003 \003(\0132\023.context.EndPointId\022+" + - "\n\017sub_service_ids\030\004 \003(\0132\022.context.Servic" + - "eId\022-\n\010settings\030\005 \001(\0132\033.context.Connecti" + - "onSettings\"A\n\020ConnectionIdList\022-\n\016connec" + - "tion_ids\030\001 \003(\0132\025.context.ConnectionId\":\n" + - "\016ConnectionList\022(\n\013connections\030\001 \003(\0132\023.c" + - "ontext.Connection\"^\n\017ConnectionEvent\022\035\n\005" + - "event\030\001 \001(\0132\016.context.Event\022,\n\rconnectio" + - "n_id\030\002 \001(\0132\025.context.ConnectionId\"\202\001\n\nEn" + - "dPointId\022(\n\013topology_id\030\001 \001(\0132\023.context." + - "TopologyId\022$\n\tdevice_id\030\002 \001(\0132\021.context." + - "DeviceId\022$\n\rendpoint_uuid\030\003 \001(\0132\r.contex" + - "t.Uuid\"\264\001\n\010EndPoint\022(\n\013endpoint_id\030\001 \001(\013" + - "2\023.context.EndPointId\022\025\n\rendpoint_type\030\002" + - " \001(\t\0229\n\020kpi_sample_types\030\003 \003(\0162\037.kpi_sam" + - "ple_types.KpiSampleType\022,\n\021endpoint_loca" + - "tion\030\004 \001(\0132\021.context.Location\"A\n\021ConfigR" + - "ule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n\016reso" + - "urce_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022(\n\013en" + - "dpoint_id\030\001 \001(\0132\023.context.EndPointId\022!\n\010" + - "rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n\nConf" + - "igRule\022)\n\006action\030\001 \001(\0162\031.context.ConfigA" + - "ctionEnum\022,\n\006custom\030\002 \001(\0132\032.context.Conf" + - "igRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.context.C" + - "onfigRule_ACLH\000B\r\n\013config_rule\"F\n\021Constr" + - "aint_Custom\022\027\n\017constraint_type\030\001 \001(\t\022\030\n\020" + - "constraint_value\030\002 \001(\t\"E\n\023Constraint_Sch" + - "edule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rdurati" + - "on_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010latitud" + - "e\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Location\022\020" + - "\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 \001(\0132\025" + - ".context.GPS_PositionH\000B\n\n\010location\"l\n\033C" + - "onstraint_EndPointLocation\022(\n\013endpoint_i" + - "d\030\001 \001(\0132\023.context.EndPointId\022#\n\010location" + - "\030\002 \001(\0132\021.context.Location\"Y\n\033Constraint_" + - "EndPointPriority\022(\n\013endpoint_id\030\001 \001(\0132\023." + - "context.EndPointId\022\020\n\010priority\030\002 \001(\r\"0\n\026" + - "Constraint_SLA_Latency\022\026\n\016e2e_latency_ms" + - "\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025\n\rcap" + - "acity_gbps\030\001 \001(\002\"M\n\033Constraint_SLA_Avail" + - "ability\022\032\n\022num_disjoint_paths\030\001 \001(\r\022\022\n\na" + - "ll_active\030\002 \001(\010\"V\n\036Constraint_SLA_Isolat" + - "ion_level\0224\n\017isolation_level\030\001 \003(\0162\033.con" + - "text.IsolationLevelEnum\"\366\003\n\nConstraint\022," + - "\n\006custom\030\001 \001(\0132\032.context.Constraint_Cust" + - "omH\000\0220\n\010schedule\030\002 \001(\0132\034.context.Constra" + - "int_ScheduleH\000\022A\n\021endpoint_location\030\003 \001(" + - "\0132$.context.Constraint_EndPointLocationH" + - "\000\022A\n\021endpoint_priority\030\004 \001(\0132$.context.C" + - "onstraint_EndPointPriorityH\000\0228\n\014sla_capa" + - "city\030\005 \001(\0132 .context.Constraint_SLA_Capa" + - "cityH\000\0226\n\013sla_latency\030\006 \001(\0132\037.context.Co" + - "nstraint_SLA_LatencyH\000\022@\n\020sla_availabili" + - "ty\030\007 \001(\0132$.context.Constraint_SLA_Availa" + - "bilityH\000\022@\n\rsla_isolation\030\010 \001(\0132\'.contex" + - "t.Constraint_SLA_Isolation_levelH\000B\014\n\nco" + - "nstraint\"^\n\022TeraFlowController\022&\n\ncontex" + - "t_id\030\001 \001(\0132\022.context.ContextId\022\022\n\nip_add" + - "ress\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024Authenticati" + - "onResult\022&\n\ncontext_id\030\001 \001(\0132\022.context.C" + - "ontextId\022\025\n\rauthenticated\030\002 \001(\010*j\n\rEvent" + - "TypeEnum\022\027\n\023EVENTTYPE_UNDEFINED\020\000\022\024\n\020EVE" + - "NTTYPE_CREATE\020\001\022\024\n\020EVENTTYPE_UPDATE\020\002\022\024\n" + - "\020EVENTTYPE_REMOVE\020\003*\305\001\n\020DeviceDriverEnum" + - "\022\032\n\026DEVICEDRIVER_UNDEFINED\020\000\022\033\n\027DEVICEDR" + - "IVER_OPENCONFIG\020\001\022\036\n\032DEVICEDRIVER_TRANSP" + - "ORT_API\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n\"DEVICE" + - "DRIVER_IETF_NETWORK_TOPOLOGY\020\004\022\033\n\027DEVICE" + - "DRIVER_ONF_TR_352\020\005*\217\001\n\033DeviceOperationa" + - "lStatusEnum\022%\n!DEVICEOPERATIONALSTATUS_U" + - "NDEFINED\020\000\022$\n DEVICEOPERATIONALSTATUS_DI" + - "SABLED\020\001\022#\n\037DEVICEOPERATIONALSTATUS_ENAB" + - "LED\020\002*\201\001\n\017ServiceTypeEnum\022\027\n\023SERVICETYPE" + - "_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n\020SERV" + - "ICETYPE_L2NM\020\002\022)\n%SERVICETYPE_TAPI_CONNE" + - "CTIVITY_SERVICE\020\003*\250\001\n\021ServiceStatusEnum\022" + - "\033\n\027SERVICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICES" + - "TATUS_PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020" + - "\002\022!\n\035SERVICESTATUS_PENDING_REMOVAL\020\003\022\036\n\032" + - "SERVICESTATUS_SLA_VIOLATED\020\004*\251\001\n\017SliceSt" + - "atusEnum\022\031\n\025SLICESTATUS_UNDEFINED\020\000\022\027\n\023S" + - "LICESTATUS_PLANNED\020\001\022\024\n\020SLICESTATUS_INIT" + - "\020\002\022\026\n\022SLICESTATUS_ACTIVE\020\003\022\026\n\022SLICESTATU" + - "S_DEINIT\020\004\022\034\n\030SLICESTATUS_SLA_VIOLATED\020\005" + - "*]\n\020ConfigActionEnum\022\032\n\026CONFIGACTION_UND" + - "EFINED\020\000\022\024\n\020CONFIGACTION_SET\020\001\022\027\n\023CONFIG" + - "ACTION_DELETE\020\002*\203\002\n\022IsolationLevelEnum\022\020" + - "\n\014NO_ISOLATION\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001" + - "\022\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021PROCESS_ISOLA" + - "TION\020\003\022\035\n\031PHYSICAL_MEMORY_ISOLATION\020\004\022\036\n" + - "\032PHYSICAL_NETWORK_ISOLATION\020\005\022\036\n\032VIRTUAL" + - "_RESOURCE_ISOLATION\020\006\022\037\n\033NETWORK_FUNCTIO" + - "NS_ISOLATION\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\357\022" + - "\n\016ContextService\022:\n\016ListContextIds\022\016.con" + - "text.Empty\032\026.context.ContextIdList\"\000\0226\n\014" + - "ListContexts\022\016.context.Empty\032\024.context.C" + - "ontextList\"\000\0224\n\nGetContext\022\022.context.Con" + - "textId\032\020.context.Context\"\000\0224\n\nSetContext" + - "\022\020.context.Context\032\022.context.ContextId\"\000" + - "\0225\n\rRemoveContext\022\022.context.ContextId\032\016." + - "context.Empty\"\000\022=\n\020GetContextEvents\022\016.co" + - "ntext.Empty\032\025.context.ContextEvent\"\0000\001\022@" + - "\n\017ListTopologyIds\022\022.context.ContextId\032\027." + - "context.TopologyIdList\"\000\022=\n\016ListTopologi" + - "es\022\022.context.ContextId\032\025.context.Topolog" + - "yList\"\000\0227\n\013GetTopology\022\023.context.Topolog" + - "yId\032\021.context.Topology\"\000\0227\n\013SetTopology\022" + - "\021.context.Topology\032\023.context.TopologyId\"" + - "\000\0227\n\016RemoveTopology\022\023.context.TopologyId" + - "\032\016.context.Empty\"\000\022?\n\021GetTopologyEvents\022" + - "\016.context.Empty\032\026.context.TopologyEvent\"" + - "\0000\001\0228\n\rListDeviceIds\022\016.context.Empty\032\025.c" + - "ontext.DeviceIdList\"\000\0224\n\013ListDevices\022\016.c" + - "ontext.Empty\032\023.context.DeviceList\"\000\0221\n\tG" + - "etDevice\022\021.context.DeviceId\032\017.context.De" + - "vice\"\000\0221\n\tSetDevice\022\017.context.Device\032\021.c" + - "ontext.DeviceId\"\000\0223\n\014RemoveDevice\022\021.cont" + - "ext.DeviceId\032\016.context.Empty\"\000\022;\n\017GetDev" + - "iceEvents\022\016.context.Empty\032\024.context.Devi" + - "ceEvent\"\0000\001\0224\n\013ListLinkIds\022\016.context.Emp" + - "ty\032\023.context.LinkIdList\"\000\0220\n\tListLinks\022\016" + - ".context.Empty\032\021.context.LinkList\"\000\022+\n\007G" + - "etLink\022\017.context.LinkId\032\r.context.Link\"\000" + - "\022+\n\007SetLink\022\r.context.Link\032\017.context.Lin" + - "kId\"\000\022/\n\nRemoveLink\022\017.context.LinkId\032\016.c" + - "ontext.Empty\"\000\0227\n\rGetLinkEvents\022\016.contex" + - "t.Empty\032\022.context.LinkEvent\"\0000\001\022>\n\016ListS" + - "erviceIds\022\022.context.ContextId\032\026.context." + - "ServiceIdList\"\000\022:\n\014ListServices\022\022.contex" + - "t.ContextId\032\024.context.ServiceList\"\000\0224\n\nG" + - "etService\022\022.context.ServiceId\032\020.context." + - "Service\"\000\0224\n\nSetService\022\020.context.Servic" + - "e\032\022.context.ServiceId\"\000\0225\n\rRemoveService" + - "\022\022.context.ServiceId\032\016.context.Empty\"\000\022=" + - "\n\020GetServiceEvents\022\016.context.Empty\032\025.con" + - "text.ServiceEvent\"\0000\001\022:\n\014ListSliceIds\022\022." + - "context.ContextId\032\024.context.SliceIdList\"" + - "\000\0226\n\nListSlices\022\022.context.ContextId\032\022.co" + - "ntext.SliceList\"\000\022.\n\010GetSlice\022\020.context." + - "SliceId\032\016.context.Slice\"\000\022.\n\010SetSlice\022\016." + - "context.Slice\032\020.context.SliceId\"\000\0221\n\013Rem" + - "oveSlice\022\020.context.SliceId\032\016.context.Emp" + - "ty\"\000\0229\n\016GetSliceEvents\022\016.context.Empty\032\023" + - ".context.SliceEvent\"\0000\001\022D\n\021ListConnectio" + - "nIds\022\022.context.ServiceId\032\031.context.Conne" + - "ctionIdList\"\000\022@\n\017ListConnections\022\022.conte" + - "xt.ServiceId\032\027.context.ConnectionList\"\000\022" + - "=\n\rGetConnection\022\025.context.ConnectionId\032" + - "\023.context.Connection\"\000\022=\n\rSetConnection\022" + - "\023.context.Connection\032\025.context.Connectio" + - "nId\"\000\022;\n\020RemoveConnection\022\025.context.Conn" + - "ectionId\032\016.context.Empty\"\000\022C\n\023GetConnect" + - "ionEvents\022\016.context.Empty\032\030.context.Conn" + - "ectionEvent\"\0000\001b\006proto3" + "Device\"\200\001\n\013DeviceEvent\022\035\n\005event\030\001 \001(\0132\016." + + "context.Event\022$\n\tdevice_id\030\002 \001(\0132\021.conte" + + "xt.DeviceId\022,\n\rdevice_config\030\003 \001(\0132\025.con" + + "text.DeviceConfig\"*\n\006LinkId\022 \n\tlink_uuid" + + "\030\001 \001(\0132\r.context.Uuid\"X\n\004Link\022 \n\007link_id" + + "\030\001 \001(\0132\017.context.LinkId\022.\n\021link_endpoint" + + "_ids\030\002 \003(\0132\023.context.EndPointId\"/\n\nLinkI" + + "dList\022!\n\010link_ids\030\001 \003(\0132\017.context.LinkId" + + "\"(\n\010LinkList\022\034\n\005links\030\001 \003(\0132\r.context.Li" + + "nk\"L\n\tLinkEvent\022\035\n\005event\030\001 \001(\0132\016.context" + + ".Event\022 \n\007link_id\030\002 \001(\0132\017.context.LinkId" + + "\"X\n\tServiceId\022&\n\ncontext_id\030\001 \001(\0132\022.cont" + + "ext.ContextId\022#\n\014service_uuid\030\002 \001(\0132\r.co" + + "ntext.Uuid\"\315\002\n\007Service\022&\n\nservice_id\030\001 \001" + + "(\0132\022.context.ServiceId\022.\n\014service_type\030\002" + + " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" + + "e_endpoint_ids\030\003 \003(\0132\023.context.EndPointI" + + "d\0220\n\023service_constraints\030\004 \003(\0132\023.context" + + ".Constraint\022.\n\016service_status\030\005 \001(\0132\026.co" + + "ntext.ServiceStatus\022.\n\016service_config\030\006 " + + "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" + + "\030\007 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" + + "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" + + "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" + + "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" + + "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" + + "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" + + "\030\001 \003(\0132\020.context.Service\"U\n\014ServiceEvent" + + "\022\035\n\005event\030\001 \001(\0132\016.context.Event\022&\n\nservi" + + "ce_id\030\002 \001(\0132\022.context.ServiceId\"T\n\007Slice" + + "Id\022&\n\ncontext_id\030\001 \001(\0132\022.context.Context" + + "Id\022!\n\nslice_uuid\030\002 \001(\0132\r.context.Uuid\"\222\003" + + "\n\005Slice\022\"\n\010slice_id\030\001 \001(\0132\020.context.Slic" + + "eId\022/\n\022slice_endpoint_ids\030\002 \003(\0132\023.contex" + + "t.EndPointId\022.\n\021slice_constraints\030\003 \003(\0132" + + "\023.context.Constraint\022-\n\021slice_service_id" + + "s\030\004 \003(\0132\022.context.ServiceId\022,\n\022slice_sub" + + "slice_ids\030\005 \003(\0132\020.context.SliceId\022*\n\014sli" + + "ce_status\030\006 \001(\0132\024.context.SliceStatus\022*\n" + + "\014slice_config\030\007 \001(\0132\024.context.SliceConfi" + + "g\022(\n\013slice_owner\030\010 \001(\0132\023.context.SliceOw" + + "ner\022%\n\ttimestamp\030\t \001(\0132\022.context.Timesta" + + "mp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001(\0132\r.c" + + "ontext.Uuid\022\024\n\014owner_string\030\002 \001(\t\"=\n\013Sli" + + "ceStatus\022.\n\014slice_status\030\001 \001(\0162\030.context" + + ".SliceStatusEnum\"8\n\013SliceConfig\022)\n\014confi" + + "g_rules\030\001 \003(\0132\023.context.ConfigRule\"2\n\013Sl" + + "iceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.context.S" + + "liceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(\0132\016.co" + + "ntext.Slice\"O\n\nSliceEvent\022\035\n\005event\030\001 \001(\013" + + "2\016.context.Event\022\"\n\010slice_id\030\002 \001(\0132\020.con" + + "text.SliceId\"6\n\014ConnectionId\022&\n\017connecti" + + "on_uuid\030\001 \001(\0132\r.context.Uuid\"2\n\025Connecti" + + "onSettings_L0\022\031\n\021lsp_symbolic_name\030\001 \001(\t" + + "\"\236\001\n\025ConnectionSettings_L2\022\027\n\017src_mac_ad" + + "dress\030\001 \001(\t\022\027\n\017dst_mac_address\030\002 \001(\t\022\022\n\n" + + "ether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004 \001(\r\022\022\n\nmpl" + + "s_label\030\005 \001(\r\022\032\n\022mpls_traffic_class\030\006 \001(" + + "\r\"t\n\025ConnectionSettings_L3\022\026\n\016src_ip_add" + + "ress\030\001 \001(\t\022\026\n\016dst_ip_address\030\002 \001(\t\022\014\n\004ds" + + "cp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n\003ttl\030\005 \001(\r\"" + + "[\n\025ConnectionSettings_L4\022\020\n\010src_port\030\001 \001" + + "(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_flags\030\003 \001(\r\022" + + "\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSettings\022*\n\002l" + + "0\030\001 \001(\0132\036.context.ConnectionSettings_L0\022" + + "*\n\002l2\030\002 \001(\0132\036.context.ConnectionSettings" + + "_L2\022*\n\002l3\030\003 \001(\0132\036.context.ConnectionSett" + + "ings_L3\022*\n\002l4\030\004 \001(\0132\036.context.Connection" + + "Settings_L4\"\363\001\n\nConnection\022,\n\rconnection" + + "_id\030\001 \001(\0132\025.context.ConnectionId\022&\n\nserv" + + "ice_id\030\002 \001(\0132\022.context.ServiceId\0223\n\026path" + + "_hops_endpoint_ids\030\003 \003(\0132\023.context.EndPo" + + "intId\022+\n\017sub_service_ids\030\004 \003(\0132\022.context" + + ".ServiceId\022-\n\010settings\030\005 \001(\0132\033.context.C" + + "onnectionSettings\"A\n\020ConnectionIdList\022-\n" + + "\016connection_ids\030\001 \003(\0132\025.context.Connecti" + + "onId\":\n\016ConnectionList\022(\n\013connections\030\001 " + + "\003(\0132\023.context.Connection\"^\n\017ConnectionEv" + + "ent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022,\n\rco" + + "nnection_id\030\002 \001(\0132\025.context.ConnectionId" + + "\"\202\001\n\nEndPointId\022(\n\013topology_id\030\001 \001(\0132\023.c" + + "ontext.TopologyId\022$\n\tdevice_id\030\002 \001(\0132\021.c" + + "ontext.DeviceId\022$\n\rendpoint_uuid\030\003 \001(\0132\r" + + ".context.Uuid\"\264\001\n\010EndPoint\022(\n\013endpoint_i" + + "d\030\001 \001(\0132\023.context.EndPointId\022\025\n\rendpoint" + + "_type\030\002 \001(\t\0229\n\020kpi_sample_types\030\003 \003(\0162\037." + + "kpi_sample_types.KpiSampleType\022,\n\021endpoi" + + "nt_location\030\004 \001(\0132\021.context.Location\"A\n\021" + + "ConfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022" + + "\026\n\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_AC" + + "L\022(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPoin" + + "tId\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234" + + "\001\n\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context." + + "ConfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.conte" + + "xt.ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.co" + + "ntext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n" + + "\021Constraint_Custom\022\027\n\017constraint_type\030\001 " + + "\001(\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constra" + + "int_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n" + + "\rduration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010" + + "latitude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Loc" + + "ation\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030" + + "\002 \001(\0132\025.context.GPS_PositionH\000B\n\n\010locati" + + "on\"l\n\033Constraint_EndPointLocation\022(\n\013end" + + "point_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010l" + + "ocation\030\002 \001(\0132\021.context.Location\"Y\n\033Cons" + + "traint_EndPointPriority\022(\n\013endpoint_id\030\001" + + " \001(\0132\023.context.EndPointId\022\020\n\010priority\030\002 " + + "\001(\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_lat" + + "ency_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity" + + "\022\025\n\rcapacity_gbps\030\001 \001(\002\"M\n\033Constraint_SL" + + "A_Availability\022\032\n\022num_disjoint_paths\030\001 \001" + + "(\r\022\022\n\nall_active\030\002 \001(\010\"V\n\036Constraint_SLA" + + "_Isolation_level\0224\n\017isolation_level\030\001 \003(" + + "\0162\033.context.IsolationLevelEnum\"\366\003\n\nConst" + + "raint\022,\n\006custom\030\001 \001(\0132\032.context.Constrai" + + "nt_CustomH\000\0220\n\010schedule\030\002 \001(\0132\034.context." + + "Constraint_ScheduleH\000\022A\n\021endpoint_locati" + + "on\030\003 \001(\0132$.context.Constraint_EndPointLo" + + "cationH\000\022A\n\021endpoint_priority\030\004 \001(\0132$.co" + + "ntext.Constraint_EndPointPriorityH\000\0228\n\014s" + + "la_capacity\030\005 \001(\0132 .context.Constraint_S" + + "LA_CapacityH\000\0226\n\013sla_latency\030\006 \001(\0132\037.con" + + "text.Constraint_SLA_LatencyH\000\022@\n\020sla_ava" + + "ilability\030\007 \001(\0132$.context.Constraint_SLA" + + "_AvailabilityH\000\022@\n\rsla_isolation\030\010 \001(\0132\'" + + ".context.Constraint_SLA_Isolation_levelH" + + "\000B\014\n\nconstraint\"^\n\022TeraFlowController\022&\n" + + "\ncontext_id\030\001 \001(\0132\022.context.ContextId\022\022\n" + + "\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024Authe" + + "nticationResult\022&\n\ncontext_id\030\001 \001(\0132\022.co" + + "ntext.ContextId\022\025\n\rauthenticated\030\002 \001(\010*j" + + "\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEFINED\020\000" + + "\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYPE_UPDA" + + "TE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\332\001\n\020DeviceDri" + + "verEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020\000\022\033\n\027D" + + "EVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICEDRIVER" + + "_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n" + + "\"DEVICEDRIVER_IETF_NETWORK_TOPOLOGY\020\004\022\033\n" + + "\027DEVICEDRIVER_ONF_TR_352\020\005\022\023\n\017DEVICEDRIV" + + "ER_XR\020\006*\217\001\n\033DeviceOperationalStatusEnum\022" + + "%\n!DEVICEOPERATIONALSTATUS_UNDEFINED\020\000\022$" + + "\n DEVICEOPERATIONALSTATUS_DISABLED\020\001\022#\n\037" + + "DEVICEOPERATIONALSTATUS_ENABLED\020\002*\201\001\n\017Se" + + "rviceTypeEnum\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024" + + "\n\020SERVICETYPE_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM" + + "\020\002\022)\n%SERVICETYPE_TAPI_CONNECTIVITY_SERV" + + "ICE\020\003*\250\001\n\021ServiceStatusEnum\022\033\n\027SERVICEST" + + "ATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_PLANNE" + + "D\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022!\n\035SERVICE" + + "STATUS_PENDING_REMOVAL\020\003\022\036\n\032SERVICESTATU" + + "S_SLA_VIOLATED\020\004*\251\001\n\017SliceStatusEnum\022\031\n\025" + + "SLICESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_P" + + "LANNED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICES" + + "TATUS_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034" + + "\n\030SLICESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigAc" + + "tionEnum\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020" + + "CONFIGACTION_SET\020\001\022\027\n\023CONFIGACTION_DELET" + + "E\020\002*\203\002\n\022IsolationLevelEnum\022\020\n\014NO_ISOLATI" + + "ON\020\000\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021LOGICAL_" + + "ISOLATION\020\002\022\025\n\021PROCESS_ISOLATION\020\003\022\035\n\031PH" + + "YSICAL_MEMORY_ISOLATION\020\004\022\036\n\032PHYSICAL_NE" + + "TWORK_ISOLATION\020\005\022\036\n\032VIRTUAL_RESOURCE_IS" + + "OLATION\020\006\022\037\n\033NETWORK_FUNCTIONS_ISOLATION" + + "\020\007\022\025\n\021SERVICE_ISOLATION\020\0102\331\023\n\016ContextSer" + + "vice\022:\n\016ListContextIds\022\016.context.Empty\032\026" + + ".context.ContextIdList\"\000\0226\n\014ListContexts" + + "\022\016.context.Empty\032\024.context.ContextList\"\000" + + "\0224\n\nGetContext\022\022.context.ContextId\032\020.con" + + "text.Context\"\000\0224\n\nSetContext\022\020.context.C" + + "ontext\032\022.context.ContextId\"\000\0225\n\rRemoveCo" + + "ntext\022\022.context.ContextId\032\016.context.Empt" + + "y\"\000\022=\n\020GetContextEvents\022\016.context.Empty\032" + + "\025.context.ContextEvent\"\0000\001\022@\n\017ListTopolo" + + "gyIds\022\022.context.ContextId\032\027.context.Topo" + + "logyIdList\"\000\022=\n\016ListTopologies\022\022.context" + + ".ContextId\032\025.context.TopologyList\"\000\0227\n\013G" + + "etTopology\022\023.context.TopologyId\032\021.contex" + + "t.Topology\"\000\0227\n\013SetTopology\022\021.context.To" + + "pology\032\023.context.TopologyId\"\000\0227\n\016RemoveT" + + "opology\022\023.context.TopologyId\032\016.context.E" + + "mpty\"\000\022?\n\021GetTopologyEvents\022\016.context.Em" + + "pty\032\026.context.TopologyEvent\"\0000\001\0228\n\rListD" + + "eviceIds\022\016.context.Empty\032\025.context.Devic" + + "eIdList\"\000\0224\n\013ListDevices\022\016.context.Empty" + + "\032\023.context.DeviceList\"\000\0221\n\tGetDevice\022\021.c" + + "ontext.DeviceId\032\017.context.Device\"\000\0221\n\tSe" + + "tDevice\022\017.context.Device\032\021.context.Devic" + + "eId\"\000\0223\n\014RemoveDevice\022\021.context.DeviceId" + + "\032\016.context.Empty\"\000\022;\n\017GetDeviceEvents\022\016." + + "context.Empty\032\024.context.DeviceEvent\"\0000\001\022" + + "4\n\013ListLinkIds\022\016.context.Empty\032\023.context" + + ".LinkIdList\"\000\0220\n\tListLinks\022\016.context.Emp" + + "ty\032\021.context.LinkList\"\000\022+\n\007GetLink\022\017.con" + + "text.LinkId\032\r.context.Link\"\000\022+\n\007SetLink\022" + + "\r.context.Link\032\017.context.LinkId\"\000\022/\n\nRem" + + "oveLink\022\017.context.LinkId\032\016.context.Empty" + + "\"\000\0227\n\rGetLinkEvents\022\016.context.Empty\032\022.co" + + "ntext.LinkEvent\"\0000\001\022>\n\016ListServiceIds\022\022." + + "context.ContextId\032\026.context.ServiceIdLis" + + "t\"\000\022:\n\014ListServices\022\022.context.ContextId\032" + + "\024.context.ServiceList\"\000\0224\n\nGetService\022\022." + + "context.ServiceId\032\020.context.Service\"\000\0224\n" + + "\nSetService\022\020.context.Service\032\022.context." + + "ServiceId\"\000\0226\n\014UnsetService\022\020.context.Se" + + "rvice\032\022.context.ServiceId\"\000\0225\n\rRemoveSer" + + "vice\022\022.context.ServiceId\032\016.context.Empty" + + "\"\000\022=\n\020GetServiceEvents\022\016.context.Empty\032\025" + + ".context.ServiceEvent\"\0000\001\022:\n\014ListSliceId" + + "s\022\022.context.ContextId\032\024.context.SliceIdL" + + "ist\"\000\0226\n\nListSlices\022\022.context.ContextId\032" + + "\022.context.SliceList\"\000\022.\n\010GetSlice\022\020.cont" + + "ext.SliceId\032\016.context.Slice\"\000\022.\n\010SetSlic" + + "e\022\016.context.Slice\032\020.context.SliceId\"\000\0220\n" + + "\nUnsetSlice\022\016.context.Slice\032\020.context.Sl" + + "iceId\"\000\0221\n\013RemoveSlice\022\020.context.SliceId" + + "\032\016.context.Empty\"\000\0229\n\016GetSliceEvents\022\016.c" + + "ontext.Empty\032\023.context.SliceEvent\"\0000\001\022D\n" + + "\021ListConnectionIds\022\022.context.ServiceId\032\031" + + ".context.ConnectionIdList\"\000\022@\n\017ListConne" + + "ctions\022\022.context.ServiceId\032\027.context.Con" + + "nectionList\"\000\022=\n\rGetConnection\022\025.context" + + ".ConnectionId\032\023.context.Connection\"\000\022=\n\r" + + "SetConnection\022\023.context.Connection\032\025.con" + + "text.ConnectionId\"\000\022;\n\020RemoveConnection\022" + + "\025.context.ConnectionId\032\016.context.Empty\"\000" + + "\022C\n\023GetConnectionEvents\022\016.context.Empty\032" + + "\030.context.ConnectionEvent\"\0000\001b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -62331,7 +62547,7 @@ public final class ContextOuterClass { internal_static_context_DeviceEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_context_DeviceEvent_descriptor, - new java.lang.String[] { "Event", "DeviceId", }); + new java.lang.String[] { "Event", "DeviceId", "DeviceConfig", }); internal_static_context_LinkId_descriptor = getDescriptor().getMessageTypes().get(20); internal_static_context_LinkId_fieldAccessorTable = new diff --git a/src/automation/target/generated-sources/grpc/context/ContextService.java b/src/automation/target/generated-sources/grpc/context/ContextService.java index d54c56057ca53e40071490d3b9aa313a13a77665..814ea98b65370f8fd3ffd752c77bec04997a5dd6 100644 --- a/src/automation/target/generated-sources/grpc/context/ContextService.java +++ b/src/automation/target/generated-sources/grpc/context/ContextService.java @@ -56,6 +56,8 @@ public interface ContextService extends MutinyService { io.smallrye.mutiny.Uni setService(context.ContextOuterClass.Service request); + io.smallrye.mutiny.Uni unsetService(context.ContextOuterClass.Service request); + io.smallrye.mutiny.Uni removeService(context.ContextOuterClass.ServiceId request); io.smallrye.mutiny.Uni listSliceIds(context.ContextOuterClass.ContextId request); @@ -66,6 +68,8 @@ public interface ContextService extends MutinyService { io.smallrye.mutiny.Uni setSlice(context.ContextOuterClass.Slice request); + io.smallrye.mutiny.Uni unsetSlice(context.ContextOuterClass.Slice request); + io.smallrye.mutiny.Uni removeSlice(context.ContextOuterClass.SliceId request); io.smallrye.mutiny.Uni listConnectionIds(context.ContextOuterClass.ServiceId request); diff --git a/src/automation/target/generated-sources/grpc/context/ContextServiceBean.java b/src/automation/target/generated-sources/grpc/context/ContextServiceBean.java index f552294b8e6d645af41cc30632ae0432504bbc67..2b0099f106265e34d1f60bb3e0ecdc35f81895ee 100644 --- a/src/automation/target/generated-sources/grpc/context/ContextServiceBean.java +++ b/src/automation/target/generated-sources/grpc/context/ContextServiceBean.java @@ -208,6 +208,14 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI } } @Override + public io.smallrye.mutiny.Uni unsetService(context.ContextOuterClass.Service request) { + try { + return delegate.unsetService(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + @Override public io.smallrye.mutiny.Uni removeService(context.ContextOuterClass.ServiceId request) { try { return delegate.removeService(request); @@ -248,6 +256,14 @@ public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceI } } @Override + public io.smallrye.mutiny.Uni unsetSlice(context.ContextOuterClass.Slice request) { + try { + return delegate.unsetSlice(request); + } catch (UnsupportedOperationException e) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + } + @Override public io.smallrye.mutiny.Uni removeSlice(context.ContextOuterClass.SliceId request) { try { return delegate.removeSlice(request); diff --git a/src/automation/target/generated-sources/grpc/context/ContextServiceClient.java b/src/automation/target/generated-sources/grpc/context/ContextServiceClient.java index c6493bd4d381967238e5eb87dd717f679d028526..c518a0b4622522728e0eb22fdbeb80442b10f7ef 100644 --- a/src/automation/target/generated-sources/grpc/context/ContextServiceClient.java +++ b/src/automation/target/generated-sources/grpc/context/ContextServiceClient.java @@ -117,6 +117,10 @@ public class ContextServiceClient implements ContextService, MutinyClient unsetService(context.ContextOuterClass.Service request) { + return stub.unsetService(request); + } + @Override public io.smallrye.mutiny.Uni removeService(context.ContextOuterClass.ServiceId request) { return stub.removeService(request); } @@ -137,6 +141,10 @@ public class ContextServiceClient implements ContextService, MutinyClient unsetSlice(context.ContextOuterClass.Slice request) { + return stub.unsetSlice(request); + } + @Override public io.smallrye.mutiny.Uni removeSlice(context.ContextOuterClass.SliceId request) { return stub.removeSlice(request); } diff --git a/src/automation/target/generated-sources/grpc/context/ContextServiceGrpc.java b/src/automation/target/generated-sources/grpc/context/ContextServiceGrpc.java index be720c127439e50f68c2518332f85f750d6579ee..f59378086c84d0776cc25fb7aa9640403b072c0f 100644 --- a/src/automation/target/generated-sources/grpc/context/ContextServiceGrpc.java +++ b/src/automation/target/generated-sources/grpc/context/ContextServiceGrpc.java @@ -882,6 +882,37 @@ public final class ContextServiceGrpc { return getSetServiceMethod; } + private static volatile io.grpc.MethodDescriptor getUnsetServiceMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "UnsetService", + requestType = context.ContextOuterClass.Service.class, + responseType = context.ContextOuterClass.ServiceId.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getUnsetServiceMethod() { + io.grpc.MethodDescriptor getUnsetServiceMethod; + if ((getUnsetServiceMethod = ContextServiceGrpc.getUnsetServiceMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getUnsetServiceMethod = ContextServiceGrpc.getUnsetServiceMethod) == null) { + ContextServiceGrpc.getUnsetServiceMethod = getUnsetServiceMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "UnsetService")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + context.ContextOuterClass.Service.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + context.ContextOuterClass.ServiceId.getDefaultInstance())) + .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("UnsetService")) + .build(); + } + } + } + return getUnsetServiceMethod; + } + private static volatile io.grpc.MethodDescriptor getRemoveServiceMethod; @@ -1068,6 +1099,37 @@ public final class ContextServiceGrpc { return getSetSliceMethod; } + private static volatile io.grpc.MethodDescriptor getUnsetSliceMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "UnsetSlice", + requestType = context.ContextOuterClass.Slice.class, + responseType = context.ContextOuterClass.SliceId.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getUnsetSliceMethod() { + io.grpc.MethodDescriptor getUnsetSliceMethod; + if ((getUnsetSliceMethod = ContextServiceGrpc.getUnsetSliceMethod) == null) { + synchronized (ContextServiceGrpc.class) { + if ((getUnsetSliceMethod = ContextServiceGrpc.getUnsetSliceMethod) == null) { + ContextServiceGrpc.getUnsetSliceMethod = getUnsetSliceMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "UnsetSlice")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + context.ContextOuterClass.Slice.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + context.ContextOuterClass.SliceId.getDefaultInstance())) + .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("UnsetSlice")) + .build(); + } + } + } + return getUnsetSliceMethod; + } + private static volatile io.grpc.MethodDescriptor getRemoveSliceMethod; @@ -1560,6 +1622,13 @@ public final class ContextServiceGrpc { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetServiceMethod(), responseObserver); } + /** + */ + public void unsetService(context.ContextOuterClass.Service request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetServiceMethod(), responseObserver); + } + /** */ public void removeService(context.ContextOuterClass.ServiceId request, @@ -1602,6 +1671,13 @@ public final class ContextServiceGrpc { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetSliceMethod(), responseObserver); } + /** + */ + public void unsetSlice(context.ContextOuterClass.Slice request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetSliceMethod(), responseObserver); + } + /** */ public void removeSlice(context.ContextOuterClass.SliceId request, @@ -1856,6 +1932,13 @@ public final class ContextServiceGrpc { context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>( this, METHODID_SET_SERVICE))) + .addMethod( + getUnsetServiceMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + context.ContextOuterClass.Service, + context.ContextOuterClass.ServiceId>( + this, METHODID_UNSET_SERVICE))) .addMethod( getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall( @@ -1898,6 +1981,13 @@ public final class ContextServiceGrpc { context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>( this, METHODID_SET_SLICE))) + .addMethod( + getUnsetSliceMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + context.ContextOuterClass.Slice, + context.ContextOuterClass.SliceId>( + this, METHODID_UNSET_SLICE))) .addMethod( getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall( @@ -2196,6 +2286,14 @@ public final class ContextServiceGrpc { getChannel().newCall(getSetServiceMethod(), getCallOptions()), request, responseObserver); } + /** + */ + public void unsetService(context.ContextOuterClass.Service request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getUnsetServiceMethod(), getCallOptions()), request, responseObserver); + } + /** */ public void removeService(context.ContextOuterClass.ServiceId request, @@ -2244,6 +2342,14 @@ public final class ContextServiceGrpc { getChannel().newCall(getSetSliceMethod(), getCallOptions()), request, responseObserver); } + /** + */ + public void unsetSlice(context.ContextOuterClass.Slice request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getUnsetSliceMethod(), getCallOptions()), request, responseObserver); + } + /** */ public void removeSlice(context.ContextOuterClass.SliceId request, @@ -2523,6 +2629,13 @@ public final class ContextServiceGrpc { getChannel(), getSetServiceMethod(), getCallOptions(), request); } + /** + */ + public context.ContextOuterClass.ServiceId unsetService(context.ContextOuterClass.Service request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getUnsetServiceMethod(), getCallOptions(), request); + } + /** */ public context.ContextOuterClass.Empty removeService(context.ContextOuterClass.ServiceId request) { @@ -2566,6 +2679,13 @@ public final class ContextServiceGrpc { getChannel(), getSetSliceMethod(), getCallOptions(), request); } + /** + */ + public context.ContextOuterClass.SliceId unsetSlice(context.ContextOuterClass.Slice request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getUnsetSliceMethod(), getCallOptions(), request); + } + /** */ public context.ContextOuterClass.Empty removeSlice(context.ContextOuterClass.SliceId request) { @@ -2831,6 +2951,14 @@ public final class ContextServiceGrpc { getChannel().newCall(getSetServiceMethod(), getCallOptions()), request); } + /** + */ + public com.google.common.util.concurrent.ListenableFuture unsetService( + context.ContextOuterClass.Service request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getUnsetServiceMethod(), getCallOptions()), request); + } + /** */ public com.google.common.util.concurrent.ListenableFuture removeService( @@ -2871,6 +2999,14 @@ public final class ContextServiceGrpc { getChannel().newCall(getSetSliceMethod(), getCallOptions()), request); } + /** + */ + public com.google.common.util.concurrent.ListenableFuture unsetSlice( + context.ContextOuterClass.Slice request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getUnsetSliceMethod(), getCallOptions()), request); + } + /** */ public com.google.common.util.concurrent.ListenableFuture removeSlice( @@ -2948,20 +3084,22 @@ public final class ContextServiceGrpc { private static final int METHODID_LIST_SERVICES = 25; private static final int METHODID_GET_SERVICE = 26; private static final int METHODID_SET_SERVICE = 27; - private static final int METHODID_REMOVE_SERVICE = 28; - private static final int METHODID_GET_SERVICE_EVENTS = 29; - private static final int METHODID_LIST_SLICE_IDS = 30; - private static final int METHODID_LIST_SLICES = 31; - private static final int METHODID_GET_SLICE = 32; - private static final int METHODID_SET_SLICE = 33; - private static final int METHODID_REMOVE_SLICE = 34; - private static final int METHODID_GET_SLICE_EVENTS = 35; - private static final int METHODID_LIST_CONNECTION_IDS = 36; - private static final int METHODID_LIST_CONNECTIONS = 37; - private static final int METHODID_GET_CONNECTION = 38; - private static final int METHODID_SET_CONNECTION = 39; - private static final int METHODID_REMOVE_CONNECTION = 40; - private static final int METHODID_GET_CONNECTION_EVENTS = 41; + private static final int METHODID_UNSET_SERVICE = 28; + private static final int METHODID_REMOVE_SERVICE = 29; + private static final int METHODID_GET_SERVICE_EVENTS = 30; + private static final int METHODID_LIST_SLICE_IDS = 31; + private static final int METHODID_LIST_SLICES = 32; + private static final int METHODID_GET_SLICE = 33; + private static final int METHODID_SET_SLICE = 34; + private static final int METHODID_UNSET_SLICE = 35; + private static final int METHODID_REMOVE_SLICE = 36; + private static final int METHODID_GET_SLICE_EVENTS = 37; + private static final int METHODID_LIST_CONNECTION_IDS = 38; + private static final int METHODID_LIST_CONNECTIONS = 39; + private static final int METHODID_GET_CONNECTION = 40; + private static final int METHODID_SET_CONNECTION = 41; + private static final int METHODID_REMOVE_CONNECTION = 42; + private static final int METHODID_GET_CONNECTION_EVENTS = 43; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -3092,6 +3230,10 @@ public final class ContextServiceGrpc { serviceImpl.setService((context.ContextOuterClass.Service) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_UNSET_SERVICE: + serviceImpl.unsetService((context.ContextOuterClass.Service) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; case METHODID_REMOVE_SERVICE: serviceImpl.removeService((context.ContextOuterClass.ServiceId) request, (io.grpc.stub.StreamObserver) responseObserver); @@ -3116,6 +3258,10 @@ public final class ContextServiceGrpc { serviceImpl.setSlice((context.ContextOuterClass.Slice) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_UNSET_SLICE: + serviceImpl.unsetSlice((context.ContextOuterClass.Slice) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; case METHODID_REMOVE_SLICE: serviceImpl.removeSlice((context.ContextOuterClass.SliceId) request, (io.grpc.stub.StreamObserver) responseObserver); @@ -3237,12 +3383,14 @@ public final class ContextServiceGrpc { .addMethod(getListServicesMethod()) .addMethod(getGetServiceMethod()) .addMethod(getSetServiceMethod()) + .addMethod(getUnsetServiceMethod()) .addMethod(getRemoveServiceMethod()) .addMethod(getGetServiceEventsMethod()) .addMethod(getListSliceIdsMethod()) .addMethod(getListSlicesMethod()) .addMethod(getGetSliceMethod()) .addMethod(getSetSliceMethod()) + .addMethod(getUnsetSliceMethod()) .addMethod(getRemoveSliceMethod()) .addMethod(getGetSliceEventsMethod()) .addMethod(getListConnectionIdsMethod()) diff --git a/src/automation/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java b/src/automation/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java index 9f71b53786e40922546dc59cfd4328040a40bd7c..f7d2cb94e339366b54355c7e11b3ee72fa1e415c 100644 --- a/src/automation/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java +++ b/src/automation/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java @@ -156,6 +156,11 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M } + public io.smallrye.mutiny.Uni unsetService(context.ContextOuterClass.Service request) { + return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::unsetService); + } + + public io.smallrye.mutiny.Uni removeService(context.ContextOuterClass.ServiceId request) { return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::removeService); } @@ -181,6 +186,11 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M } + public io.smallrye.mutiny.Uni unsetSlice(context.ContextOuterClass.Slice request) { + return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::unsetSlice); + } + + public io.smallrye.mutiny.Uni removeSlice(context.ContextOuterClass.SliceId request) { return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::removeSlice); } @@ -383,6 +393,11 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M } + public io.smallrye.mutiny.Uni unsetService(context.ContextOuterClass.Service request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + + public io.smallrye.mutiny.Uni removeService(context.ContextOuterClass.ServiceId request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } @@ -408,6 +423,11 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M } + public io.smallrye.mutiny.Uni unsetSlice(context.ContextOuterClass.Slice request) { + throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); + } + + public io.smallrye.mutiny.Uni removeSlice(context.ContextOuterClass.SliceId request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } @@ -670,6 +690,13 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>( this, METHODID_SET_SERVICE, compression))) + .addMethod( + context.ContextServiceGrpc.getUnsetServiceMethod(), + asyncUnaryCall( + new MethodHandlers< + context.ContextOuterClass.Service, + context.ContextOuterClass.ServiceId>( + this, METHODID_UNSET_SERVICE, compression))) .addMethod( context.ContextServiceGrpc.getRemoveServiceMethod(), asyncUnaryCall( @@ -712,6 +739,13 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>( this, METHODID_SET_SLICE, compression))) + .addMethod( + context.ContextServiceGrpc.getUnsetSliceMethod(), + asyncUnaryCall( + new MethodHandlers< + context.ContextOuterClass.Slice, + context.ContextOuterClass.SliceId>( + this, METHODID_UNSET_SLICE, compression))) .addMethod( context.ContextServiceGrpc.getRemoveSliceMethod(), asyncUnaryCall( @@ -800,20 +834,22 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M private static final int METHODID_LIST_SERVICES = 25; private static final int METHODID_GET_SERVICE = 26; private static final int METHODID_SET_SERVICE = 27; - private static final int METHODID_REMOVE_SERVICE = 28; - private static final int METHODID_GET_SERVICE_EVENTS = 29; - private static final int METHODID_LIST_SLICE_IDS = 30; - private static final int METHODID_LIST_SLICES = 31; - private static final int METHODID_GET_SLICE = 32; - private static final int METHODID_SET_SLICE = 33; - private static final int METHODID_REMOVE_SLICE = 34; - private static final int METHODID_GET_SLICE_EVENTS = 35; - private static final int METHODID_LIST_CONNECTION_IDS = 36; - private static final int METHODID_LIST_CONNECTIONS = 37; - private static final int METHODID_GET_CONNECTION = 38; - private static final int METHODID_SET_CONNECTION = 39; - private static final int METHODID_REMOVE_CONNECTION = 40; - private static final int METHODID_GET_CONNECTION_EVENTS = 41; + private static final int METHODID_UNSET_SERVICE = 28; + private static final int METHODID_REMOVE_SERVICE = 29; + private static final int METHODID_GET_SERVICE_EVENTS = 30; + private static final int METHODID_LIST_SLICE_IDS = 31; + private static final int METHODID_LIST_SLICES = 32; + private static final int METHODID_GET_SLICE = 33; + private static final int METHODID_SET_SLICE = 34; + private static final int METHODID_UNSET_SLICE = 35; + private static final int METHODID_REMOVE_SLICE = 36; + private static final int METHODID_GET_SLICE_EVENTS = 37; + private static final int METHODID_LIST_CONNECTION_IDS = 38; + private static final int METHODID_LIST_CONNECTIONS = 39; + private static final int METHODID_GET_CONNECTION = 40; + private static final int METHODID_SET_CONNECTION = 41; + private static final int METHODID_REMOVE_CONNECTION = 42; + private static final int METHODID_GET_CONNECTION_EVENTS = 43; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -1002,6 +1038,12 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M compression, serviceImpl::setService); break; + case METHODID_UNSET_SERVICE: + io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Service) request, + (io.grpc.stub.StreamObserver) responseObserver, + compression, + serviceImpl::unsetService); + break; case METHODID_REMOVE_SERVICE: io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ServiceId) request, (io.grpc.stub.StreamObserver) responseObserver, @@ -1038,6 +1080,12 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M compression, serviceImpl::setSlice); break; + case METHODID_UNSET_SLICE: + io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Slice) request, + (io.grpc.stub.StreamObserver) responseObserver, + compression, + serviceImpl::unsetSlice); + break; case METHODID_REMOVE_SLICE: io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.SliceId) request, (io.grpc.stub.StreamObserver) responseObserver, diff --git a/src/automation/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java b/src/automation/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java index 67e1ec736f9d83cbf95b419e9e61e92e82e73b88..217672b2e8de2d7c840833a937b0fb04c38a221b 100644 --- a/src/automation/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java +++ b/src/automation/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java @@ -31,6 +31,10 @@ public final class KpiSampleTypes { * KPISAMPLETYPE_PACKETS_RECEIVED = 102; */ KPISAMPLETYPE_PACKETS_RECEIVED(102), + /** + * KPISAMPLETYPE_PACKETS_DROPPED = 103; + */ + KPISAMPLETYPE_PACKETS_DROPPED(103), /** * KPISAMPLETYPE_BYTES_TRANSMITTED = 201; */ @@ -39,6 +43,50 @@ public final class KpiSampleTypes { * KPISAMPLETYPE_BYTES_RECEIVED = 202; */ KPISAMPLETYPE_BYTES_RECEIVED(202), + /** + * KPISAMPLETYPE_BYTES_DROPPED = 203; + */ + KPISAMPLETYPE_BYTES_DROPPED(203), + /** + *
+     *. can be used by both optical and L3 without any issue
+     * 
+ * + * KPISAMPLETYPE_ML_CONFIDENCE = 401; + */ + KPISAMPLETYPE_ML_CONFIDENCE(401), + /** + *
+     *. can be used by both optical and L3 without any issue
+     * 
+ * + * KPISAMPLETYPE_OPTICAL_SECURITY_STATUS = 501; + */ + KPISAMPLETYPE_OPTICAL_SECURITY_STATUS(501), + /** + * KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS = 601; + */ + KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS(601), + /** + * KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS = 602; + */ + KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS(602), + /** + * KPISAMPLETYPE_L3_UNIQUE_ATTACKERS = 603; + */ + KPISAMPLETYPE_L3_UNIQUE_ATTACKERS(603), + /** + * KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS = 604; + */ + KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS(604), + /** + * KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO = 605; + */ + KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO(605), + /** + * KPISAMPLETYPE_SERVICE_LATENCY_MS = 701; + */ + KPISAMPLETYPE_SERVICE_LATENCY_MS(701), UNRECOGNIZED(-1), ; @@ -54,6 +102,10 @@ public final class KpiSampleTypes { * KPISAMPLETYPE_PACKETS_RECEIVED = 102; */ public static final int KPISAMPLETYPE_PACKETS_RECEIVED_VALUE = 102; + /** + * KPISAMPLETYPE_PACKETS_DROPPED = 103; + */ + public static final int KPISAMPLETYPE_PACKETS_DROPPED_VALUE = 103; /** * KPISAMPLETYPE_BYTES_TRANSMITTED = 201; */ @@ -62,6 +114,50 @@ public final class KpiSampleTypes { * KPISAMPLETYPE_BYTES_RECEIVED = 202; */ public static final int KPISAMPLETYPE_BYTES_RECEIVED_VALUE = 202; + /** + * KPISAMPLETYPE_BYTES_DROPPED = 203; + */ + public static final int KPISAMPLETYPE_BYTES_DROPPED_VALUE = 203; + /** + *
+     *. can be used by both optical and L3 without any issue
+     * 
+ * + * KPISAMPLETYPE_ML_CONFIDENCE = 401; + */ + public static final int KPISAMPLETYPE_ML_CONFIDENCE_VALUE = 401; + /** + *
+     *. can be used by both optical and L3 without any issue
+     * 
+ * + * KPISAMPLETYPE_OPTICAL_SECURITY_STATUS = 501; + */ + public static final int KPISAMPLETYPE_OPTICAL_SECURITY_STATUS_VALUE = 501; + /** + * KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS = 601; + */ + public static final int KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS_VALUE = 601; + /** + * KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS = 602; + */ + public static final int KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS_VALUE = 602; + /** + * KPISAMPLETYPE_L3_UNIQUE_ATTACKERS = 603; + */ + public static final int KPISAMPLETYPE_L3_UNIQUE_ATTACKERS_VALUE = 603; + /** + * KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS = 604; + */ + public static final int KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS_VALUE = 604; + /** + * KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO = 605; + */ + public static final int KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO_VALUE = 605; + /** + * KPISAMPLETYPE_SERVICE_LATENCY_MS = 701; + */ + public static final int KPISAMPLETYPE_SERVICE_LATENCY_MS_VALUE = 701; public final int getNumber() { @@ -91,8 +187,18 @@ public final class KpiSampleTypes { case 0: return KPISAMPLETYPE_UNKNOWN; case 101: return KPISAMPLETYPE_PACKETS_TRANSMITTED; case 102: return KPISAMPLETYPE_PACKETS_RECEIVED; + case 103: return KPISAMPLETYPE_PACKETS_DROPPED; case 201: return KPISAMPLETYPE_BYTES_TRANSMITTED; case 202: return KPISAMPLETYPE_BYTES_RECEIVED; + case 203: return KPISAMPLETYPE_BYTES_DROPPED; + case 401: return KPISAMPLETYPE_ML_CONFIDENCE; + case 501: return KPISAMPLETYPE_OPTICAL_SECURITY_STATUS; + case 601: return KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS; + case 602: return KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS; + case 603: return KPISAMPLETYPE_L3_UNIQUE_ATTACKERS; + case 604: return KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS; + case 605: return KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO; + case 701: return KPISAMPLETYPE_SERVICE_LATENCY_MS; default: return null; } } @@ -159,12 +265,22 @@ public final class KpiSampleTypes { static { java.lang.String[] descriptorData = { "\n\026kpi_sample_types.proto\022\020kpi_sample_typ" + - "es*\276\001\n\rKpiSampleType\022\031\n\025KPISAMPLETYPE_UN" + + "es*\327\004\n\rKpiSampleType\022\031\n\025KPISAMPLETYPE_UN" + "KNOWN\020\000\022%\n!KPISAMPLETYPE_PACKETS_TRANSMI" + "TTED\020e\022\"\n\036KPISAMPLETYPE_PACKETS_RECEIVED" + - "\020f\022$\n\037KPISAMPLETYPE_BYTES_TRANSMITTED\020\311\001" + - "\022!\n\034KPISAMPLETYPE_BYTES_RECEIVED\020\312\001b\006pro" + - "to3" + "\020f\022!\n\035KPISAMPLETYPE_PACKETS_DROPPED\020g\022$\n" + + "\037KPISAMPLETYPE_BYTES_TRANSMITTED\020\311\001\022!\n\034K" + + "PISAMPLETYPE_BYTES_RECEIVED\020\312\001\022 \n\033KPISAM" + + "PLETYPE_BYTES_DROPPED\020\313\001\022 \n\033KPISAMPLETYP" + + "E_ML_CONFIDENCE\020\221\003\022*\n%KPISAMPLETYPE_OPTI" + + "CAL_SECURITY_STATUS\020\365\003\022)\n$KPISAMPLETYPE_" + + "L3_UNIQUE_ATTACK_CONNS\020\331\004\022*\n%KPISAMPLETY" + + "PE_L3_TOTAL_DROPPED_PACKTS\020\332\004\022&\n!KPISAMP" + + "LETYPE_L3_UNIQUE_ATTACKERS\020\333\004\0220\n+KPISAMP" + + "LETYPE_L3_UNIQUE_COMPROMISED_CLIENTS\020\334\004\022" + + ",\n\'KPISAMPLETYPE_L3_SECURITY_STATUS_CRYP" + + "TO\020\335\004\022%\n KPISAMPLETYPE_SERVICE_LATENCY_M" + + "S\020\275\005b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, diff --git a/src/automation/target/generated-sources/grpc/monitoring/Monitoring.java b/src/automation/target/generated-sources/grpc/monitoring/Monitoring.java index 9d05f3da8a831e74922e65473206539680c8d78b..38f026eb1ac730e8f825e460916dc57469f0d312 100644 --- a/src/automation/target/generated-sources/grpc/monitoring/Monitoring.java +++ b/src/automation/target/generated-sources/grpc/monitoring/Monitoring.java @@ -139,6 +139,21 @@ public final class Monitoring { * .context.SliceId slice_id = 8; */ context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder(); + + /** + * .context.ConnectionId connection_id = 9; + * @return Whether the connectionId field is set. + */ + boolean hasConnectionId(); + /** + * .context.ConnectionId connection_id = 9; + * @return The connectionId. + */ + context.ContextOuterClass.ConnectionId getConnectionId(); + /** + * .context.ConnectionId connection_id = 9; + */ + context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder(); } /** * Protobuf type {@code monitoring.KpiDescriptor} @@ -275,6 +290,19 @@ public final class Monitoring { break; } + case 74: { + context.ContextOuterClass.ConnectionId.Builder subBuilder = null; + if (connectionId_ != null) { + subBuilder = connectionId_.toBuilder(); + } + connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(connectionId_); + connectionId_ = subBuilder.buildPartial(); + } + + break; + } default: { if (!parseUnknownField( input, unknownFields, extensionRegistry, tag)) { @@ -537,6 +565,32 @@ public final class Monitoring { return getSliceId(); } + public static final int CONNECTION_ID_FIELD_NUMBER = 9; + private context.ContextOuterClass.ConnectionId connectionId_; + /** + * .context.ConnectionId connection_id = 9; + * @return Whether the connectionId field is set. + */ + @java.lang.Override + public boolean hasConnectionId() { + return connectionId_ != null; + } + /** + * .context.ConnectionId connection_id = 9; + * @return The connectionId. + */ + @java.lang.Override + public context.ContextOuterClass.ConnectionId getConnectionId() { + return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_; + } + /** + * .context.ConnectionId connection_id = 9; + */ + @java.lang.Override + public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() { + return getConnectionId(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -575,6 +629,9 @@ public final class Monitoring { if (sliceId_ != null) { output.writeMessage(8, getSliceId()); } + if (connectionId_ != null) { + output.writeMessage(9, getConnectionId()); + } unknownFields.writeTo(output); } @@ -615,6 +672,10 @@ public final class Monitoring { size += com.google.protobuf.CodedOutputStream .computeMessageSize(8, getSliceId()); } + if (connectionId_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(9, getConnectionId()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -660,6 +721,11 @@ public final class Monitoring { if (!getSliceId() .equals(other.getSliceId())) return false; } + if (hasConnectionId() != other.hasConnectionId()) return false; + if (hasConnectionId()) { + if (!getConnectionId() + .equals(other.getConnectionId())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -699,6 +765,10 @@ public final class Monitoring { hash = (37 * hash) + SLICE_ID_FIELD_NUMBER; hash = (53 * hash) + getSliceId().hashCode(); } + if (hasConnectionId()) { + hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER; + hash = (53 * hash) + getConnectionId().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -873,6 +943,12 @@ public final class Monitoring { sliceId_ = null; sliceIdBuilder_ = null; } + if (connectionIdBuilder_ == null) { + connectionId_ = null; + } else { + connectionId_ = null; + connectionIdBuilder_ = null; + } return this; } @@ -936,6 +1012,11 @@ public final class Monitoring { } else { result.sliceId_ = sliceIdBuilder_.build(); } + if (connectionIdBuilder_ == null) { + result.connectionId_ = connectionId_; + } else { + result.connectionId_ = connectionIdBuilder_.build(); + } onBuilt(); return result; } @@ -1032,6 +1113,9 @@ public final class Monitoring { if (other.hasSliceId()) { mergeSliceId(other.getSliceId()); } + if (other.hasConnectionId()) { + mergeConnectionId(other.getConnectionId()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -2026,6 +2110,125 @@ public final class Monitoring { } return sliceIdBuilder_; } + + private context.ContextOuterClass.ConnectionId connectionId_; + private com.google.protobuf.SingleFieldBuilderV3< + context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_; + /** + * .context.ConnectionId connection_id = 9; + * @return Whether the connectionId field is set. + */ + public boolean hasConnectionId() { + return connectionIdBuilder_ != null || connectionId_ != null; + } + /** + * .context.ConnectionId connection_id = 9; + * @return The connectionId. + */ + public context.ContextOuterClass.ConnectionId getConnectionId() { + if (connectionIdBuilder_ == null) { + return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_; + } else { + return connectionIdBuilder_.getMessage(); + } + } + /** + * .context.ConnectionId connection_id = 9; + */ + public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) { + if (connectionIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + connectionId_ = value; + onChanged(); + } else { + connectionIdBuilder_.setMessage(value); + } + + return this; + } + /** + * .context.ConnectionId connection_id = 9; + */ + public Builder setConnectionId( + context.ContextOuterClass.ConnectionId.Builder builderForValue) { + if (connectionIdBuilder_ == null) { + connectionId_ = builderForValue.build(); + onChanged(); + } else { + connectionIdBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .context.ConnectionId connection_id = 9; + */ + public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) { + if (connectionIdBuilder_ == null) { + if (connectionId_ != null) { + connectionId_ = + context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial(); + } else { + connectionId_ = value; + } + onChanged(); + } else { + connectionIdBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .context.ConnectionId connection_id = 9; + */ + public Builder clearConnectionId() { + if (connectionIdBuilder_ == null) { + connectionId_ = null; + onChanged(); + } else { + connectionId_ = null; + connectionIdBuilder_ = null; + } + + return this; + } + /** + * .context.ConnectionId connection_id = 9; + */ + public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() { + + onChanged(); + return getConnectionIdFieldBuilder().getBuilder(); + } + /** + * .context.ConnectionId connection_id = 9; + */ + public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() { + if (connectionIdBuilder_ != null) { + return connectionIdBuilder_.getMessageOrBuilder(); + } else { + return connectionId_ == null ? + context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_; + } + } + /** + * .context.ConnectionId connection_id = 9; + */ + private com.google.protobuf.SingleFieldBuilderV3< + context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> + getConnectionIdFieldBuilder() { + if (connectionIdBuilder_ == null) { + connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>( + getConnectionId(), + getParentForChildren(), + isClean()); + connectionId_ = null; + } + return connectionIdBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -2869,27 +3072,27 @@ public final class Monitoring { com.google.protobuf.MessageOrBuilder { /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ java.util.List - getKpiIdList(); + getKpiIdsList(); /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - monitoring.Monitoring.KpiId getKpiId(int index); + monitoring.Monitoring.KpiId getKpiIds(int index); /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - int getKpiIdCount(); + int getKpiIdsCount(); /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ java.util.List - getKpiIdOrBuilderList(); + getKpiIdsOrBuilderList(); /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder( + monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder( int index); /** @@ -2898,18 +3101,12 @@ public final class Monitoring { */ float getMonitoringWindowS(); - /** - * float sampling_rate_s = 3; - * @return The samplingRateS. - */ - float getSamplingRateS(); - /** *
      * used when you want something like "get the last N many samples
      * 
* - * uint32 last_n_samples = 4; + * uint32 last_n_samples = 3; * @return The lastNSamples. */ int getLastNSamples(); @@ -2919,7 +3116,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; * @return Whether the startTimestamp field is set. */ boolean hasStartTimestamp(); @@ -2928,7 +3125,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; * @return The startTimestamp. */ context.ContextOuterClass.Timestamp getStartTimestamp(); @@ -2937,7 +3134,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; */ context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder(); @@ -2946,7 +3143,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; * @return Whether the endTimestamp field is set. */ boolean hasEndTimestamp(); @@ -2955,7 +3152,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; * @return The endTimestamp. */ context.ContextOuterClass.Timestamp getEndTimestamp(); @@ -2964,7 +3161,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; */ context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder(); } @@ -2981,7 +3178,7 @@ public final class Monitoring { super(builder); } private KpiQuery() { - kpiId_ = java.util.Collections.emptyList(); + kpiIds_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -3017,10 +3214,10 @@ public final class Monitoring { break; case 10: { if (!((mutable_bitField0_ & 0x00000001) != 0)) { - kpiId_ = new java.util.ArrayList(); + kpiIds_ = new java.util.ArrayList(); mutable_bitField0_ |= 0x00000001; } - kpiId_.add( + kpiIds_.add( input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry)); break; } @@ -3029,17 +3226,12 @@ public final class Monitoring { monitoringWindowS_ = input.readFloat(); break; } - case 29: { - - samplingRateS_ = input.readFloat(); - break; - } - case 32: { + case 24: { lastNSamples_ = input.readUInt32(); break; } - case 42: { + case 34: { context.ContextOuterClass.Timestamp.Builder subBuilder = null; if (startTimestamp_ != null) { subBuilder = startTimestamp_.toBuilder(); @@ -3052,7 +3244,7 @@ public final class Monitoring { break; } - case 50: { + case 42: { context.ContextOuterClass.Timestamp.Builder subBuilder = null; if (endTimestamp_ != null) { subBuilder = endTimestamp_.toBuilder(); @@ -3081,7 +3273,7 @@ public final class Monitoring { e).setUnfinishedMessage(this); } finally { if (((mutable_bitField0_ & 0x00000001) != 0)) { - kpiId_ = java.util.Collections.unmodifiableList(kpiId_); + kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_); } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); @@ -3100,44 +3292,44 @@ public final class Monitoring { monitoring.Monitoring.KpiQuery.class, monitoring.Monitoring.KpiQuery.Builder.class); } - public static final int KPI_ID_FIELD_NUMBER = 1; - private java.util.List kpiId_; + public static final int KPI_IDS_FIELD_NUMBER = 1; + private java.util.List kpiIds_; /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ @java.lang.Override - public java.util.List getKpiIdList() { - return kpiId_; + public java.util.List getKpiIdsList() { + return kpiIds_; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ @java.lang.Override public java.util.List - getKpiIdOrBuilderList() { - return kpiId_; + getKpiIdsOrBuilderList() { + return kpiIds_; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ @java.lang.Override - public int getKpiIdCount() { - return kpiId_.size(); + public int getKpiIdsCount() { + return kpiIds_.size(); } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ @java.lang.Override - public monitoring.Monitoring.KpiId getKpiId(int index) { - return kpiId_.get(index); + public monitoring.Monitoring.KpiId getKpiIds(int index) { + return kpiIds_.get(index); } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ @java.lang.Override - public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder( + public monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder( int index) { - return kpiId_.get(index); + return kpiIds_.get(index); } public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2; @@ -3151,25 +3343,14 @@ public final class Monitoring { return monitoringWindowS_; } - public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3; - private float samplingRateS_; - /** - * float sampling_rate_s = 3; - * @return The samplingRateS. - */ - @java.lang.Override - public float getSamplingRateS() { - return samplingRateS_; - } - - public static final int LAST_N_SAMPLES_FIELD_NUMBER = 4; + public static final int LAST_N_SAMPLES_FIELD_NUMBER = 3; private int lastNSamples_; /** *
      * used when you want something like "get the last N many samples
      * 
* - * uint32 last_n_samples = 4; + * uint32 last_n_samples = 3; * @return The lastNSamples. */ @java.lang.Override @@ -3177,14 +3358,14 @@ public final class Monitoring { return lastNSamples_; } - public static final int START_TIMESTAMP_FIELD_NUMBER = 5; + public static final int START_TIMESTAMP_FIELD_NUMBER = 4; private context.ContextOuterClass.Timestamp startTimestamp_; /** *
      * used when you want something like "get the samples since X date/time"
      * 
* - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; * @return Whether the startTimestamp field is set. */ @java.lang.Override @@ -3196,7 +3377,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; * @return The startTimestamp. */ @java.lang.Override @@ -3208,21 +3389,21 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; */ @java.lang.Override public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() { return getStartTimestamp(); } - public static final int END_TIMESTAMP_FIELD_NUMBER = 6; + public static final int END_TIMESTAMP_FIELD_NUMBER = 5; private context.ContextOuterClass.Timestamp endTimestamp_; /** *
      * used when you want something like "get the samples until X date/time"
      * 
* - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; * @return Whether the endTimestamp field is set. */ @java.lang.Override @@ -3234,7 +3415,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; * @return The endTimestamp. */ @java.lang.Override @@ -3246,7 +3427,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; */ @java.lang.Override public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() { @@ -3267,23 +3448,20 @@ public final class Monitoring { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - for (int i = 0; i < kpiId_.size(); i++) { - output.writeMessage(1, kpiId_.get(i)); + for (int i = 0; i < kpiIds_.size(); i++) { + output.writeMessage(1, kpiIds_.get(i)); } if (monitoringWindowS_ != 0F) { output.writeFloat(2, monitoringWindowS_); } - if (samplingRateS_ != 0F) { - output.writeFloat(3, samplingRateS_); - } if (lastNSamples_ != 0) { - output.writeUInt32(4, lastNSamples_); + output.writeUInt32(3, lastNSamples_); } if (startTimestamp_ != null) { - output.writeMessage(5, getStartTimestamp()); + output.writeMessage(4, getStartTimestamp()); } if (endTimestamp_ != null) { - output.writeMessage(6, getEndTimestamp()); + output.writeMessage(5, getEndTimestamp()); } unknownFields.writeTo(output); } @@ -3294,29 +3472,25 @@ public final class Monitoring { if (size != -1) return size; size = 0; - for (int i = 0; i < kpiId_.size(); i++) { + for (int i = 0; i < kpiIds_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, kpiId_.get(i)); + .computeMessageSize(1, kpiIds_.get(i)); } if (monitoringWindowS_ != 0F) { size += com.google.protobuf.CodedOutputStream .computeFloatSize(2, monitoringWindowS_); } - if (samplingRateS_ != 0F) { - size += com.google.protobuf.CodedOutputStream - .computeFloatSize(3, samplingRateS_); - } if (lastNSamples_ != 0) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(4, lastNSamples_); + .computeUInt32Size(3, lastNSamples_); } if (startTimestamp_ != null) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(5, getStartTimestamp()); + .computeMessageSize(4, getStartTimestamp()); } if (endTimestamp_ != null) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(6, getEndTimestamp()); + .computeMessageSize(5, getEndTimestamp()); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -3333,14 +3507,11 @@ public final class Monitoring { } monitoring.Monitoring.KpiQuery other = (monitoring.Monitoring.KpiQuery) obj; - if (!getKpiIdList() - .equals(other.getKpiIdList())) return false; + if (!getKpiIdsList() + .equals(other.getKpiIdsList())) return false; if (java.lang.Float.floatToIntBits(getMonitoringWindowS()) != java.lang.Float.floatToIntBits( other.getMonitoringWindowS())) return false; - if (java.lang.Float.floatToIntBits(getSamplingRateS()) - != java.lang.Float.floatToIntBits( - other.getSamplingRateS())) return false; if (getLastNSamples() != other.getLastNSamples()) return false; if (hasStartTimestamp() != other.hasStartTimestamp()) return false; @@ -3364,16 +3535,13 @@ public final class Monitoring { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (getKpiIdCount() > 0) { - hash = (37 * hash) + KPI_ID_FIELD_NUMBER; - hash = (53 * hash) + getKpiIdList().hashCode(); + if (getKpiIdsCount() > 0) { + hash = (37 * hash) + KPI_IDS_FIELD_NUMBER; + hash = (53 * hash) + getKpiIdsList().hashCode(); } hash = (37 * hash) + MONITORING_WINDOW_S_FIELD_NUMBER; hash = (53 * hash) + java.lang.Float.floatToIntBits( getMonitoringWindowS()); - hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER; - hash = (53 * hash) + java.lang.Float.floatToIntBits( - getSamplingRateS()); hash = (37 * hash) + LAST_N_SAMPLES_FIELD_NUMBER; hash = (53 * hash) + getLastNSamples(); if (hasStartTimestamp()) { @@ -3512,22 +3680,20 @@ public final class Monitoring { private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3 .alwaysUseFieldBuilders) { - getKpiIdFieldBuilder(); + getKpiIdsFieldBuilder(); } } @java.lang.Override public Builder clear() { super.clear(); - if (kpiIdBuilder_ == null) { - kpiId_ = java.util.Collections.emptyList(); + if (kpiIdsBuilder_ == null) { + kpiIds_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); } else { - kpiIdBuilder_.clear(); + kpiIdsBuilder_.clear(); } monitoringWindowS_ = 0F; - samplingRateS_ = 0F; - lastNSamples_ = 0; if (startTimestampBuilder_ == null) { @@ -3569,17 +3735,16 @@ public final class Monitoring { public monitoring.Monitoring.KpiQuery buildPartial() { monitoring.Monitoring.KpiQuery result = new monitoring.Monitoring.KpiQuery(this); int from_bitField0_ = bitField0_; - if (kpiIdBuilder_ == null) { + if (kpiIdsBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { - kpiId_ = java.util.Collections.unmodifiableList(kpiId_); + kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_); bitField0_ = (bitField0_ & ~0x00000001); } - result.kpiId_ = kpiId_; + result.kpiIds_ = kpiIds_; } else { - result.kpiId_ = kpiIdBuilder_.build(); + result.kpiIds_ = kpiIdsBuilder_.build(); } result.monitoringWindowS_ = monitoringWindowS_; - result.samplingRateS_ = samplingRateS_; result.lastNSamples_ = lastNSamples_; if (startTimestampBuilder_ == null) { result.startTimestamp_ = startTimestamp_; @@ -3639,38 +3804,35 @@ public final class Monitoring { public Builder mergeFrom(monitoring.Monitoring.KpiQuery other) { if (other == monitoring.Monitoring.KpiQuery.getDefaultInstance()) return this; - if (kpiIdBuilder_ == null) { - if (!other.kpiId_.isEmpty()) { - if (kpiId_.isEmpty()) { - kpiId_ = other.kpiId_; + if (kpiIdsBuilder_ == null) { + if (!other.kpiIds_.isEmpty()) { + if (kpiIds_.isEmpty()) { + kpiIds_ = other.kpiIds_; bitField0_ = (bitField0_ & ~0x00000001); } else { - ensureKpiIdIsMutable(); - kpiId_.addAll(other.kpiId_); + ensureKpiIdsIsMutable(); + kpiIds_.addAll(other.kpiIds_); } onChanged(); } } else { - if (!other.kpiId_.isEmpty()) { - if (kpiIdBuilder_.isEmpty()) { - kpiIdBuilder_.dispose(); - kpiIdBuilder_ = null; - kpiId_ = other.kpiId_; + if (!other.kpiIds_.isEmpty()) { + if (kpiIdsBuilder_.isEmpty()) { + kpiIdsBuilder_.dispose(); + kpiIdsBuilder_ = null; + kpiIds_ = other.kpiIds_; bitField0_ = (bitField0_ & ~0x00000001); - kpiIdBuilder_ = + kpiIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getKpiIdFieldBuilder() : null; + getKpiIdsFieldBuilder() : null; } else { - kpiIdBuilder_.addAllMessages(other.kpiId_); + kpiIdsBuilder_.addAllMessages(other.kpiIds_); } } } if (other.getMonitoringWindowS() != 0F) { setMonitoringWindowS(other.getMonitoringWindowS()); } - if (other.getSamplingRateS() != 0F) { - setSamplingRateS(other.getSamplingRateS()); - } if (other.getLastNSamples() != 0) { setLastNSamples(other.getLastNSamples()); } @@ -3710,244 +3872,244 @@ public final class Monitoring { } private int bitField0_; - private java.util.List kpiId_ = + private java.util.List kpiIds_ = java.util.Collections.emptyList(); - private void ensureKpiIdIsMutable() { + private void ensureKpiIdsIsMutable() { if (!((bitField0_ & 0x00000001) != 0)) { - kpiId_ = new java.util.ArrayList(kpiId_); + kpiIds_ = new java.util.ArrayList(kpiIds_); bitField0_ |= 0x00000001; } } private com.google.protobuf.RepeatedFieldBuilderV3< - monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_; + monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdsBuilder_; /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public java.util.List getKpiIdList() { - if (kpiIdBuilder_ == null) { - return java.util.Collections.unmodifiableList(kpiId_); + public java.util.List getKpiIdsList() { + if (kpiIdsBuilder_ == null) { + return java.util.Collections.unmodifiableList(kpiIds_); } else { - return kpiIdBuilder_.getMessageList(); + return kpiIdsBuilder_.getMessageList(); } } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public int getKpiIdCount() { - if (kpiIdBuilder_ == null) { - return kpiId_.size(); + public int getKpiIdsCount() { + if (kpiIdsBuilder_ == null) { + return kpiIds_.size(); } else { - return kpiIdBuilder_.getCount(); + return kpiIdsBuilder_.getCount(); } } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public monitoring.Monitoring.KpiId getKpiId(int index) { - if (kpiIdBuilder_ == null) { - return kpiId_.get(index); + public monitoring.Monitoring.KpiId getKpiIds(int index) { + if (kpiIdsBuilder_ == null) { + return kpiIds_.get(index); } else { - return kpiIdBuilder_.getMessage(index); + return kpiIdsBuilder_.getMessage(index); } } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public Builder setKpiId( + public Builder setKpiIds( int index, monitoring.Monitoring.KpiId value) { - if (kpiIdBuilder_ == null) { + if (kpiIdsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureKpiIdIsMutable(); - kpiId_.set(index, value); + ensureKpiIdsIsMutable(); + kpiIds_.set(index, value); onChanged(); } else { - kpiIdBuilder_.setMessage(index, value); + kpiIdsBuilder_.setMessage(index, value); } return this; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public Builder setKpiId( + public Builder setKpiIds( int index, monitoring.Monitoring.KpiId.Builder builderForValue) { - if (kpiIdBuilder_ == null) { - ensureKpiIdIsMutable(); - kpiId_.set(index, builderForValue.build()); + if (kpiIdsBuilder_ == null) { + ensureKpiIdsIsMutable(); + kpiIds_.set(index, builderForValue.build()); onChanged(); } else { - kpiIdBuilder_.setMessage(index, builderForValue.build()); + kpiIdsBuilder_.setMessage(index, builderForValue.build()); } return this; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public Builder addKpiId(monitoring.Monitoring.KpiId value) { - if (kpiIdBuilder_ == null) { + public Builder addKpiIds(monitoring.Monitoring.KpiId value) { + if (kpiIdsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureKpiIdIsMutable(); - kpiId_.add(value); + ensureKpiIdsIsMutable(); + kpiIds_.add(value); onChanged(); } else { - kpiIdBuilder_.addMessage(value); + kpiIdsBuilder_.addMessage(value); } return this; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public Builder addKpiId( + public Builder addKpiIds( int index, monitoring.Monitoring.KpiId value) { - if (kpiIdBuilder_ == null) { + if (kpiIdsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureKpiIdIsMutable(); - kpiId_.add(index, value); + ensureKpiIdsIsMutable(); + kpiIds_.add(index, value); onChanged(); } else { - kpiIdBuilder_.addMessage(index, value); + kpiIdsBuilder_.addMessage(index, value); } return this; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public Builder addKpiId( + public Builder addKpiIds( monitoring.Monitoring.KpiId.Builder builderForValue) { - if (kpiIdBuilder_ == null) { - ensureKpiIdIsMutable(); - kpiId_.add(builderForValue.build()); + if (kpiIdsBuilder_ == null) { + ensureKpiIdsIsMutable(); + kpiIds_.add(builderForValue.build()); onChanged(); } else { - kpiIdBuilder_.addMessage(builderForValue.build()); + kpiIdsBuilder_.addMessage(builderForValue.build()); } return this; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public Builder addKpiId( + public Builder addKpiIds( int index, monitoring.Monitoring.KpiId.Builder builderForValue) { - if (kpiIdBuilder_ == null) { - ensureKpiIdIsMutable(); - kpiId_.add(index, builderForValue.build()); + if (kpiIdsBuilder_ == null) { + ensureKpiIdsIsMutable(); + kpiIds_.add(index, builderForValue.build()); onChanged(); } else { - kpiIdBuilder_.addMessage(index, builderForValue.build()); + kpiIdsBuilder_.addMessage(index, builderForValue.build()); } return this; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public Builder addAllKpiId( + public Builder addAllKpiIds( java.lang.Iterable values) { - if (kpiIdBuilder_ == null) { - ensureKpiIdIsMutable(); + if (kpiIdsBuilder_ == null) { + ensureKpiIdsIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, kpiId_); + values, kpiIds_); onChanged(); } else { - kpiIdBuilder_.addAllMessages(values); + kpiIdsBuilder_.addAllMessages(values); } return this; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public Builder clearKpiId() { - if (kpiIdBuilder_ == null) { - kpiId_ = java.util.Collections.emptyList(); + public Builder clearKpiIds() { + if (kpiIdsBuilder_ == null) { + kpiIds_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); onChanged(); } else { - kpiIdBuilder_.clear(); + kpiIdsBuilder_.clear(); } return this; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public Builder removeKpiId(int index) { - if (kpiIdBuilder_ == null) { - ensureKpiIdIsMutable(); - kpiId_.remove(index); + public Builder removeKpiIds(int index) { + if (kpiIdsBuilder_ == null) { + ensureKpiIdsIsMutable(); + kpiIds_.remove(index); onChanged(); } else { - kpiIdBuilder_.remove(index); + kpiIdsBuilder_.remove(index); } return this; } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder( + public monitoring.Monitoring.KpiId.Builder getKpiIdsBuilder( int index) { - return getKpiIdFieldBuilder().getBuilder(index); + return getKpiIdsFieldBuilder().getBuilder(index); } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder( + public monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder( int index) { - if (kpiIdBuilder_ == null) { - return kpiId_.get(index); } else { - return kpiIdBuilder_.getMessageOrBuilder(index); + if (kpiIdsBuilder_ == null) { + return kpiIds_.get(index); } else { + return kpiIdsBuilder_.getMessageOrBuilder(index); } } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ public java.util.List - getKpiIdOrBuilderList() { - if (kpiIdBuilder_ != null) { - return kpiIdBuilder_.getMessageOrBuilderList(); + getKpiIdsOrBuilderList() { + if (kpiIdsBuilder_ != null) { + return kpiIdsBuilder_.getMessageOrBuilderList(); } else { - return java.util.Collections.unmodifiableList(kpiId_); + return java.util.Collections.unmodifiableList(kpiIds_); } } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public monitoring.Monitoring.KpiId.Builder addKpiIdBuilder() { - return getKpiIdFieldBuilder().addBuilder( + public monitoring.Monitoring.KpiId.Builder addKpiIdsBuilder() { + return getKpiIdsFieldBuilder().addBuilder( monitoring.Monitoring.KpiId.getDefaultInstance()); } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ - public monitoring.Monitoring.KpiId.Builder addKpiIdBuilder( + public monitoring.Monitoring.KpiId.Builder addKpiIdsBuilder( int index) { - return getKpiIdFieldBuilder().addBuilder( + return getKpiIdsFieldBuilder().addBuilder( index, monitoring.Monitoring.KpiId.getDefaultInstance()); } /** - * repeated .monitoring.KpiId kpi_id = 1; + * repeated .monitoring.KpiId kpi_ids = 1; */ public java.util.List - getKpiIdBuilderList() { - return getKpiIdFieldBuilder().getBuilderList(); + getKpiIdsBuilderList() { + return getKpiIdsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> - getKpiIdFieldBuilder() { - if (kpiIdBuilder_ == null) { - kpiIdBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + getKpiIdsFieldBuilder() { + if (kpiIdsBuilder_ == null) { + kpiIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>( - kpiId_, + kpiIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); - kpiId_ = null; + kpiIds_ = null; } - return kpiIdBuilder_; + return kpiIdsBuilder_; } private float monitoringWindowS_ ; @@ -3981,44 +4143,13 @@ public final class Monitoring { return this; } - private float samplingRateS_ ; - /** - * float sampling_rate_s = 3; - * @return The samplingRateS. - */ - @java.lang.Override - public float getSamplingRateS() { - return samplingRateS_; - } - /** - * float sampling_rate_s = 3; - * @param value The samplingRateS to set. - * @return This builder for chaining. - */ - public Builder setSamplingRateS(float value) { - - samplingRateS_ = value; - onChanged(); - return this; - } - /** - * float sampling_rate_s = 3; - * @return This builder for chaining. - */ - public Builder clearSamplingRateS() { - - samplingRateS_ = 0F; - onChanged(); - return this; - } - private int lastNSamples_ ; /** *
        * used when you want something like "get the last N many samples
        * 
* - * uint32 last_n_samples = 4; + * uint32 last_n_samples = 3; * @return The lastNSamples. */ @java.lang.Override @@ -4030,7 +4161,7 @@ public final class Monitoring { * used when you want something like "get the last N many samples * * - * uint32 last_n_samples = 4; + * uint32 last_n_samples = 3; * @param value The lastNSamples to set. * @return This builder for chaining. */ @@ -4045,7 +4176,7 @@ public final class Monitoring { * used when you want something like "get the last N many samples * * - * uint32 last_n_samples = 4; + * uint32 last_n_samples = 3; * @return This builder for chaining. */ public Builder clearLastNSamples() { @@ -4063,7 +4194,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; * @return Whether the startTimestamp field is set. */ public boolean hasStartTimestamp() { @@ -4074,7 +4205,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; * @return The startTimestamp. */ public context.ContextOuterClass.Timestamp getStartTimestamp() { @@ -4089,7 +4220,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; */ public Builder setStartTimestamp(context.ContextOuterClass.Timestamp value) { if (startTimestampBuilder_ == null) { @@ -4109,7 +4240,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; */ public Builder setStartTimestamp( context.ContextOuterClass.Timestamp.Builder builderForValue) { @@ -4127,7 +4258,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; */ public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) { if (startTimestampBuilder_ == null) { @@ -4149,7 +4280,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; */ public Builder clearStartTimestamp() { if (startTimestampBuilder_ == null) { @@ -4167,7 +4298,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; */ public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() { @@ -4179,7 +4310,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; */ public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() { if (startTimestampBuilder_ != null) { @@ -4194,7 +4325,7 @@ public final class Monitoring { * used when you want something like "get the samples since X date/time" * * - * .context.Timestamp start_timestamp = 5; + * .context.Timestamp start_timestamp = 4; */ private com.google.protobuf.SingleFieldBuilderV3< context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> @@ -4218,7 +4349,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; * @return Whether the endTimestamp field is set. */ public boolean hasEndTimestamp() { @@ -4229,7 +4360,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; * @return The endTimestamp. */ public context.ContextOuterClass.Timestamp getEndTimestamp() { @@ -4244,7 +4375,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; */ public Builder setEndTimestamp(context.ContextOuterClass.Timestamp value) { if (endTimestampBuilder_ == null) { @@ -4264,7 +4395,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; */ public Builder setEndTimestamp( context.ContextOuterClass.Timestamp.Builder builderForValue) { @@ -4282,7 +4413,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; */ public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) { if (endTimestampBuilder_ == null) { @@ -4304,7 +4435,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; */ public Builder clearEndTimestamp() { if (endTimestampBuilder_ == null) { @@ -4322,7 +4453,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; */ public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() { @@ -4334,7 +4465,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; */ public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() { if (endTimestampBuilder_ != null) { @@ -4349,7 +4480,7 @@ public final class Monitoring { * used when you want something like "get the samples until X date/time" * * - * .context.Timestamp end_timestamp = 6; + * .context.Timestamp end_timestamp = 5; */ private com.google.protobuf.SingleFieldBuilderV3< context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> @@ -4417,22 +4548,2659 @@ public final class Monitoring { } - public interface KpiIdOrBuilder extends - // @@protoc_insertion_point(interface_extends:monitoring.KpiId) + public interface RawKpiOrBuilder extends + // @@protoc_insertion_point(interface_extends:monitoring.RawKpi) com.google.protobuf.MessageOrBuilder { /** - * .context.Uuid kpi_id = 1; - * @return Whether the kpiId field is set. + * .context.Timestamp timestamp = 1; + * @return Whether the timestamp field is set. */ - boolean hasKpiId(); + boolean hasTimestamp(); /** - * .context.Uuid kpi_id = 1; - * @return The kpiId. + * .context.Timestamp timestamp = 1; + * @return The timestamp. */ - context.ContextOuterClass.Uuid getKpiId(); + context.ContextOuterClass.Timestamp getTimestamp(); /** - * .context.Uuid kpi_id = 1; + * .context.Timestamp timestamp = 1; + */ + context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder(); + + /** + * .monitoring.KpiValue kpi_value = 2; + * @return Whether the kpiValue field is set. + */ + boolean hasKpiValue(); + /** + * .monitoring.KpiValue kpi_value = 2; + * @return The kpiValue. + */ + monitoring.Monitoring.KpiValue getKpiValue(); + /** + * .monitoring.KpiValue kpi_value = 2; + */ + monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder(); + } + /** + *
+   * cell
+   * 
+ * + * Protobuf type {@code monitoring.RawKpi} + */ + public static final class RawKpi extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:monitoring.RawKpi) + RawKpiOrBuilder { + private static final long serialVersionUID = 0L; + // Use RawKpi.newBuilder() to construct. + private RawKpi(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private RawKpi() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new RawKpi(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private RawKpi( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + context.ContextOuterClass.Timestamp.Builder subBuilder = null; + if (timestamp_ != null) { + subBuilder = timestamp_.toBuilder(); + } + timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(timestamp_); + timestamp_ = subBuilder.buildPartial(); + } + + break; + } + case 18: { + monitoring.Monitoring.KpiValue.Builder subBuilder = null; + if (kpiValue_ != null) { + subBuilder = kpiValue_.toBuilder(); + } + kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(kpiValue_); + kpiValue_ = subBuilder.buildPartial(); + } + + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return monitoring.Monitoring.internal_static_monitoring_RawKpi_fieldAccessorTable + .ensureFieldAccessorsInitialized( + monitoring.Monitoring.RawKpi.class, monitoring.Monitoring.RawKpi.Builder.class); + } + + public static final int TIMESTAMP_FIELD_NUMBER = 1; + private context.ContextOuterClass.Timestamp timestamp_; + /** + * .context.Timestamp timestamp = 1; + * @return Whether the timestamp field is set. + */ + @java.lang.Override + public boolean hasTimestamp() { + return timestamp_ != null; + } + /** + * .context.Timestamp timestamp = 1; + * @return The timestamp. + */ + @java.lang.Override + public context.ContextOuterClass.Timestamp getTimestamp() { + return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_; + } + /** + * .context.Timestamp timestamp = 1; + */ + @java.lang.Override + public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() { + return getTimestamp(); + } + + public static final int KPI_VALUE_FIELD_NUMBER = 2; + private monitoring.Monitoring.KpiValue kpiValue_; + /** + * .monitoring.KpiValue kpi_value = 2; + * @return Whether the kpiValue field is set. + */ + @java.lang.Override + public boolean hasKpiValue() { + return kpiValue_ != null; + } + /** + * .monitoring.KpiValue kpi_value = 2; + * @return The kpiValue. + */ + @java.lang.Override + public monitoring.Monitoring.KpiValue getKpiValue() { + return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_; + } + /** + * .monitoring.KpiValue kpi_value = 2; + */ + @java.lang.Override + public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() { + return getKpiValue(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (timestamp_ != null) { + output.writeMessage(1, getTimestamp()); + } + if (kpiValue_ != null) { + output.writeMessage(2, getKpiValue()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (timestamp_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getTimestamp()); + } + if (kpiValue_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getKpiValue()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof monitoring.Monitoring.RawKpi)) { + return super.equals(obj); + } + monitoring.Monitoring.RawKpi other = (monitoring.Monitoring.RawKpi) obj; + + if (hasTimestamp() != other.hasTimestamp()) return false; + if (hasTimestamp()) { + if (!getTimestamp() + .equals(other.getTimestamp())) return false; + } + if (hasKpiValue() != other.hasKpiValue()) return false; + if (hasKpiValue()) { + if (!getKpiValue() + .equals(other.getKpiValue())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasTimestamp()) { + hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + getTimestamp().hashCode(); + } + if (hasKpiValue()) { + hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getKpiValue().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static monitoring.Monitoring.RawKpi parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static monitoring.Monitoring.RawKpi parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static monitoring.Monitoring.RawKpi parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static monitoring.Monitoring.RawKpi parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static monitoring.Monitoring.RawKpi parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static monitoring.Monitoring.RawKpi parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static monitoring.Monitoring.RawKpi parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static monitoring.Monitoring.RawKpi parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static monitoring.Monitoring.RawKpi parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static monitoring.Monitoring.RawKpi parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static monitoring.Monitoring.RawKpi parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static monitoring.Monitoring.RawKpi parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(monitoring.Monitoring.RawKpi prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * cell
+     * 
+ * + * Protobuf type {@code monitoring.RawKpi} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:monitoring.RawKpi) + monitoring.Monitoring.RawKpiOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return monitoring.Monitoring.internal_static_monitoring_RawKpi_fieldAccessorTable + .ensureFieldAccessorsInitialized( + monitoring.Monitoring.RawKpi.class, monitoring.Monitoring.RawKpi.Builder.class); + } + + // Construct using monitoring.Monitoring.RawKpi.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (timestampBuilder_ == null) { + timestamp_ = null; + } else { + timestamp_ = null; + timestampBuilder_ = null; + } + if (kpiValueBuilder_ == null) { + kpiValue_ = null; + } else { + kpiValue_ = null; + kpiValueBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor; + } + + @java.lang.Override + public monitoring.Monitoring.RawKpi getDefaultInstanceForType() { + return monitoring.Monitoring.RawKpi.getDefaultInstance(); + } + + @java.lang.Override + public monitoring.Monitoring.RawKpi build() { + monitoring.Monitoring.RawKpi result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public monitoring.Monitoring.RawKpi buildPartial() { + monitoring.Monitoring.RawKpi result = new monitoring.Monitoring.RawKpi(this); + if (timestampBuilder_ == null) { + result.timestamp_ = timestamp_; + } else { + result.timestamp_ = timestampBuilder_.build(); + } + if (kpiValueBuilder_ == null) { + result.kpiValue_ = kpiValue_; + } else { + result.kpiValue_ = kpiValueBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof monitoring.Monitoring.RawKpi) { + return mergeFrom((monitoring.Monitoring.RawKpi)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(monitoring.Monitoring.RawKpi other) { + if (other == monitoring.Monitoring.RawKpi.getDefaultInstance()) return this; + if (other.hasTimestamp()) { + mergeTimestamp(other.getTimestamp()); + } + if (other.hasKpiValue()) { + mergeKpiValue(other.getKpiValue()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + monitoring.Monitoring.RawKpi parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (monitoring.Monitoring.RawKpi) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private context.ContextOuterClass.Timestamp timestamp_; + private com.google.protobuf.SingleFieldBuilderV3< + context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_; + /** + * .context.Timestamp timestamp = 1; + * @return Whether the timestamp field is set. + */ + public boolean hasTimestamp() { + return timestampBuilder_ != null || timestamp_ != null; + } + /** + * .context.Timestamp timestamp = 1; + * @return The timestamp. + */ + public context.ContextOuterClass.Timestamp getTimestamp() { + if (timestampBuilder_ == null) { + return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_; + } else { + return timestampBuilder_.getMessage(); + } + } + /** + * .context.Timestamp timestamp = 1; + */ + public Builder setTimestamp(context.ContextOuterClass.Timestamp value) { + if (timestampBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + timestamp_ = value; + onChanged(); + } else { + timestampBuilder_.setMessage(value); + } + + return this; + } + /** + * .context.Timestamp timestamp = 1; + */ + public Builder setTimestamp( + context.ContextOuterClass.Timestamp.Builder builderForValue) { + if (timestampBuilder_ == null) { + timestamp_ = builderForValue.build(); + onChanged(); + } else { + timestampBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .context.Timestamp timestamp = 1; + */ + public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) { + if (timestampBuilder_ == null) { + if (timestamp_ != null) { + timestamp_ = + context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial(); + } else { + timestamp_ = value; + } + onChanged(); + } else { + timestampBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .context.Timestamp timestamp = 1; + */ + public Builder clearTimestamp() { + if (timestampBuilder_ == null) { + timestamp_ = null; + onChanged(); + } else { + timestamp_ = null; + timestampBuilder_ = null; + } + + return this; + } + /** + * .context.Timestamp timestamp = 1; + */ + public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() { + + onChanged(); + return getTimestampFieldBuilder().getBuilder(); + } + /** + * .context.Timestamp timestamp = 1; + */ + public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() { + if (timestampBuilder_ != null) { + return timestampBuilder_.getMessageOrBuilder(); + } else { + return timestamp_ == null ? + context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_; + } + } + /** + * .context.Timestamp timestamp = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> + getTimestampFieldBuilder() { + if (timestampBuilder_ == null) { + timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>( + getTimestamp(), + getParentForChildren(), + isClean()); + timestamp_ = null; + } + return timestampBuilder_; + } + + private monitoring.Monitoring.KpiValue kpiValue_; + private com.google.protobuf.SingleFieldBuilderV3< + monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiValueBuilder_; + /** + * .monitoring.KpiValue kpi_value = 2; + * @return Whether the kpiValue field is set. + */ + public boolean hasKpiValue() { + return kpiValueBuilder_ != null || kpiValue_ != null; + } + /** + * .monitoring.KpiValue kpi_value = 2; + * @return The kpiValue. + */ + public monitoring.Monitoring.KpiValue getKpiValue() { + if (kpiValueBuilder_ == null) { + return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_; + } else { + return kpiValueBuilder_.getMessage(); + } + } + /** + * .monitoring.KpiValue kpi_value = 2; + */ + public Builder setKpiValue(monitoring.Monitoring.KpiValue value) { + if (kpiValueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kpiValue_ = value; + onChanged(); + } else { + kpiValueBuilder_.setMessage(value); + } + + return this; + } + /** + * .monitoring.KpiValue kpi_value = 2; + */ + public Builder setKpiValue( + monitoring.Monitoring.KpiValue.Builder builderForValue) { + if (kpiValueBuilder_ == null) { + kpiValue_ = builderForValue.build(); + onChanged(); + } else { + kpiValueBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .monitoring.KpiValue kpi_value = 2; + */ + public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) { + if (kpiValueBuilder_ == null) { + if (kpiValue_ != null) { + kpiValue_ = + monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial(); + } else { + kpiValue_ = value; + } + onChanged(); + } else { + kpiValueBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .monitoring.KpiValue kpi_value = 2; + */ + public Builder clearKpiValue() { + if (kpiValueBuilder_ == null) { + kpiValue_ = null; + onChanged(); + } else { + kpiValue_ = null; + kpiValueBuilder_ = null; + } + + return this; + } + /** + * .monitoring.KpiValue kpi_value = 2; + */ + public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() { + + onChanged(); + return getKpiValueFieldBuilder().getBuilder(); + } + /** + * .monitoring.KpiValue kpi_value = 2; + */ + public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() { + if (kpiValueBuilder_ != null) { + return kpiValueBuilder_.getMessageOrBuilder(); + } else { + return kpiValue_ == null ? + monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_; + } + } + /** + * .monitoring.KpiValue kpi_value = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> + getKpiValueFieldBuilder() { + if (kpiValueBuilder_ == null) { + kpiValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>( + getKpiValue(), + getParentForChildren(), + isClean()); + kpiValue_ = null; + } + return kpiValueBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:monitoring.RawKpi) + } + + // @@protoc_insertion_point(class_scope:monitoring.RawKpi) + private static final monitoring.Monitoring.RawKpi DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpi(); + } + + public static monitoring.Monitoring.RawKpi getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public RawKpi parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new RawKpi(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public monitoring.Monitoring.RawKpi getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface RawKpiListOrBuilder extends + // @@protoc_insertion_point(interface_extends:monitoring.RawKpiList) + com.google.protobuf.MessageOrBuilder { + + /** + * .monitoring.KpiId kpi_id = 1; + * @return Whether the kpiId field is set. + */ + boolean hasKpiId(); + /** + * .monitoring.KpiId kpi_id = 1; + * @return The kpiId. + */ + monitoring.Monitoring.KpiId getKpiId(); + /** + * .monitoring.KpiId kpi_id = 1; + */ + monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(); + + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + java.util.List + getRawKpisList(); + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + monitoring.Monitoring.RawKpi getRawKpis(int index); + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + int getRawKpisCount(); + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + java.util.List + getRawKpisOrBuilderList(); + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder( + int index); + } + /** + *
+   * column
+   * 
+ * + * Protobuf type {@code monitoring.RawKpiList} + */ + public static final class RawKpiList extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:monitoring.RawKpiList) + RawKpiListOrBuilder { + private static final long serialVersionUID = 0L; + // Use RawKpiList.newBuilder() to construct. + private RawKpiList(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private RawKpiList() { + rawKpis_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new RawKpiList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private RawKpiList( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + monitoring.Monitoring.KpiId.Builder subBuilder = null; + if (kpiId_ != null) { + subBuilder = kpiId_.toBuilder(); + } + kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(kpiId_); + kpiId_ = subBuilder.buildPartial(); + } + + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + rawKpis_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + rawKpis_.add( + input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry)); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return monitoring.Monitoring.internal_static_monitoring_RawKpiList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + monitoring.Monitoring.RawKpiList.class, monitoring.Monitoring.RawKpiList.Builder.class); + } + + public static final int KPI_ID_FIELD_NUMBER = 1; + private monitoring.Monitoring.KpiId kpiId_; + /** + * .monitoring.KpiId kpi_id = 1; + * @return Whether the kpiId field is set. + */ + @java.lang.Override + public boolean hasKpiId() { + return kpiId_ != null; + } + /** + * .monitoring.KpiId kpi_id = 1; + * @return The kpiId. + */ + @java.lang.Override + public monitoring.Monitoring.KpiId getKpiId() { + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; + } + /** + * .monitoring.KpiId kpi_id = 1; + */ + @java.lang.Override + public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { + return getKpiId(); + } + + public static final int RAW_KPIS_FIELD_NUMBER = 2; + private java.util.List rawKpis_; + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + @java.lang.Override + public java.util.List getRawKpisList() { + return rawKpis_; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + @java.lang.Override + public java.util.List + getRawKpisOrBuilderList() { + return rawKpis_; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + @java.lang.Override + public int getRawKpisCount() { + return rawKpis_.size(); + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + @java.lang.Override + public monitoring.Monitoring.RawKpi getRawKpis(int index) { + return rawKpis_.get(index); + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + @java.lang.Override + public monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder( + int index) { + return rawKpis_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (kpiId_ != null) { + output.writeMessage(1, getKpiId()); + } + for (int i = 0; i < rawKpis_.size(); i++) { + output.writeMessage(2, rawKpis_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (kpiId_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getKpiId()); + } + for (int i = 0; i < rawKpis_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, rawKpis_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof monitoring.Monitoring.RawKpiList)) { + return super.equals(obj); + } + monitoring.Monitoring.RawKpiList other = (monitoring.Monitoring.RawKpiList) obj; + + if (hasKpiId() != other.hasKpiId()) return false; + if (hasKpiId()) { + if (!getKpiId() + .equals(other.getKpiId())) return false; + } + if (!getRawKpisList() + .equals(other.getRawKpisList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasKpiId()) { + hash = (37 * hash) + KPI_ID_FIELD_NUMBER; + hash = (53 * hash) + getKpiId().hashCode(); + } + if (getRawKpisCount() > 0) { + hash = (37 * hash) + RAW_KPIS_FIELD_NUMBER; + hash = (53 * hash) + getRawKpisList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static monitoring.Monitoring.RawKpiList parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static monitoring.Monitoring.RawKpiList parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static monitoring.Monitoring.RawKpiList parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static monitoring.Monitoring.RawKpiList parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static monitoring.Monitoring.RawKpiList parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static monitoring.Monitoring.RawKpiList parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static monitoring.Monitoring.RawKpiList parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static monitoring.Monitoring.RawKpiList parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static monitoring.Monitoring.RawKpiList parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static monitoring.Monitoring.RawKpiList parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static monitoring.Monitoring.RawKpiList parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static monitoring.Monitoring.RawKpiList parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(monitoring.Monitoring.RawKpiList prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * column
+     * 
+ * + * Protobuf type {@code monitoring.RawKpiList} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:monitoring.RawKpiList) + monitoring.Monitoring.RawKpiListOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return monitoring.Monitoring.internal_static_monitoring_RawKpiList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + monitoring.Monitoring.RawKpiList.class, monitoring.Monitoring.RawKpiList.Builder.class); + } + + // Construct using monitoring.Monitoring.RawKpiList.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getRawKpisFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (kpiIdBuilder_ == null) { + kpiId_ = null; + } else { + kpiId_ = null; + kpiIdBuilder_ = null; + } + if (rawKpisBuilder_ == null) { + rawKpis_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + rawKpisBuilder_.clear(); + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor; + } + + @java.lang.Override + public monitoring.Monitoring.RawKpiList getDefaultInstanceForType() { + return monitoring.Monitoring.RawKpiList.getDefaultInstance(); + } + + @java.lang.Override + public monitoring.Monitoring.RawKpiList build() { + monitoring.Monitoring.RawKpiList result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public monitoring.Monitoring.RawKpiList buildPartial() { + monitoring.Monitoring.RawKpiList result = new monitoring.Monitoring.RawKpiList(this); + int from_bitField0_ = bitField0_; + if (kpiIdBuilder_ == null) { + result.kpiId_ = kpiId_; + } else { + result.kpiId_ = kpiIdBuilder_.build(); + } + if (rawKpisBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.rawKpis_ = rawKpis_; + } else { + result.rawKpis_ = rawKpisBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof monitoring.Monitoring.RawKpiList) { + return mergeFrom((monitoring.Monitoring.RawKpiList)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(monitoring.Monitoring.RawKpiList other) { + if (other == monitoring.Monitoring.RawKpiList.getDefaultInstance()) return this; + if (other.hasKpiId()) { + mergeKpiId(other.getKpiId()); + } + if (rawKpisBuilder_ == null) { + if (!other.rawKpis_.isEmpty()) { + if (rawKpis_.isEmpty()) { + rawKpis_ = other.rawKpis_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureRawKpisIsMutable(); + rawKpis_.addAll(other.rawKpis_); + } + onChanged(); + } + } else { + if (!other.rawKpis_.isEmpty()) { + if (rawKpisBuilder_.isEmpty()) { + rawKpisBuilder_.dispose(); + rawKpisBuilder_ = null; + rawKpis_ = other.rawKpis_; + bitField0_ = (bitField0_ & ~0x00000001); + rawKpisBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getRawKpisFieldBuilder() : null; + } else { + rawKpisBuilder_.addAllMessages(other.rawKpis_); + } + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + monitoring.Monitoring.RawKpiList parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (monitoring.Monitoring.RawKpiList) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private monitoring.Monitoring.KpiId kpiId_; + private com.google.protobuf.SingleFieldBuilderV3< + monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_; + /** + * .monitoring.KpiId kpi_id = 1; + * @return Whether the kpiId field is set. + */ + public boolean hasKpiId() { + return kpiIdBuilder_ != null || kpiId_ != null; + } + /** + * .monitoring.KpiId kpi_id = 1; + * @return The kpiId. + */ + public monitoring.Monitoring.KpiId getKpiId() { + if (kpiIdBuilder_ == null) { + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; + } else { + return kpiIdBuilder_.getMessage(); + } + } + /** + * .monitoring.KpiId kpi_id = 1; + */ + public Builder setKpiId(monitoring.Monitoring.KpiId value) { + if (kpiIdBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kpiId_ = value; + onChanged(); + } else { + kpiIdBuilder_.setMessage(value); + } + + return this; + } + /** + * .monitoring.KpiId kpi_id = 1; + */ + public Builder setKpiId( + monitoring.Monitoring.KpiId.Builder builderForValue) { + if (kpiIdBuilder_ == null) { + kpiId_ = builderForValue.build(); + onChanged(); + } else { + kpiIdBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .monitoring.KpiId kpi_id = 1; + */ + public Builder mergeKpiId(monitoring.Monitoring.KpiId value) { + if (kpiIdBuilder_ == null) { + if (kpiId_ != null) { + kpiId_ = + monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial(); + } else { + kpiId_ = value; + } + onChanged(); + } else { + kpiIdBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .monitoring.KpiId kpi_id = 1; + */ + public Builder clearKpiId() { + if (kpiIdBuilder_ == null) { + kpiId_ = null; + onChanged(); + } else { + kpiId_ = null; + kpiIdBuilder_ = null; + } + + return this; + } + /** + * .monitoring.KpiId kpi_id = 1; + */ + public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() { + + onChanged(); + return getKpiIdFieldBuilder().getBuilder(); + } + /** + * .monitoring.KpiId kpi_id = 1; + */ + public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { + if (kpiIdBuilder_ != null) { + return kpiIdBuilder_.getMessageOrBuilder(); + } else { + return kpiId_ == null ? + monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; + } + } + /** + * .monitoring.KpiId kpi_id = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> + getKpiIdFieldBuilder() { + if (kpiIdBuilder_ == null) { + kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>( + getKpiId(), + getParentForChildren(), + isClean()); + kpiId_ = null; + } + return kpiIdBuilder_; + } + + private java.util.List rawKpis_ = + java.util.Collections.emptyList(); + private void ensureRawKpisIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + rawKpis_ = new java.util.ArrayList(rawKpis_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder> rawKpisBuilder_; + + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public java.util.List getRawKpisList() { + if (rawKpisBuilder_ == null) { + return java.util.Collections.unmodifiableList(rawKpis_); + } else { + return rawKpisBuilder_.getMessageList(); + } + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public int getRawKpisCount() { + if (rawKpisBuilder_ == null) { + return rawKpis_.size(); + } else { + return rawKpisBuilder_.getCount(); + } + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public monitoring.Monitoring.RawKpi getRawKpis(int index) { + if (rawKpisBuilder_ == null) { + return rawKpis_.get(index); + } else { + return rawKpisBuilder_.getMessage(index); + } + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public Builder setRawKpis( + int index, monitoring.Monitoring.RawKpi value) { + if (rawKpisBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRawKpisIsMutable(); + rawKpis_.set(index, value); + onChanged(); + } else { + rawKpisBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public Builder setRawKpis( + int index, monitoring.Monitoring.RawKpi.Builder builderForValue) { + if (rawKpisBuilder_ == null) { + ensureRawKpisIsMutable(); + rawKpis_.set(index, builderForValue.build()); + onChanged(); + } else { + rawKpisBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public Builder addRawKpis(monitoring.Monitoring.RawKpi value) { + if (rawKpisBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRawKpisIsMutable(); + rawKpis_.add(value); + onChanged(); + } else { + rawKpisBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public Builder addRawKpis( + int index, monitoring.Monitoring.RawKpi value) { + if (rawKpisBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRawKpisIsMutable(); + rawKpis_.add(index, value); + onChanged(); + } else { + rawKpisBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public Builder addRawKpis( + monitoring.Monitoring.RawKpi.Builder builderForValue) { + if (rawKpisBuilder_ == null) { + ensureRawKpisIsMutable(); + rawKpis_.add(builderForValue.build()); + onChanged(); + } else { + rawKpisBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public Builder addRawKpis( + int index, monitoring.Monitoring.RawKpi.Builder builderForValue) { + if (rawKpisBuilder_ == null) { + ensureRawKpisIsMutable(); + rawKpis_.add(index, builderForValue.build()); + onChanged(); + } else { + rawKpisBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public Builder addAllRawKpis( + java.lang.Iterable values) { + if (rawKpisBuilder_ == null) { + ensureRawKpisIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, rawKpis_); + onChanged(); + } else { + rawKpisBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public Builder clearRawKpis() { + if (rawKpisBuilder_ == null) { + rawKpis_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + rawKpisBuilder_.clear(); + } + return this; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public Builder removeRawKpis(int index) { + if (rawKpisBuilder_ == null) { + ensureRawKpisIsMutable(); + rawKpis_.remove(index); + onChanged(); + } else { + rawKpisBuilder_.remove(index); + } + return this; + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public monitoring.Monitoring.RawKpi.Builder getRawKpisBuilder( + int index) { + return getRawKpisFieldBuilder().getBuilder(index); + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder( + int index) { + if (rawKpisBuilder_ == null) { + return rawKpis_.get(index); } else { + return rawKpisBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public java.util.List + getRawKpisOrBuilderList() { + if (rawKpisBuilder_ != null) { + return rawKpisBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(rawKpis_); + } + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public monitoring.Monitoring.RawKpi.Builder addRawKpisBuilder() { + return getRawKpisFieldBuilder().addBuilder( + monitoring.Monitoring.RawKpi.getDefaultInstance()); + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public monitoring.Monitoring.RawKpi.Builder addRawKpisBuilder( + int index) { + return getRawKpisFieldBuilder().addBuilder( + index, monitoring.Monitoring.RawKpi.getDefaultInstance()); + } + /** + * repeated .monitoring.RawKpi raw_kpis = 2; + */ + public java.util.List + getRawKpisBuilderList() { + return getRawKpisFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder> + getRawKpisFieldBuilder() { + if (rawKpisBuilder_ == null) { + rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder>( + rawKpis_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + rawKpis_ = null; + } + return rawKpisBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:monitoring.RawKpiList) + } + + // @@protoc_insertion_point(class_scope:monitoring.RawKpiList) + private static final monitoring.Monitoring.RawKpiList DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpiList(); + } + + public static monitoring.Monitoring.RawKpiList getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public RawKpiList parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new RawKpiList(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public monitoring.Monitoring.RawKpiList getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface RawKpiTableOrBuilder extends + // @@protoc_insertion_point(interface_extends:monitoring.RawKpiTable) + com.google.protobuf.MessageOrBuilder { + + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + java.util.List + getRawKpiListsList(); + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + monitoring.Monitoring.RawKpiList getRawKpiLists(int index); + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + int getRawKpiListsCount(); + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + java.util.List + getRawKpiListsOrBuilderList(); + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder( + int index); + } + /** + *
+   * table
+   * 
+ * + * Protobuf type {@code monitoring.RawKpiTable} + */ + public static final class RawKpiTable extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:monitoring.RawKpiTable) + RawKpiTableOrBuilder { + private static final long serialVersionUID = 0L; + // Use RawKpiTable.newBuilder() to construct. + private RawKpiTable(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private RawKpiTable() { + rawKpiLists_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new RawKpiTable(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private RawKpiTable( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + rawKpiLists_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + rawKpiLists_.add( + input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry)); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_fieldAccessorTable + .ensureFieldAccessorsInitialized( + monitoring.Monitoring.RawKpiTable.class, monitoring.Monitoring.RawKpiTable.Builder.class); + } + + public static final int RAW_KPI_LISTS_FIELD_NUMBER = 1; + private java.util.List rawKpiLists_; + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + @java.lang.Override + public java.util.List getRawKpiListsList() { + return rawKpiLists_; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + @java.lang.Override + public java.util.List + getRawKpiListsOrBuilderList() { + return rawKpiLists_; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + @java.lang.Override + public int getRawKpiListsCount() { + return rawKpiLists_.size(); + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + @java.lang.Override + public monitoring.Monitoring.RawKpiList getRawKpiLists(int index) { + return rawKpiLists_.get(index); + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + @java.lang.Override + public monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder( + int index) { + return rawKpiLists_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < rawKpiLists_.size(); i++) { + output.writeMessage(1, rawKpiLists_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < rawKpiLists_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, rawKpiLists_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof monitoring.Monitoring.RawKpiTable)) { + return super.equals(obj); + } + monitoring.Monitoring.RawKpiTable other = (monitoring.Monitoring.RawKpiTable) obj; + + if (!getRawKpiListsList() + .equals(other.getRawKpiListsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getRawKpiListsCount() > 0) { + hash = (37 * hash) + RAW_KPI_LISTS_FIELD_NUMBER; + hash = (53 * hash) + getRawKpiListsList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static monitoring.Monitoring.RawKpiTable parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static monitoring.Monitoring.RawKpiTable parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static monitoring.Monitoring.RawKpiTable parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static monitoring.Monitoring.RawKpiTable parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static monitoring.Monitoring.RawKpiTable parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static monitoring.Monitoring.RawKpiTable parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static monitoring.Monitoring.RawKpiTable parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static monitoring.Monitoring.RawKpiTable parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static monitoring.Monitoring.RawKpiTable parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static monitoring.Monitoring.RawKpiTable parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static monitoring.Monitoring.RawKpiTable parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static monitoring.Monitoring.RawKpiTable parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(monitoring.Monitoring.RawKpiTable prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * table
+     * 
+ * + * Protobuf type {@code monitoring.RawKpiTable} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:monitoring.RawKpiTable) + monitoring.Monitoring.RawKpiTableOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_fieldAccessorTable + .ensureFieldAccessorsInitialized( + monitoring.Monitoring.RawKpiTable.class, monitoring.Monitoring.RawKpiTable.Builder.class); + } + + // Construct using monitoring.Monitoring.RawKpiTable.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getRawKpiListsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (rawKpiListsBuilder_ == null) { + rawKpiLists_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + rawKpiListsBuilder_.clear(); + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor; + } + + @java.lang.Override + public monitoring.Monitoring.RawKpiTable getDefaultInstanceForType() { + return monitoring.Monitoring.RawKpiTable.getDefaultInstance(); + } + + @java.lang.Override + public monitoring.Monitoring.RawKpiTable build() { + monitoring.Monitoring.RawKpiTable result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public monitoring.Monitoring.RawKpiTable buildPartial() { + monitoring.Monitoring.RawKpiTable result = new monitoring.Monitoring.RawKpiTable(this); + int from_bitField0_ = bitField0_; + if (rawKpiListsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.rawKpiLists_ = rawKpiLists_; + } else { + result.rawKpiLists_ = rawKpiListsBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof monitoring.Monitoring.RawKpiTable) { + return mergeFrom((monitoring.Monitoring.RawKpiTable)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(monitoring.Monitoring.RawKpiTable other) { + if (other == monitoring.Monitoring.RawKpiTable.getDefaultInstance()) return this; + if (rawKpiListsBuilder_ == null) { + if (!other.rawKpiLists_.isEmpty()) { + if (rawKpiLists_.isEmpty()) { + rawKpiLists_ = other.rawKpiLists_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureRawKpiListsIsMutable(); + rawKpiLists_.addAll(other.rawKpiLists_); + } + onChanged(); + } + } else { + if (!other.rawKpiLists_.isEmpty()) { + if (rawKpiListsBuilder_.isEmpty()) { + rawKpiListsBuilder_.dispose(); + rawKpiListsBuilder_ = null; + rawKpiLists_ = other.rawKpiLists_; + bitField0_ = (bitField0_ & ~0x00000001); + rawKpiListsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getRawKpiListsFieldBuilder() : null; + } else { + rawKpiListsBuilder_.addAllMessages(other.rawKpiLists_); + } + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + monitoring.Monitoring.RawKpiTable parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (monitoring.Monitoring.RawKpiTable) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.util.List rawKpiLists_ = + java.util.Collections.emptyList(); + private void ensureRawKpiListsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + rawKpiLists_ = new java.util.ArrayList(rawKpiLists_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder> rawKpiListsBuilder_; + + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public java.util.List getRawKpiListsList() { + if (rawKpiListsBuilder_ == null) { + return java.util.Collections.unmodifiableList(rawKpiLists_); + } else { + return rawKpiListsBuilder_.getMessageList(); + } + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public int getRawKpiListsCount() { + if (rawKpiListsBuilder_ == null) { + return rawKpiLists_.size(); + } else { + return rawKpiListsBuilder_.getCount(); + } + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public monitoring.Monitoring.RawKpiList getRawKpiLists(int index) { + if (rawKpiListsBuilder_ == null) { + return rawKpiLists_.get(index); + } else { + return rawKpiListsBuilder_.getMessage(index); + } + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public Builder setRawKpiLists( + int index, monitoring.Monitoring.RawKpiList value) { + if (rawKpiListsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRawKpiListsIsMutable(); + rawKpiLists_.set(index, value); + onChanged(); + } else { + rawKpiListsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public Builder setRawKpiLists( + int index, monitoring.Monitoring.RawKpiList.Builder builderForValue) { + if (rawKpiListsBuilder_ == null) { + ensureRawKpiListsIsMutable(); + rawKpiLists_.set(index, builderForValue.build()); + onChanged(); + } else { + rawKpiListsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public Builder addRawKpiLists(monitoring.Monitoring.RawKpiList value) { + if (rawKpiListsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRawKpiListsIsMutable(); + rawKpiLists_.add(value); + onChanged(); + } else { + rawKpiListsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public Builder addRawKpiLists( + int index, monitoring.Monitoring.RawKpiList value) { + if (rawKpiListsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRawKpiListsIsMutable(); + rawKpiLists_.add(index, value); + onChanged(); + } else { + rawKpiListsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public Builder addRawKpiLists( + monitoring.Monitoring.RawKpiList.Builder builderForValue) { + if (rawKpiListsBuilder_ == null) { + ensureRawKpiListsIsMutable(); + rawKpiLists_.add(builderForValue.build()); + onChanged(); + } else { + rawKpiListsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public Builder addRawKpiLists( + int index, monitoring.Monitoring.RawKpiList.Builder builderForValue) { + if (rawKpiListsBuilder_ == null) { + ensureRawKpiListsIsMutable(); + rawKpiLists_.add(index, builderForValue.build()); + onChanged(); + } else { + rawKpiListsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public Builder addAllRawKpiLists( + java.lang.Iterable values) { + if (rawKpiListsBuilder_ == null) { + ensureRawKpiListsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, rawKpiLists_); + onChanged(); + } else { + rawKpiListsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public Builder clearRawKpiLists() { + if (rawKpiListsBuilder_ == null) { + rawKpiLists_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + rawKpiListsBuilder_.clear(); + } + return this; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public Builder removeRawKpiLists(int index) { + if (rawKpiListsBuilder_ == null) { + ensureRawKpiListsIsMutable(); + rawKpiLists_.remove(index); + onChanged(); + } else { + rawKpiListsBuilder_.remove(index); + } + return this; + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public monitoring.Monitoring.RawKpiList.Builder getRawKpiListsBuilder( + int index) { + return getRawKpiListsFieldBuilder().getBuilder(index); + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder( + int index) { + if (rawKpiListsBuilder_ == null) { + return rawKpiLists_.get(index); } else { + return rawKpiListsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public java.util.List + getRawKpiListsOrBuilderList() { + if (rawKpiListsBuilder_ != null) { + return rawKpiListsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(rawKpiLists_); + } + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public monitoring.Monitoring.RawKpiList.Builder addRawKpiListsBuilder() { + return getRawKpiListsFieldBuilder().addBuilder( + monitoring.Monitoring.RawKpiList.getDefaultInstance()); + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public monitoring.Monitoring.RawKpiList.Builder addRawKpiListsBuilder( + int index) { + return getRawKpiListsFieldBuilder().addBuilder( + index, monitoring.Monitoring.RawKpiList.getDefaultInstance()); + } + /** + * repeated .monitoring.RawKpiList raw_kpi_lists = 1; + */ + public java.util.List + getRawKpiListsBuilderList() { + return getRawKpiListsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder> + getRawKpiListsFieldBuilder() { + if (rawKpiListsBuilder_ == null) { + rawKpiListsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder>( + rawKpiLists_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + rawKpiLists_ = null; + } + return rawKpiListsBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:monitoring.RawKpiTable) + } + + // @@protoc_insertion_point(class_scope:monitoring.RawKpiTable) + private static final monitoring.Monitoring.RawKpiTable DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpiTable(); + } + + public static monitoring.Monitoring.RawKpiTable getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public RawKpiTable parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new RawKpiTable(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public monitoring.Monitoring.RawKpiTable getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface KpiIdOrBuilder extends + // @@protoc_insertion_point(interface_extends:monitoring.KpiId) + com.google.protobuf.MessageOrBuilder { + + /** + * .context.Uuid kpi_id = 1; + * @return Whether the kpiId field is set. + */ + boolean hasKpiId(); + /** + * .context.Uuid kpi_id = 1; + * @return The kpiId. + */ + context.ContextOuterClass.Uuid getKpiId(); + /** + * .context.Uuid kpi_id = 1; */ context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder(); } @@ -8482,27 +11250,27 @@ public final class Monitoring { com.google.protobuf.MessageOrBuilder { /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ java.util.List - getKpiListList(); + getKpiList(); /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - monitoring.Monitoring.Kpi getKpiList(int index); + monitoring.Monitoring.Kpi getKpi(int index); /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - int getKpiListCount(); + int getKpiCount(); /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ java.util.List - getKpiListOrBuilderList(); + getKpiOrBuilderList(); /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - monitoring.Monitoring.KpiOrBuilder getKpiListOrBuilder( + monitoring.Monitoring.KpiOrBuilder getKpiOrBuilder( int index); } /** @@ -8518,7 +11286,7 @@ public final class Monitoring { super(builder); } private KpiList() { - kpiList_ = java.util.Collections.emptyList(); + kpi_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -8554,10 +11322,10 @@ public final class Monitoring { break; case 10: { if (!((mutable_bitField0_ & 0x00000001) != 0)) { - kpiList_ = new java.util.ArrayList(); + kpi_ = new java.util.ArrayList(); mutable_bitField0_ |= 0x00000001; } - kpiList_.add( + kpi_.add( input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry)); break; } @@ -8577,7 +11345,7 @@ public final class Monitoring { e).setUnfinishedMessage(this); } finally { if (((mutable_bitField0_ & 0x00000001) != 0)) { - kpiList_ = java.util.Collections.unmodifiableList(kpiList_); + kpi_ = java.util.Collections.unmodifiableList(kpi_); } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); @@ -8596,44 +11364,44 @@ public final class Monitoring { monitoring.Monitoring.KpiList.class, monitoring.Monitoring.KpiList.Builder.class); } - public static final int KPI_LIST_FIELD_NUMBER = 1; - private java.util.List kpiList_; + public static final int KPI_FIELD_NUMBER = 1; + private java.util.List kpi_; /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ @java.lang.Override - public java.util.List getKpiListList() { - return kpiList_; + public java.util.List getKpiList() { + return kpi_; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ @java.lang.Override public java.util.List - getKpiListOrBuilderList() { - return kpiList_; + getKpiOrBuilderList() { + return kpi_; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ @java.lang.Override - public int getKpiListCount() { - return kpiList_.size(); + public int getKpiCount() { + return kpi_.size(); } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ @java.lang.Override - public monitoring.Monitoring.Kpi getKpiList(int index) { - return kpiList_.get(index); + public monitoring.Monitoring.Kpi getKpi(int index) { + return kpi_.get(index); } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ @java.lang.Override - public monitoring.Monitoring.KpiOrBuilder getKpiListOrBuilder( + public monitoring.Monitoring.KpiOrBuilder getKpiOrBuilder( int index) { - return kpiList_.get(index); + return kpi_.get(index); } private byte memoizedIsInitialized = -1; @@ -8650,8 +11418,8 @@ public final class Monitoring { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - for (int i = 0; i < kpiList_.size(); i++) { - output.writeMessage(1, kpiList_.get(i)); + for (int i = 0; i < kpi_.size(); i++) { + output.writeMessage(1, kpi_.get(i)); } unknownFields.writeTo(output); } @@ -8662,9 +11430,9 @@ public final class Monitoring { if (size != -1) return size; size = 0; - for (int i = 0; i < kpiList_.size(); i++) { + for (int i = 0; i < kpi_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, kpiList_.get(i)); + .computeMessageSize(1, kpi_.get(i)); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -8681,8 +11449,8 @@ public final class Monitoring { } monitoring.Monitoring.KpiList other = (monitoring.Monitoring.KpiList) obj; - if (!getKpiListList() - .equals(other.getKpiListList())) return false; + if (!getKpiList() + .equals(other.getKpiList())) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -8694,9 +11462,9 @@ public final class Monitoring { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (getKpiListCount() > 0) { - hash = (37 * hash) + KPI_LIST_FIELD_NUMBER; - hash = (53 * hash) + getKpiListList().hashCode(); + if (getKpiCount() > 0) { + hash = (37 * hash) + KPI_FIELD_NUMBER; + hash = (53 * hash) + getKpiList().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; @@ -8826,17 +11594,17 @@ public final class Monitoring { private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3 .alwaysUseFieldBuilders) { - getKpiListFieldBuilder(); + getKpiFieldBuilder(); } } @java.lang.Override public Builder clear() { super.clear(); - if (kpiListBuilder_ == null) { - kpiList_ = java.util.Collections.emptyList(); + if (kpiBuilder_ == null) { + kpi_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); } else { - kpiListBuilder_.clear(); + kpiBuilder_.clear(); } return this; } @@ -8865,14 +11633,14 @@ public final class Monitoring { public monitoring.Monitoring.KpiList buildPartial() { monitoring.Monitoring.KpiList result = new monitoring.Monitoring.KpiList(this); int from_bitField0_ = bitField0_; - if (kpiListBuilder_ == null) { + if (kpiBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { - kpiList_ = java.util.Collections.unmodifiableList(kpiList_); + kpi_ = java.util.Collections.unmodifiableList(kpi_); bitField0_ = (bitField0_ & ~0x00000001); } - result.kpiList_ = kpiList_; + result.kpi_ = kpi_; } else { - result.kpiList_ = kpiListBuilder_.build(); + result.kpi_ = kpiBuilder_.build(); } onBuilt(); return result; @@ -8922,29 +11690,29 @@ public final class Monitoring { public Builder mergeFrom(monitoring.Monitoring.KpiList other) { if (other == monitoring.Monitoring.KpiList.getDefaultInstance()) return this; - if (kpiListBuilder_ == null) { - if (!other.kpiList_.isEmpty()) { - if (kpiList_.isEmpty()) { - kpiList_ = other.kpiList_; + if (kpiBuilder_ == null) { + if (!other.kpi_.isEmpty()) { + if (kpi_.isEmpty()) { + kpi_ = other.kpi_; bitField0_ = (bitField0_ & ~0x00000001); } else { - ensureKpiListIsMutable(); - kpiList_.addAll(other.kpiList_); + ensureKpiIsMutable(); + kpi_.addAll(other.kpi_); } onChanged(); } } else { - if (!other.kpiList_.isEmpty()) { - if (kpiListBuilder_.isEmpty()) { - kpiListBuilder_.dispose(); - kpiListBuilder_ = null; - kpiList_ = other.kpiList_; + if (!other.kpi_.isEmpty()) { + if (kpiBuilder_.isEmpty()) { + kpiBuilder_.dispose(); + kpiBuilder_ = null; + kpi_ = other.kpi_; bitField0_ = (bitField0_ & ~0x00000001); - kpiListBuilder_ = + kpiBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getKpiListFieldBuilder() : null; + getKpiFieldBuilder() : null; } else { - kpiListBuilder_.addAllMessages(other.kpiList_); + kpiBuilder_.addAllMessages(other.kpi_); } } } @@ -8978,244 +11746,244 @@ public final class Monitoring { } private int bitField0_; - private java.util.List kpiList_ = + private java.util.List kpi_ = java.util.Collections.emptyList(); - private void ensureKpiListIsMutable() { + private void ensureKpiIsMutable() { if (!((bitField0_ & 0x00000001) != 0)) { - kpiList_ = new java.util.ArrayList(kpiList_); + kpi_ = new java.util.ArrayList(kpi_); bitField0_ |= 0x00000001; } } private com.google.protobuf.RepeatedFieldBuilderV3< - monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> kpiListBuilder_; + monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> kpiBuilder_; /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public java.util.List getKpiListList() { - if (kpiListBuilder_ == null) { - return java.util.Collections.unmodifiableList(kpiList_); + public java.util.List getKpiList() { + if (kpiBuilder_ == null) { + return java.util.Collections.unmodifiableList(kpi_); } else { - return kpiListBuilder_.getMessageList(); + return kpiBuilder_.getMessageList(); } } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public int getKpiListCount() { - if (kpiListBuilder_ == null) { - return kpiList_.size(); + public int getKpiCount() { + if (kpiBuilder_ == null) { + return kpi_.size(); } else { - return kpiListBuilder_.getCount(); + return kpiBuilder_.getCount(); } } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public monitoring.Monitoring.Kpi getKpiList(int index) { - if (kpiListBuilder_ == null) { - return kpiList_.get(index); + public monitoring.Monitoring.Kpi getKpi(int index) { + if (kpiBuilder_ == null) { + return kpi_.get(index); } else { - return kpiListBuilder_.getMessage(index); + return kpiBuilder_.getMessage(index); } } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public Builder setKpiList( + public Builder setKpi( int index, monitoring.Monitoring.Kpi value) { - if (kpiListBuilder_ == null) { + if (kpiBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureKpiListIsMutable(); - kpiList_.set(index, value); + ensureKpiIsMutable(); + kpi_.set(index, value); onChanged(); } else { - kpiListBuilder_.setMessage(index, value); + kpiBuilder_.setMessage(index, value); } return this; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public Builder setKpiList( + public Builder setKpi( int index, monitoring.Monitoring.Kpi.Builder builderForValue) { - if (kpiListBuilder_ == null) { - ensureKpiListIsMutable(); - kpiList_.set(index, builderForValue.build()); + if (kpiBuilder_ == null) { + ensureKpiIsMutable(); + kpi_.set(index, builderForValue.build()); onChanged(); } else { - kpiListBuilder_.setMessage(index, builderForValue.build()); + kpiBuilder_.setMessage(index, builderForValue.build()); } return this; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public Builder addKpiList(monitoring.Monitoring.Kpi value) { - if (kpiListBuilder_ == null) { + public Builder addKpi(monitoring.Monitoring.Kpi value) { + if (kpiBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureKpiListIsMutable(); - kpiList_.add(value); + ensureKpiIsMutable(); + kpi_.add(value); onChanged(); } else { - kpiListBuilder_.addMessage(value); + kpiBuilder_.addMessage(value); } return this; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public Builder addKpiList( + public Builder addKpi( int index, monitoring.Monitoring.Kpi value) { - if (kpiListBuilder_ == null) { + if (kpiBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureKpiListIsMutable(); - kpiList_.add(index, value); + ensureKpiIsMutable(); + kpi_.add(index, value); onChanged(); } else { - kpiListBuilder_.addMessage(index, value); + kpiBuilder_.addMessage(index, value); } return this; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public Builder addKpiList( + public Builder addKpi( monitoring.Monitoring.Kpi.Builder builderForValue) { - if (kpiListBuilder_ == null) { - ensureKpiListIsMutable(); - kpiList_.add(builderForValue.build()); + if (kpiBuilder_ == null) { + ensureKpiIsMutable(); + kpi_.add(builderForValue.build()); onChanged(); } else { - kpiListBuilder_.addMessage(builderForValue.build()); + kpiBuilder_.addMessage(builderForValue.build()); } return this; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public Builder addKpiList( + public Builder addKpi( int index, monitoring.Monitoring.Kpi.Builder builderForValue) { - if (kpiListBuilder_ == null) { - ensureKpiListIsMutable(); - kpiList_.add(index, builderForValue.build()); + if (kpiBuilder_ == null) { + ensureKpiIsMutable(); + kpi_.add(index, builderForValue.build()); onChanged(); } else { - kpiListBuilder_.addMessage(index, builderForValue.build()); + kpiBuilder_.addMessage(index, builderForValue.build()); } return this; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public Builder addAllKpiList( + public Builder addAllKpi( java.lang.Iterable values) { - if (kpiListBuilder_ == null) { - ensureKpiListIsMutable(); + if (kpiBuilder_ == null) { + ensureKpiIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, kpiList_); + values, kpi_); onChanged(); } else { - kpiListBuilder_.addAllMessages(values); + kpiBuilder_.addAllMessages(values); } return this; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public Builder clearKpiList() { - if (kpiListBuilder_ == null) { - kpiList_ = java.util.Collections.emptyList(); + public Builder clearKpi() { + if (kpiBuilder_ == null) { + kpi_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); onChanged(); } else { - kpiListBuilder_.clear(); + kpiBuilder_.clear(); } return this; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public Builder removeKpiList(int index) { - if (kpiListBuilder_ == null) { - ensureKpiListIsMutable(); - kpiList_.remove(index); + public Builder removeKpi(int index) { + if (kpiBuilder_ == null) { + ensureKpiIsMutable(); + kpi_.remove(index); onChanged(); } else { - kpiListBuilder_.remove(index); + kpiBuilder_.remove(index); } return this; } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public monitoring.Monitoring.Kpi.Builder getKpiListBuilder( + public monitoring.Monitoring.Kpi.Builder getKpiBuilder( int index) { - return getKpiListFieldBuilder().getBuilder(index); + return getKpiFieldBuilder().getBuilder(index); } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public monitoring.Monitoring.KpiOrBuilder getKpiListOrBuilder( + public monitoring.Monitoring.KpiOrBuilder getKpiOrBuilder( int index) { - if (kpiListBuilder_ == null) { - return kpiList_.get(index); } else { - return kpiListBuilder_.getMessageOrBuilder(index); + if (kpiBuilder_ == null) { + return kpi_.get(index); } else { + return kpiBuilder_.getMessageOrBuilder(index); } } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ public java.util.List - getKpiListOrBuilderList() { - if (kpiListBuilder_ != null) { - return kpiListBuilder_.getMessageOrBuilderList(); + getKpiOrBuilderList() { + if (kpiBuilder_ != null) { + return kpiBuilder_.getMessageOrBuilderList(); } else { - return java.util.Collections.unmodifiableList(kpiList_); + return java.util.Collections.unmodifiableList(kpi_); } } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public monitoring.Monitoring.Kpi.Builder addKpiListBuilder() { - return getKpiListFieldBuilder().addBuilder( + public monitoring.Monitoring.Kpi.Builder addKpiBuilder() { + return getKpiFieldBuilder().addBuilder( monitoring.Monitoring.Kpi.getDefaultInstance()); } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ - public monitoring.Monitoring.Kpi.Builder addKpiListBuilder( + public monitoring.Monitoring.Kpi.Builder addKpiBuilder( int index) { - return getKpiListFieldBuilder().addBuilder( + return getKpiFieldBuilder().addBuilder( index, monitoring.Monitoring.Kpi.getDefaultInstance()); } /** - * repeated .monitoring.Kpi kpi_list = 1; + * repeated .monitoring.Kpi kpi = 1; */ public java.util.List - getKpiListBuilderList() { - return getKpiListFieldBuilder().getBuilderList(); + getKpiBuilderList() { + return getKpiFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> - getKpiListFieldBuilder() { - if (kpiListBuilder_ == null) { - kpiListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + getKpiFieldBuilder() { + if (kpiBuilder_ == null) { + kpiBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder>( - kpiList_, + kpi_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); - kpiList_ = null; + kpi_ = null; } - return kpiListBuilder_; + return kpiBuilder_; } @java.lang.Override public final Builder setUnknownFields( @@ -12198,28 +14966,19 @@ public final class Monitoring { monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder(); /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - java.util.List - getKpiListList(); - /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - monitoring.Monitoring.KpiList getKpiList(int index); - /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; + * @return Whether the kpiList field is set. */ - int getKpiListCount(); + boolean hasKpiList(); /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; + * @return The kpiList. */ - java.util.List - getKpiListOrBuilderList(); + monitoring.Monitoring.KpiList getKpiList(); /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; */ - monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder( - int index); + monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder(); } /** * Protobuf type {@code monitoring.SubsResponse} @@ -12234,7 +14993,6 @@ public final class Monitoring { super(builder); } private SubsResponse() { - kpiList_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -12257,7 +15015,6 @@ public final class Monitoring { if (extensionRegistry == null) { throw new java.lang.NullPointerException(); } - int mutable_bitField0_ = 0; com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); try { @@ -12282,12 +15039,16 @@ public final class Monitoring { break; } case 18: { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - kpiList_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; + monitoring.Monitoring.KpiList.Builder subBuilder = null; + if (kpiList_ != null) { + subBuilder = kpiList_.toBuilder(); + } + kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(kpiList_); + kpiList_ = subBuilder.buildPartial(); } - kpiList_.add( - input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry)); + break; } default: { @@ -12305,9 +15066,6 @@ public final class Monitoring { throw new com.google.protobuf.InvalidProtocolBufferException( e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - kpiList_ = java.util.Collections.unmodifiableList(kpiList_); - } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } @@ -12352,43 +15110,29 @@ public final class Monitoring { } public static final int KPI_LIST_FIELD_NUMBER = 2; - private java.util.List kpiList_; - /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - @java.lang.Override - public java.util.List getKpiListList() { - return kpiList_; - } - /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - @java.lang.Override - public java.util.List - getKpiListOrBuilderList() { - return kpiList_; - } + private monitoring.Monitoring.KpiList kpiList_; /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; + * @return Whether the kpiList field is set. */ @java.lang.Override - public int getKpiListCount() { - return kpiList_.size(); + public boolean hasKpiList() { + return kpiList_ != null; } /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; + * @return The kpiList. */ @java.lang.Override - public monitoring.Monitoring.KpiList getKpiList(int index) { - return kpiList_.get(index); + public monitoring.Monitoring.KpiList getKpiList() { + return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_; } /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; */ @java.lang.Override - public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder( - int index) { - return kpiList_.get(index); + public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() { + return getKpiList(); } private byte memoizedIsInitialized = -1; @@ -12408,8 +15152,8 @@ public final class Monitoring { if (subsId_ != null) { output.writeMessage(1, getSubsId()); } - for (int i = 0; i < kpiList_.size(); i++) { - output.writeMessage(2, kpiList_.get(i)); + if (kpiList_ != null) { + output.writeMessage(2, getKpiList()); } unknownFields.writeTo(output); } @@ -12424,9 +15168,9 @@ public final class Monitoring { size += com.google.protobuf.CodedOutputStream .computeMessageSize(1, getSubsId()); } - for (int i = 0; i < kpiList_.size(); i++) { + if (kpiList_ != null) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, kpiList_.get(i)); + .computeMessageSize(2, getKpiList()); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -12448,8 +15192,11 @@ public final class Monitoring { if (!getSubsId() .equals(other.getSubsId())) return false; } - if (!getKpiListList() - .equals(other.getKpiListList())) return false; + if (hasKpiList() != other.hasKpiList()) return false; + if (hasKpiList()) { + if (!getKpiList() + .equals(other.getKpiList())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -12465,9 +15212,9 @@ public final class Monitoring { hash = (37 * hash) + SUBS_ID_FIELD_NUMBER; hash = (53 * hash) + getSubsId().hashCode(); } - if (getKpiListCount() > 0) { + if (hasKpiList()) { hash = (37 * hash) + KPI_LIST_FIELD_NUMBER; - hash = (53 * hash) + getKpiListList().hashCode(); + hash = (53 * hash) + getKpiList().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; @@ -12597,7 +15344,6 @@ public final class Monitoring { private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3 .alwaysUseFieldBuilders) { - getKpiListFieldBuilder(); } } @java.lang.Override @@ -12610,10 +15356,10 @@ public final class Monitoring { subsIdBuilder_ = null; } if (kpiListBuilder_ == null) { - kpiList_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + kpiList_ = null; } else { - kpiListBuilder_.clear(); + kpiList_ = null; + kpiListBuilder_ = null; } return this; } @@ -12641,17 +15387,12 @@ public final class Monitoring { @java.lang.Override public monitoring.Monitoring.SubsResponse buildPartial() { monitoring.Monitoring.SubsResponse result = new monitoring.Monitoring.SubsResponse(this); - int from_bitField0_ = bitField0_; if (subsIdBuilder_ == null) { result.subsId_ = subsId_; } else { result.subsId_ = subsIdBuilder_.build(); } if (kpiListBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { - kpiList_ = java.util.Collections.unmodifiableList(kpiList_); - bitField0_ = (bitField0_ & ~0x00000001); - } result.kpiList_ = kpiList_; } else { result.kpiList_ = kpiListBuilder_.build(); @@ -12707,31 +15448,8 @@ public final class Monitoring { if (other.hasSubsId()) { mergeSubsId(other.getSubsId()); } - if (kpiListBuilder_ == null) { - if (!other.kpiList_.isEmpty()) { - if (kpiList_.isEmpty()) { - kpiList_ = other.kpiList_; - bitField0_ = (bitField0_ & ~0x00000001); - } else { - ensureKpiListIsMutable(); - kpiList_.addAll(other.kpiList_); - } - onChanged(); - } - } else { - if (!other.kpiList_.isEmpty()) { - if (kpiListBuilder_.isEmpty()) { - kpiListBuilder_.dispose(); - kpiListBuilder_ = null; - kpiList_ = other.kpiList_; - bitField0_ = (bitField0_ & ~0x00000001); - kpiListBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getKpiListFieldBuilder() : null; - } else { - kpiListBuilder_.addAllMessages(other.kpiList_); - } - } + if (other.hasKpiList()) { + mergeKpiList(other.getKpiList()); } this.mergeUnknownFields(other.unknownFields); onChanged(); @@ -12761,7 +15479,6 @@ public final class Monitoring { } return this; } - private int bitField0_; private monitoring.Monitoring.SubscriptionID subsId_; private com.google.protobuf.SingleFieldBuilderV3< @@ -12882,239 +15599,118 @@ public final class Monitoring { return subsIdBuilder_; } - private java.util.List kpiList_ = - java.util.Collections.emptyList(); - private void ensureKpiListIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { - kpiList_ = new java.util.ArrayList(kpiList_); - bitField0_ |= 0x00000001; - } - } - - private com.google.protobuf.RepeatedFieldBuilderV3< + private monitoring.Monitoring.KpiList kpiList_; + private com.google.protobuf.SingleFieldBuilderV3< monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> kpiListBuilder_; - - /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - public java.util.List getKpiListList() { - if (kpiListBuilder_ == null) { - return java.util.Collections.unmodifiableList(kpiList_); - } else { - return kpiListBuilder_.getMessageList(); - } - } /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; + * @return Whether the kpiList field is set. */ - public int getKpiListCount() { - if (kpiListBuilder_ == null) { - return kpiList_.size(); - } else { - return kpiListBuilder_.getCount(); - } + public boolean hasKpiList() { + return kpiListBuilder_ != null || kpiList_ != null; } /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; + * @return The kpiList. */ - public monitoring.Monitoring.KpiList getKpiList(int index) { + public monitoring.Monitoring.KpiList getKpiList() { if (kpiListBuilder_ == null) { - return kpiList_.get(index); + return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_; } else { - return kpiListBuilder_.getMessage(index); + return kpiListBuilder_.getMessage(); } } /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; */ - public Builder setKpiList( - int index, monitoring.Monitoring.KpiList value) { + public Builder setKpiList(monitoring.Monitoring.KpiList value) { if (kpiListBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureKpiListIsMutable(); - kpiList_.set(index, value); + kpiList_ = value; onChanged(); } else { - kpiListBuilder_.setMessage(index, value); + kpiListBuilder_.setMessage(value); } + return this; } /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; */ public Builder setKpiList( - int index, monitoring.Monitoring.KpiList.Builder builderForValue) { - if (kpiListBuilder_ == null) { - ensureKpiListIsMutable(); - kpiList_.set(index, builderForValue.build()); - onChanged(); - } else { - kpiListBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - public Builder addKpiList(monitoring.Monitoring.KpiList value) { - if (kpiListBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureKpiListIsMutable(); - kpiList_.add(value); - onChanged(); - } else { - kpiListBuilder_.addMessage(value); - } - return this; - } - /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - public Builder addKpiList( - int index, monitoring.Monitoring.KpiList value) { - if (kpiListBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureKpiListIsMutable(); - kpiList_.add(index, value); - onChanged(); - } else { - kpiListBuilder_.addMessage(index, value); - } - return this; - } - /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - public Builder addKpiList( monitoring.Monitoring.KpiList.Builder builderForValue) { if (kpiListBuilder_ == null) { - ensureKpiListIsMutable(); - kpiList_.add(builderForValue.build()); - onChanged(); - } else { - kpiListBuilder_.addMessage(builderForValue.build()); - } - return this; - } - /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - public Builder addKpiList( - int index, monitoring.Monitoring.KpiList.Builder builderForValue) { - if (kpiListBuilder_ == null) { - ensureKpiListIsMutable(); - kpiList_.add(index, builderForValue.build()); + kpiList_ = builderForValue.build(); onChanged(); } else { - kpiListBuilder_.addMessage(index, builderForValue.build()); + kpiListBuilder_.setMessage(builderForValue.build()); } + return this; } /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; */ - public Builder addAllKpiList( - java.lang.Iterable values) { + public Builder mergeKpiList(monitoring.Monitoring.KpiList value) { if (kpiListBuilder_ == null) { - ensureKpiListIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, kpiList_); + if (kpiList_ != null) { + kpiList_ = + monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial(); + } else { + kpiList_ = value; + } onChanged(); } else { - kpiListBuilder_.addAllMessages(values); + kpiListBuilder_.mergeFrom(value); } + return this; } /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; */ public Builder clearKpiList() { if (kpiListBuilder_ == null) { - kpiList_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - onChanged(); - } else { - kpiListBuilder_.clear(); - } - return this; - } - /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - public Builder removeKpiList(int index) { - if (kpiListBuilder_ == null) { - ensureKpiListIsMutable(); - kpiList_.remove(index); + kpiList_ = null; onChanged(); } else { - kpiListBuilder_.remove(index); + kpiList_ = null; + kpiListBuilder_ = null; } + return this; } /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - public monitoring.Monitoring.KpiList.Builder getKpiListBuilder( - int index) { - return getKpiListFieldBuilder().getBuilder(index); - } - /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; */ - public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder( - int index) { - if (kpiListBuilder_ == null) { - return kpiList_.get(index); } else { - return kpiListBuilder_.getMessageOrBuilder(index); - } + public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() { + + onChanged(); + return getKpiListFieldBuilder().getBuilder(); } /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; */ - public java.util.List - getKpiListOrBuilderList() { + public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() { if (kpiListBuilder_ != null) { - return kpiListBuilder_.getMessageOrBuilderList(); + return kpiListBuilder_.getMessageOrBuilder(); } else { - return java.util.Collections.unmodifiableList(kpiList_); + return kpiList_ == null ? + monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_; } } /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - public monitoring.Monitoring.KpiList.Builder addKpiListBuilder() { - return getKpiListFieldBuilder().addBuilder( - monitoring.Monitoring.KpiList.getDefaultInstance()); - } - /** - * repeated .monitoring.KpiList kpi_list = 2; - */ - public monitoring.Monitoring.KpiList.Builder addKpiListBuilder( - int index) { - return getKpiListFieldBuilder().addBuilder( - index, monitoring.Monitoring.KpiList.getDefaultInstance()); - } - /** - * repeated .monitoring.KpiList kpi_list = 2; + * .monitoring.KpiList kpi_list = 2; */ - public java.util.List - getKpiListBuilderList() { - return getKpiListFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilderV3< + private com.google.protobuf.SingleFieldBuilderV3< monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> getKpiListFieldBuilder() { if (kpiListBuilder_ == null) { - kpiListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + kpiListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder>( - kpiList_, - ((bitField0_ & 0x00000001) != 0), + getKpiList(), getParentForChildren(), isClean()); kpiList_ = null; @@ -13174,55 +15770,55 @@ public final class Monitoring { } - public interface SubsIDListOrBuilder extends - // @@protoc_insertion_point(interface_extends:monitoring.SubsIDList) + public interface SubsListOrBuilder extends + // @@protoc_insertion_point(interface_extends:monitoring.SubsList) com.google.protobuf.MessageOrBuilder { /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - java.util.List - getSubsListList(); + java.util.List + getSubsDescriptorList(); /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - monitoring.Monitoring.SubscriptionID getSubsList(int index); + monitoring.Monitoring.SubsDescriptor getSubsDescriptor(int index); /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - int getSubsListCount(); + int getSubsDescriptorCount(); /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - java.util.List - getSubsListOrBuilderList(); + java.util.List + getSubsDescriptorOrBuilderList(); /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - monitoring.Monitoring.SubscriptionIDOrBuilder getSubsListOrBuilder( + monitoring.Monitoring.SubsDescriptorOrBuilder getSubsDescriptorOrBuilder( int index); } /** - * Protobuf type {@code monitoring.SubsIDList} + * Protobuf type {@code monitoring.SubsList} */ - public static final class SubsIDList extends + public static final class SubsList extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:monitoring.SubsIDList) - SubsIDListOrBuilder { + // @@protoc_insertion_point(message_implements:monitoring.SubsList) + SubsListOrBuilder { private static final long serialVersionUID = 0L; - // Use SubsIDList.newBuilder() to construct. - private SubsIDList(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use SubsList.newBuilder() to construct. + private SubsList(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private SubsIDList() { - subsList_ = java.util.Collections.emptyList(); + private SubsList() { + subsDescriptor_ = java.util.Collections.emptyList(); } @java.lang.Override @SuppressWarnings({"unused"}) protected java.lang.Object newInstance( UnusedPrivateParameter unused) { - return new SubsIDList(); + return new SubsList(); } @java.lang.Override @@ -13230,7 +15826,7 @@ public final class Monitoring { getUnknownFields() { return this.unknownFields; } - private SubsIDList( + private SubsList( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { @@ -13251,11 +15847,11 @@ public final class Monitoring { break; case 10: { if (!((mutable_bitField0_ & 0x00000001) != 0)) { - subsList_ = new java.util.ArrayList(); + subsDescriptor_ = new java.util.ArrayList(); mutable_bitField0_ |= 0x00000001; } - subsList_.add( - input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry)); + subsDescriptor_.add( + input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry)); break; } default: { @@ -13274,7 +15870,7 @@ public final class Monitoring { e).setUnfinishedMessage(this); } finally { if (((mutable_bitField0_ & 0x00000001) != 0)) { - subsList_ = java.util.Collections.unmodifiableList(subsList_); + subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_); } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); @@ -13282,55 +15878,55 @@ public final class Monitoring { } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return monitoring.Monitoring.internal_static_monitoring_SubsIDList_descriptor; + return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return monitoring.Monitoring.internal_static_monitoring_SubsIDList_fieldAccessorTable + return monitoring.Monitoring.internal_static_monitoring_SubsList_fieldAccessorTable .ensureFieldAccessorsInitialized( - monitoring.Monitoring.SubsIDList.class, monitoring.Monitoring.SubsIDList.Builder.class); + monitoring.Monitoring.SubsList.class, monitoring.Monitoring.SubsList.Builder.class); } - public static final int SUBS_LIST_FIELD_NUMBER = 1; - private java.util.List subsList_; + public static final int SUBS_DESCRIPTOR_FIELD_NUMBER = 1; + private java.util.List subsDescriptor_; /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ @java.lang.Override - public java.util.List getSubsListList() { - return subsList_; + public java.util.List getSubsDescriptorList() { + return subsDescriptor_; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ @java.lang.Override - public java.util.List - getSubsListOrBuilderList() { - return subsList_; + public java.util.List + getSubsDescriptorOrBuilderList() { + return subsDescriptor_; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ @java.lang.Override - public int getSubsListCount() { - return subsList_.size(); + public int getSubsDescriptorCount() { + return subsDescriptor_.size(); } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ @java.lang.Override - public monitoring.Monitoring.SubscriptionID getSubsList(int index) { - return subsList_.get(index); + public monitoring.Monitoring.SubsDescriptor getSubsDescriptor(int index) { + return subsDescriptor_.get(index); } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ @java.lang.Override - public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsListOrBuilder( + public monitoring.Monitoring.SubsDescriptorOrBuilder getSubsDescriptorOrBuilder( int index) { - return subsList_.get(index); + return subsDescriptor_.get(index); } private byte memoizedIsInitialized = -1; @@ -13347,8 +15943,8 @@ public final class Monitoring { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - for (int i = 0; i < subsList_.size(); i++) { - output.writeMessage(1, subsList_.get(i)); + for (int i = 0; i < subsDescriptor_.size(); i++) { + output.writeMessage(1, subsDescriptor_.get(i)); } unknownFields.writeTo(output); } @@ -13359,9 +15955,9 @@ public final class Monitoring { if (size != -1) return size; size = 0; - for (int i = 0; i < subsList_.size(); i++) { + for (int i = 0; i < subsDescriptor_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, subsList_.get(i)); + .computeMessageSize(1, subsDescriptor_.get(i)); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -13373,13 +15969,13 @@ public final class Monitoring { if (obj == this) { return true; } - if (!(obj instanceof monitoring.Monitoring.SubsIDList)) { + if (!(obj instanceof monitoring.Monitoring.SubsList)) { return super.equals(obj); } - monitoring.Monitoring.SubsIDList other = (monitoring.Monitoring.SubsIDList) obj; + monitoring.Monitoring.SubsList other = (monitoring.Monitoring.SubsList) obj; - if (!getSubsListList() - .equals(other.getSubsListList())) return false; + if (!getSubsDescriptorList() + .equals(other.getSubsDescriptorList())) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -13391,78 +15987,78 @@ public final class Monitoring { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (getSubsListCount() > 0) { - hash = (37 * hash) + SUBS_LIST_FIELD_NUMBER; - hash = (53 * hash) + getSubsListList().hashCode(); + if (getSubsDescriptorCount() > 0) { + hash = (37 * hash) + SUBS_DESCRIPTOR_FIELD_NUMBER; + hash = (53 * hash) + getSubsDescriptorList().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; } - public static monitoring.Monitoring.SubsIDList parseFrom( + public static monitoring.Monitoring.SubsList parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static monitoring.Monitoring.SubsIDList parseFrom( + public static monitoring.Monitoring.SubsList parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static monitoring.Monitoring.SubsIDList parseFrom( + public static monitoring.Monitoring.SubsList parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static monitoring.Monitoring.SubsIDList parseFrom( + public static monitoring.Monitoring.SubsList parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static monitoring.Monitoring.SubsIDList parseFrom(byte[] data) + public static monitoring.Monitoring.SubsList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static monitoring.Monitoring.SubsIDList parseFrom( + public static monitoring.Monitoring.SubsList parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static monitoring.Monitoring.SubsIDList parseFrom(java.io.InputStream input) + public static monitoring.Monitoring.SubsList parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static monitoring.Monitoring.SubsIDList parseFrom( + public static monitoring.Monitoring.SubsList parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - public static monitoring.Monitoring.SubsIDList parseDelimitedFrom(java.io.InputStream input) + public static monitoring.Monitoring.SubsList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - public static monitoring.Monitoring.SubsIDList parseDelimitedFrom( + public static monitoring.Monitoring.SubsList parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static monitoring.Monitoring.SubsIDList parseFrom( + public static monitoring.Monitoring.SubsList parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static monitoring.Monitoring.SubsIDList parseFrom( + public static monitoring.Monitoring.SubsList parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -13475,7 +16071,7 @@ public final class Monitoring { public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(monitoring.Monitoring.SubsIDList prototype) { + public static Builder newBuilder(monitoring.Monitoring.SubsList prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -13491,26 +16087,26 @@ public final class Monitoring { return builder; } /** - * Protobuf type {@code monitoring.SubsIDList} + * Protobuf type {@code monitoring.SubsList} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:monitoring.SubsIDList) - monitoring.Monitoring.SubsIDListOrBuilder { + // @@protoc_insertion_point(builder_implements:monitoring.SubsList) + monitoring.Monitoring.SubsListOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return monitoring.Monitoring.internal_static_monitoring_SubsIDList_descriptor; + return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return monitoring.Monitoring.internal_static_monitoring_SubsIDList_fieldAccessorTable + return monitoring.Monitoring.internal_static_monitoring_SubsList_fieldAccessorTable .ensureFieldAccessorsInitialized( - monitoring.Monitoring.SubsIDList.class, monitoring.Monitoring.SubsIDList.Builder.class); + monitoring.Monitoring.SubsList.class, monitoring.Monitoring.SubsList.Builder.class); } - // Construct using monitoring.Monitoring.SubsIDList.newBuilder() + // Construct using monitoring.Monitoring.SubsList.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -13523,17 +16119,17 @@ public final class Monitoring { private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3 .alwaysUseFieldBuilders) { - getSubsListFieldBuilder(); + getSubsDescriptorFieldBuilder(); } } @java.lang.Override public Builder clear() { super.clear(); - if (subsListBuilder_ == null) { - subsList_ = java.util.Collections.emptyList(); + if (subsDescriptorBuilder_ == null) { + subsDescriptor_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); } else { - subsListBuilder_.clear(); + subsDescriptorBuilder_.clear(); } return this; } @@ -13541,17 +16137,17 @@ public final class Monitoring { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return monitoring.Monitoring.internal_static_monitoring_SubsIDList_descriptor; + return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor; } @java.lang.Override - public monitoring.Monitoring.SubsIDList getDefaultInstanceForType() { - return monitoring.Monitoring.SubsIDList.getDefaultInstance(); + public monitoring.Monitoring.SubsList getDefaultInstanceForType() { + return monitoring.Monitoring.SubsList.getDefaultInstance(); } @java.lang.Override - public monitoring.Monitoring.SubsIDList build() { - monitoring.Monitoring.SubsIDList result = buildPartial(); + public monitoring.Monitoring.SubsList build() { + monitoring.Monitoring.SubsList result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -13559,17 +16155,17 @@ public final class Monitoring { } @java.lang.Override - public monitoring.Monitoring.SubsIDList buildPartial() { - monitoring.Monitoring.SubsIDList result = new monitoring.Monitoring.SubsIDList(this); + public monitoring.Monitoring.SubsList buildPartial() { + monitoring.Monitoring.SubsList result = new monitoring.Monitoring.SubsList(this); int from_bitField0_ = bitField0_; - if (subsListBuilder_ == null) { + if (subsDescriptorBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { - subsList_ = java.util.Collections.unmodifiableList(subsList_); + subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_); bitField0_ = (bitField0_ & ~0x00000001); } - result.subsList_ = subsList_; + result.subsDescriptor_ = subsDescriptor_; } else { - result.subsList_ = subsListBuilder_.build(); + result.subsDescriptor_ = subsDescriptorBuilder_.build(); } onBuilt(); return result; @@ -13609,39 +16205,39 @@ public final class Monitoring { } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof monitoring.Monitoring.SubsIDList) { - return mergeFrom((monitoring.Monitoring.SubsIDList)other); + if (other instanceof monitoring.Monitoring.SubsList) { + return mergeFrom((monitoring.Monitoring.SubsList)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(monitoring.Monitoring.SubsIDList other) { - if (other == monitoring.Monitoring.SubsIDList.getDefaultInstance()) return this; - if (subsListBuilder_ == null) { - if (!other.subsList_.isEmpty()) { - if (subsList_.isEmpty()) { - subsList_ = other.subsList_; + public Builder mergeFrom(monitoring.Monitoring.SubsList other) { + if (other == monitoring.Monitoring.SubsList.getDefaultInstance()) return this; + if (subsDescriptorBuilder_ == null) { + if (!other.subsDescriptor_.isEmpty()) { + if (subsDescriptor_.isEmpty()) { + subsDescriptor_ = other.subsDescriptor_; bitField0_ = (bitField0_ & ~0x00000001); } else { - ensureSubsListIsMutable(); - subsList_.addAll(other.subsList_); + ensureSubsDescriptorIsMutable(); + subsDescriptor_.addAll(other.subsDescriptor_); } onChanged(); } } else { - if (!other.subsList_.isEmpty()) { - if (subsListBuilder_.isEmpty()) { - subsListBuilder_.dispose(); - subsListBuilder_ = null; - subsList_ = other.subsList_; + if (!other.subsDescriptor_.isEmpty()) { + if (subsDescriptorBuilder_.isEmpty()) { + subsDescriptorBuilder_.dispose(); + subsDescriptorBuilder_ = null; + subsDescriptor_ = other.subsDescriptor_; bitField0_ = (bitField0_ & ~0x00000001); - subsListBuilder_ = + subsDescriptorBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getSubsListFieldBuilder() : null; + getSubsDescriptorFieldBuilder() : null; } else { - subsListBuilder_.addAllMessages(other.subsList_); + subsDescriptorBuilder_.addAllMessages(other.subsDescriptor_); } } } @@ -13660,11 +16256,11 @@ public final class Monitoring { com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - monitoring.Monitoring.SubsIDList parsedMessage = null; + monitoring.Monitoring.SubsList parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (monitoring.Monitoring.SubsIDList) e.getUnfinishedMessage(); + parsedMessage = (monitoring.Monitoring.SubsList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { if (parsedMessage != null) { @@ -13675,244 +16271,244 @@ public final class Monitoring { } private int bitField0_; - private java.util.List subsList_ = + private java.util.List subsDescriptor_ = java.util.Collections.emptyList(); - private void ensureSubsListIsMutable() { + private void ensureSubsDescriptorIsMutable() { if (!((bitField0_ & 0x00000001) != 0)) { - subsList_ = new java.util.ArrayList(subsList_); + subsDescriptor_ = new java.util.ArrayList(subsDescriptor_); bitField0_ |= 0x00000001; } } private com.google.protobuf.RepeatedFieldBuilderV3< - monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsListBuilder_; + monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsDescriptor.Builder, monitoring.Monitoring.SubsDescriptorOrBuilder> subsDescriptorBuilder_; /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public java.util.List getSubsListList() { - if (subsListBuilder_ == null) { - return java.util.Collections.unmodifiableList(subsList_); + public java.util.List getSubsDescriptorList() { + if (subsDescriptorBuilder_ == null) { + return java.util.Collections.unmodifiableList(subsDescriptor_); } else { - return subsListBuilder_.getMessageList(); + return subsDescriptorBuilder_.getMessageList(); } } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public int getSubsListCount() { - if (subsListBuilder_ == null) { - return subsList_.size(); + public int getSubsDescriptorCount() { + if (subsDescriptorBuilder_ == null) { + return subsDescriptor_.size(); } else { - return subsListBuilder_.getCount(); + return subsDescriptorBuilder_.getCount(); } } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public monitoring.Monitoring.SubscriptionID getSubsList(int index) { - if (subsListBuilder_ == null) { - return subsList_.get(index); + public monitoring.Monitoring.SubsDescriptor getSubsDescriptor(int index) { + if (subsDescriptorBuilder_ == null) { + return subsDescriptor_.get(index); } else { - return subsListBuilder_.getMessage(index); + return subsDescriptorBuilder_.getMessage(index); } } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public Builder setSubsList( - int index, monitoring.Monitoring.SubscriptionID value) { - if (subsListBuilder_ == null) { + public Builder setSubsDescriptor( + int index, monitoring.Monitoring.SubsDescriptor value) { + if (subsDescriptorBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureSubsListIsMutable(); - subsList_.set(index, value); + ensureSubsDescriptorIsMutable(); + subsDescriptor_.set(index, value); onChanged(); } else { - subsListBuilder_.setMessage(index, value); + subsDescriptorBuilder_.setMessage(index, value); } return this; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public Builder setSubsList( - int index, monitoring.Monitoring.SubscriptionID.Builder builderForValue) { - if (subsListBuilder_ == null) { - ensureSubsListIsMutable(); - subsList_.set(index, builderForValue.build()); + public Builder setSubsDescriptor( + int index, monitoring.Monitoring.SubsDescriptor.Builder builderForValue) { + if (subsDescriptorBuilder_ == null) { + ensureSubsDescriptorIsMutable(); + subsDescriptor_.set(index, builderForValue.build()); onChanged(); } else { - subsListBuilder_.setMessage(index, builderForValue.build()); + subsDescriptorBuilder_.setMessage(index, builderForValue.build()); } return this; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public Builder addSubsList(monitoring.Monitoring.SubscriptionID value) { - if (subsListBuilder_ == null) { + public Builder addSubsDescriptor(monitoring.Monitoring.SubsDescriptor value) { + if (subsDescriptorBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureSubsListIsMutable(); - subsList_.add(value); + ensureSubsDescriptorIsMutable(); + subsDescriptor_.add(value); onChanged(); } else { - subsListBuilder_.addMessage(value); + subsDescriptorBuilder_.addMessage(value); } return this; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public Builder addSubsList( - int index, monitoring.Monitoring.SubscriptionID value) { - if (subsListBuilder_ == null) { + public Builder addSubsDescriptor( + int index, monitoring.Monitoring.SubsDescriptor value) { + if (subsDescriptorBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureSubsListIsMutable(); - subsList_.add(index, value); + ensureSubsDescriptorIsMutable(); + subsDescriptor_.add(index, value); onChanged(); } else { - subsListBuilder_.addMessage(index, value); + subsDescriptorBuilder_.addMessage(index, value); } return this; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public Builder addSubsList( - monitoring.Monitoring.SubscriptionID.Builder builderForValue) { - if (subsListBuilder_ == null) { - ensureSubsListIsMutable(); - subsList_.add(builderForValue.build()); + public Builder addSubsDescriptor( + monitoring.Monitoring.SubsDescriptor.Builder builderForValue) { + if (subsDescriptorBuilder_ == null) { + ensureSubsDescriptorIsMutable(); + subsDescriptor_.add(builderForValue.build()); onChanged(); } else { - subsListBuilder_.addMessage(builderForValue.build()); + subsDescriptorBuilder_.addMessage(builderForValue.build()); } return this; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public Builder addSubsList( - int index, monitoring.Monitoring.SubscriptionID.Builder builderForValue) { - if (subsListBuilder_ == null) { - ensureSubsListIsMutable(); - subsList_.add(index, builderForValue.build()); + public Builder addSubsDescriptor( + int index, monitoring.Monitoring.SubsDescriptor.Builder builderForValue) { + if (subsDescriptorBuilder_ == null) { + ensureSubsDescriptorIsMutable(); + subsDescriptor_.add(index, builderForValue.build()); onChanged(); } else { - subsListBuilder_.addMessage(index, builderForValue.build()); + subsDescriptorBuilder_.addMessage(index, builderForValue.build()); } return this; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public Builder addAllSubsList( - java.lang.Iterable values) { - if (subsListBuilder_ == null) { - ensureSubsListIsMutable(); + public Builder addAllSubsDescriptor( + java.lang.Iterable values) { + if (subsDescriptorBuilder_ == null) { + ensureSubsDescriptorIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, subsList_); + values, subsDescriptor_); onChanged(); } else { - subsListBuilder_.addAllMessages(values); + subsDescriptorBuilder_.addAllMessages(values); } return this; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public Builder clearSubsList() { - if (subsListBuilder_ == null) { - subsList_ = java.util.Collections.emptyList(); + public Builder clearSubsDescriptor() { + if (subsDescriptorBuilder_ == null) { + subsDescriptor_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); onChanged(); } else { - subsListBuilder_.clear(); + subsDescriptorBuilder_.clear(); } return this; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public Builder removeSubsList(int index) { - if (subsListBuilder_ == null) { - ensureSubsListIsMutable(); - subsList_.remove(index); + public Builder removeSubsDescriptor(int index) { + if (subsDescriptorBuilder_ == null) { + ensureSubsDescriptorIsMutable(); + subsDescriptor_.remove(index); onChanged(); } else { - subsListBuilder_.remove(index); + subsDescriptorBuilder_.remove(index); } return this; } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public monitoring.Monitoring.SubscriptionID.Builder getSubsListBuilder( + public monitoring.Monitoring.SubsDescriptor.Builder getSubsDescriptorBuilder( int index) { - return getSubsListFieldBuilder().getBuilder(index); + return getSubsDescriptorFieldBuilder().getBuilder(index); } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsListOrBuilder( + public monitoring.Monitoring.SubsDescriptorOrBuilder getSubsDescriptorOrBuilder( int index) { - if (subsListBuilder_ == null) { - return subsList_.get(index); } else { - return subsListBuilder_.getMessageOrBuilder(index); + if (subsDescriptorBuilder_ == null) { + return subsDescriptor_.get(index); } else { + return subsDescriptorBuilder_.getMessageOrBuilder(index); } } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public java.util.List - getSubsListOrBuilderList() { - if (subsListBuilder_ != null) { - return subsListBuilder_.getMessageOrBuilderList(); + public java.util.List + getSubsDescriptorOrBuilderList() { + if (subsDescriptorBuilder_ != null) { + return subsDescriptorBuilder_.getMessageOrBuilderList(); } else { - return java.util.Collections.unmodifiableList(subsList_); + return java.util.Collections.unmodifiableList(subsDescriptor_); } } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public monitoring.Monitoring.SubscriptionID.Builder addSubsListBuilder() { - return getSubsListFieldBuilder().addBuilder( - monitoring.Monitoring.SubscriptionID.getDefaultInstance()); + public monitoring.Monitoring.SubsDescriptor.Builder addSubsDescriptorBuilder() { + return getSubsDescriptorFieldBuilder().addBuilder( + monitoring.Monitoring.SubsDescriptor.getDefaultInstance()); } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public monitoring.Monitoring.SubscriptionID.Builder addSubsListBuilder( + public monitoring.Monitoring.SubsDescriptor.Builder addSubsDescriptorBuilder( int index) { - return getSubsListFieldBuilder().addBuilder( - index, monitoring.Monitoring.SubscriptionID.getDefaultInstance()); + return getSubsDescriptorFieldBuilder().addBuilder( + index, monitoring.Monitoring.SubsDescriptor.getDefaultInstance()); } /** - * repeated .monitoring.SubscriptionID subs_list = 1; + * repeated .monitoring.SubsDescriptor subs_descriptor = 1; */ - public java.util.List - getSubsListBuilderList() { - return getSubsListFieldBuilder().getBuilderList(); + public java.util.List + getSubsDescriptorBuilderList() { + return getSubsDescriptorFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> - getSubsListFieldBuilder() { - if (subsListBuilder_ == null) { - subsListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder>( - subsList_, + monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsDescriptor.Builder, monitoring.Monitoring.SubsDescriptorOrBuilder> + getSubsDescriptorFieldBuilder() { + if (subsDescriptorBuilder_ == null) { + subsDescriptorBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsDescriptor.Builder, monitoring.Monitoring.SubsDescriptorOrBuilder>( + subsDescriptor_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); - subsList_ = null; + subsDescriptor_ = null; } - return subsListBuilder_; + return subsDescriptorBuilder_; } @java.lang.Override public final Builder setUnknownFields( @@ -13927,41 +16523,41 @@ public final class Monitoring { } - // @@protoc_insertion_point(builder_scope:monitoring.SubsIDList) + // @@protoc_insertion_point(builder_scope:monitoring.SubsList) } - // @@protoc_insertion_point(class_scope:monitoring.SubsIDList) - private static final monitoring.Monitoring.SubsIDList DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:monitoring.SubsList) + private static final monitoring.Monitoring.SubsList DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new monitoring.Monitoring.SubsIDList(); + DEFAULT_INSTANCE = new monitoring.Monitoring.SubsList(); } - public static monitoring.Monitoring.SubsIDList getDefaultInstance() { + public static monitoring.Monitoring.SubsList getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public SubsIDList parsePartialFrom( + public SubsList parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new SubsIDList(input, extensionRegistry); + return new SubsList(input, extensionRegistry); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public monitoring.Monitoring.SubsIDList getDefaultInstanceForType() { + public monitoring.Monitoring.SubsList getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -14011,52 +16607,34 @@ public final class Monitoring { getNameBytes(); /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - java.util.List - getKpiIdList(); - /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - monitoring.Monitoring.KpiId getKpiId(int index); - /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; + * @return Whether the kpiId field is set. */ - int getKpiIdCount(); + boolean hasKpiId(); /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; + * @return The kpiId. */ - java.util.List - getKpiIdOrBuilderList(); + monitoring.Monitoring.KpiId getKpiId(); /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; */ - monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder( - int index); + monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder(); /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - java.util.List - getKpiValueRangeList(); - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; + * @return Whether the kpiValueRange field is set. */ - monitoring.Monitoring.KpiValueRange getKpiValueRange(int index); + boolean hasKpiValueRange(); /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; + * @return The kpiValueRange. */ - int getKpiValueRangeCount(); + monitoring.Monitoring.KpiValueRange getKpiValueRange(); /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; */ - java.util.List - getKpiValueRangeOrBuilderList(); - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder( - int index); + monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder(); /** * .context.Timestamp timestamp = 6; @@ -14088,8 +16666,6 @@ public final class Monitoring { private AlarmDescriptor() { alarmDescription_ = ""; name_ = ""; - kpiId_ = java.util.Collections.emptyList(); - kpiValueRange_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -14112,7 +16688,6 @@ public final class Monitoring { if (extensionRegistry == null) { throw new java.lang.NullPointerException(); } - int mutable_bitField0_ = 0; com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); try { @@ -14149,21 +16724,29 @@ public final class Monitoring { break; } case 34: { - if (!((mutable_bitField0_ & 0x00000001) != 0)) { - kpiId_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; + monitoring.Monitoring.KpiId.Builder subBuilder = null; + if (kpiId_ != null) { + subBuilder = kpiId_.toBuilder(); } - kpiId_.add( - input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry)); + kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(kpiId_); + kpiId_ = subBuilder.buildPartial(); + } + break; } case 42: { - if (!((mutable_bitField0_ & 0x00000002) != 0)) { - kpiValueRange_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; + monitoring.Monitoring.KpiValueRange.Builder subBuilder = null; + if (kpiValueRange_ != null) { + subBuilder = kpiValueRange_.toBuilder(); } - kpiValueRange_.add( - input.readMessage(monitoring.Monitoring.KpiValueRange.parser(), extensionRegistry)); + kpiValueRange_ = input.readMessage(monitoring.Monitoring.KpiValueRange.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(kpiValueRange_); + kpiValueRange_ = subBuilder.buildPartial(); + } + break; } case 50: { @@ -14194,12 +16777,6 @@ public final class Monitoring { throw new com.google.protobuf.InvalidProtocolBufferException( e).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000001) != 0)) { - kpiId_ = java.util.Collections.unmodifiableList(kpiId_); - } - if (((mutable_bitField0_ & 0x00000002) != 0)) { - kpiValueRange_ = java.util.Collections.unmodifiableList(kpiValueRange_); - } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } @@ -14319,84 +16896,56 @@ public final class Monitoring { } } - public static final int KPI_ID_FIELD_NUMBER = 4; - private java.util.List kpiId_; - /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - @java.lang.Override - public java.util.List getKpiIdList() { - return kpiId_; - } - /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - @java.lang.Override - public java.util.List - getKpiIdOrBuilderList() { - return kpiId_; - } + public static final int KPI_ID_FIELD_NUMBER = 4; + private monitoring.Monitoring.KpiId kpiId_; /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; + * @return Whether the kpiId field is set. */ @java.lang.Override - public int getKpiIdCount() { - return kpiId_.size(); + public boolean hasKpiId() { + return kpiId_ != null; } /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; + * @return The kpiId. */ @java.lang.Override - public monitoring.Monitoring.KpiId getKpiId(int index) { - return kpiId_.get(index); + public monitoring.Monitoring.KpiId getKpiId() { + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; } /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; */ @java.lang.Override - public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder( - int index) { - return kpiId_.get(index); + public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { + return getKpiId(); } public static final int KPI_VALUE_RANGE_FIELD_NUMBER = 5; - private java.util.List kpiValueRange_; - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - @java.lang.Override - public java.util.List getKpiValueRangeList() { - return kpiValueRange_; - } - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - @java.lang.Override - public java.util.List - getKpiValueRangeOrBuilderList() { - return kpiValueRange_; - } + private monitoring.Monitoring.KpiValueRange kpiValueRange_; /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; + * @return Whether the kpiValueRange field is set. */ @java.lang.Override - public int getKpiValueRangeCount() { - return kpiValueRange_.size(); + public boolean hasKpiValueRange() { + return kpiValueRange_ != null; } /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; + * @return The kpiValueRange. */ @java.lang.Override - public monitoring.Monitoring.KpiValueRange getKpiValueRange(int index) { - return kpiValueRange_.get(index); + public monitoring.Monitoring.KpiValueRange getKpiValueRange() { + return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_; } /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; */ @java.lang.Override - public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder( - int index) { - return kpiValueRange_.get(index); + public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() { + return getKpiValueRange(); } public static final int TIMESTAMP_FIELD_NUMBER = 6; @@ -14448,11 +16997,11 @@ public final class Monitoring { if (!getNameBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_); } - for (int i = 0; i < kpiId_.size(); i++) { - output.writeMessage(4, kpiId_.get(i)); + if (kpiId_ != null) { + output.writeMessage(4, getKpiId()); } - for (int i = 0; i < kpiValueRange_.size(); i++) { - output.writeMessage(5, kpiValueRange_.get(i)); + if (kpiValueRange_ != null) { + output.writeMessage(5, getKpiValueRange()); } if (timestamp_ != null) { output.writeMessage(6, getTimestamp()); @@ -14476,13 +17025,13 @@ public final class Monitoring { if (!getNameBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_); } - for (int i = 0; i < kpiId_.size(); i++) { + if (kpiId_ != null) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(4, kpiId_.get(i)); + .computeMessageSize(4, getKpiId()); } - for (int i = 0; i < kpiValueRange_.size(); i++) { + if (kpiValueRange_ != null) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(5, kpiValueRange_.get(i)); + .computeMessageSize(5, getKpiValueRange()); } if (timestamp_ != null) { size += com.google.protobuf.CodedOutputStream @@ -14512,10 +17061,16 @@ public final class Monitoring { .equals(other.getAlarmDescription())) return false; if (!getName() .equals(other.getName())) return false; - if (!getKpiIdList() - .equals(other.getKpiIdList())) return false; - if (!getKpiValueRangeList() - .equals(other.getKpiValueRangeList())) return false; + if (hasKpiId() != other.hasKpiId()) return false; + if (hasKpiId()) { + if (!getKpiId() + .equals(other.getKpiId())) return false; + } + if (hasKpiValueRange() != other.hasKpiValueRange()) return false; + if (hasKpiValueRange()) { + if (!getKpiValueRange() + .equals(other.getKpiValueRange())) return false; + } if (hasTimestamp() != other.hasTimestamp()) return false; if (hasTimestamp()) { if (!getTimestamp() @@ -14540,13 +17095,13 @@ public final class Monitoring { hash = (53 * hash) + getAlarmDescription().hashCode(); hash = (37 * hash) + NAME_FIELD_NUMBER; hash = (53 * hash) + getName().hashCode(); - if (getKpiIdCount() > 0) { + if (hasKpiId()) { hash = (37 * hash) + KPI_ID_FIELD_NUMBER; - hash = (53 * hash) + getKpiIdList().hashCode(); + hash = (53 * hash) + getKpiId().hashCode(); } - if (getKpiValueRangeCount() > 0) { + if (hasKpiValueRange()) { hash = (37 * hash) + KPI_VALUE_RANGE_FIELD_NUMBER; - hash = (53 * hash) + getKpiValueRangeList().hashCode(); + hash = (53 * hash) + getKpiValueRange().hashCode(); } if (hasTimestamp()) { hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; @@ -14680,8 +17235,6 @@ public final class Monitoring { private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3 .alwaysUseFieldBuilders) { - getKpiIdFieldBuilder(); - getKpiValueRangeFieldBuilder(); } } @java.lang.Override @@ -14698,16 +17251,16 @@ public final class Monitoring { name_ = ""; if (kpiIdBuilder_ == null) { - kpiId_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); + kpiId_ = null; } else { - kpiIdBuilder_.clear(); + kpiId_ = null; + kpiIdBuilder_ = null; } if (kpiValueRangeBuilder_ == null) { - kpiValueRange_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + kpiValueRange_ = null; } else { - kpiValueRangeBuilder_.clear(); + kpiValueRange_ = null; + kpiValueRangeBuilder_ = null; } if (timestampBuilder_ == null) { timestamp_ = null; @@ -14741,7 +17294,6 @@ public final class Monitoring { @java.lang.Override public monitoring.Monitoring.AlarmDescriptor buildPartial() { monitoring.Monitoring.AlarmDescriptor result = new monitoring.Monitoring.AlarmDescriptor(this); - int from_bitField0_ = bitField0_; if (alarmIdBuilder_ == null) { result.alarmId_ = alarmId_; } else { @@ -14750,19 +17302,11 @@ public final class Monitoring { result.alarmDescription_ = alarmDescription_; result.name_ = name_; if (kpiIdBuilder_ == null) { - if (((bitField0_ & 0x00000001) != 0)) { - kpiId_ = java.util.Collections.unmodifiableList(kpiId_); - bitField0_ = (bitField0_ & ~0x00000001); - } result.kpiId_ = kpiId_; } else { result.kpiId_ = kpiIdBuilder_.build(); } if (kpiValueRangeBuilder_ == null) { - if (((bitField0_ & 0x00000002) != 0)) { - kpiValueRange_ = java.util.Collections.unmodifiableList(kpiValueRange_); - bitField0_ = (bitField0_ & ~0x00000002); - } result.kpiValueRange_ = kpiValueRange_; } else { result.kpiValueRange_ = kpiValueRangeBuilder_.build(); @@ -14831,57 +17375,11 @@ public final class Monitoring { name_ = other.name_; onChanged(); } - if (kpiIdBuilder_ == null) { - if (!other.kpiId_.isEmpty()) { - if (kpiId_.isEmpty()) { - kpiId_ = other.kpiId_; - bitField0_ = (bitField0_ & ~0x00000001); - } else { - ensureKpiIdIsMutable(); - kpiId_.addAll(other.kpiId_); - } - onChanged(); - } - } else { - if (!other.kpiId_.isEmpty()) { - if (kpiIdBuilder_.isEmpty()) { - kpiIdBuilder_.dispose(); - kpiIdBuilder_ = null; - kpiId_ = other.kpiId_; - bitField0_ = (bitField0_ & ~0x00000001); - kpiIdBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getKpiIdFieldBuilder() : null; - } else { - kpiIdBuilder_.addAllMessages(other.kpiId_); - } - } + if (other.hasKpiId()) { + mergeKpiId(other.getKpiId()); } - if (kpiValueRangeBuilder_ == null) { - if (!other.kpiValueRange_.isEmpty()) { - if (kpiValueRange_.isEmpty()) { - kpiValueRange_ = other.kpiValueRange_; - bitField0_ = (bitField0_ & ~0x00000002); - } else { - ensureKpiValueRangeIsMutable(); - kpiValueRange_.addAll(other.kpiValueRange_); - } - onChanged(); - } - } else { - if (!other.kpiValueRange_.isEmpty()) { - if (kpiValueRangeBuilder_.isEmpty()) { - kpiValueRangeBuilder_.dispose(); - kpiValueRangeBuilder_ = null; - kpiValueRange_ = other.kpiValueRange_; - bitField0_ = (bitField0_ & ~0x00000002); - kpiValueRangeBuilder_ = - com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getKpiValueRangeFieldBuilder() : null; - } else { - kpiValueRangeBuilder_.addAllMessages(other.kpiValueRange_); - } - } + if (other.hasKpiValueRange()) { + mergeKpiValueRange(other.getKpiValueRange()); } if (other.hasTimestamp()) { mergeTimestamp(other.getTimestamp()); @@ -14914,7 +17412,6 @@ public final class Monitoring { } return this; } - private int bitField0_; private monitoring.Monitoring.AlarmID alarmId_; private com.google.protobuf.SingleFieldBuilderV3< @@ -15187,239 +17684,118 @@ public final class Monitoring { return this; } - private java.util.List kpiId_ = - java.util.Collections.emptyList(); - private void ensureKpiIdIsMutable() { - if (!((bitField0_ & 0x00000001) != 0)) { - kpiId_ = new java.util.ArrayList(kpiId_); - bitField0_ |= 0x00000001; - } - } - - private com.google.protobuf.RepeatedFieldBuilderV3< + private monitoring.Monitoring.KpiId kpiId_; + private com.google.protobuf.SingleFieldBuilderV3< monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_; - - /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - public java.util.List getKpiIdList() { - if (kpiIdBuilder_ == null) { - return java.util.Collections.unmodifiableList(kpiId_); - } else { - return kpiIdBuilder_.getMessageList(); - } - } /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; + * @return Whether the kpiId field is set. */ - public int getKpiIdCount() { - if (kpiIdBuilder_ == null) { - return kpiId_.size(); - } else { - return kpiIdBuilder_.getCount(); - } + public boolean hasKpiId() { + return kpiIdBuilder_ != null || kpiId_ != null; } /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; + * @return The kpiId. */ - public monitoring.Monitoring.KpiId getKpiId(int index) { + public monitoring.Monitoring.KpiId getKpiId() { if (kpiIdBuilder_ == null) { - return kpiId_.get(index); + return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; } else { - return kpiIdBuilder_.getMessage(index); + return kpiIdBuilder_.getMessage(); } } /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; */ - public Builder setKpiId( - int index, monitoring.Monitoring.KpiId value) { + public Builder setKpiId(monitoring.Monitoring.KpiId value) { if (kpiIdBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureKpiIdIsMutable(); - kpiId_.set(index, value); + kpiId_ = value; onChanged(); } else { - kpiIdBuilder_.setMessage(index, value); + kpiIdBuilder_.setMessage(value); } + return this; } /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; */ public Builder setKpiId( - int index, monitoring.Monitoring.KpiId.Builder builderForValue) { - if (kpiIdBuilder_ == null) { - ensureKpiIdIsMutable(); - kpiId_.set(index, builderForValue.build()); - onChanged(); - } else { - kpiIdBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - public Builder addKpiId(monitoring.Monitoring.KpiId value) { - if (kpiIdBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureKpiIdIsMutable(); - kpiId_.add(value); - onChanged(); - } else { - kpiIdBuilder_.addMessage(value); - } - return this; - } - /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - public Builder addKpiId( - int index, monitoring.Monitoring.KpiId value) { - if (kpiIdBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureKpiIdIsMutable(); - kpiId_.add(index, value); - onChanged(); - } else { - kpiIdBuilder_.addMessage(index, value); - } - return this; - } - /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - public Builder addKpiId( monitoring.Monitoring.KpiId.Builder builderForValue) { if (kpiIdBuilder_ == null) { - ensureKpiIdIsMutable(); - kpiId_.add(builderForValue.build()); - onChanged(); - } else { - kpiIdBuilder_.addMessage(builderForValue.build()); - } - return this; - } - /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - public Builder addKpiId( - int index, monitoring.Monitoring.KpiId.Builder builderForValue) { - if (kpiIdBuilder_ == null) { - ensureKpiIdIsMutable(); - kpiId_.add(index, builderForValue.build()); + kpiId_ = builderForValue.build(); onChanged(); } else { - kpiIdBuilder_.addMessage(index, builderForValue.build()); + kpiIdBuilder_.setMessage(builderForValue.build()); } + return this; } /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; */ - public Builder addAllKpiId( - java.lang.Iterable values) { + public Builder mergeKpiId(monitoring.Monitoring.KpiId value) { if (kpiIdBuilder_ == null) { - ensureKpiIdIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, kpiId_); + if (kpiId_ != null) { + kpiId_ = + monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial(); + } else { + kpiId_ = value; + } onChanged(); } else { - kpiIdBuilder_.addAllMessages(values); + kpiIdBuilder_.mergeFrom(value); } + return this; } /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; */ public Builder clearKpiId() { if (kpiIdBuilder_ == null) { - kpiId_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - onChanged(); - } else { - kpiIdBuilder_.clear(); - } - return this; - } - /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - public Builder removeKpiId(int index) { - if (kpiIdBuilder_ == null) { - ensureKpiIdIsMutable(); - kpiId_.remove(index); + kpiId_ = null; onChanged(); } else { - kpiIdBuilder_.remove(index); + kpiId_ = null; + kpiIdBuilder_ = null; } + return this; } /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder( - int index) { - return getKpiIdFieldBuilder().getBuilder(index); - } - /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; */ - public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder( - int index) { - if (kpiIdBuilder_ == null) { - return kpiId_.get(index); } else { - return kpiIdBuilder_.getMessageOrBuilder(index); - } + public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() { + + onChanged(); + return getKpiIdFieldBuilder().getBuilder(); } /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; */ - public java.util.List - getKpiIdOrBuilderList() { + public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() { if (kpiIdBuilder_ != null) { - return kpiIdBuilder_.getMessageOrBuilderList(); + return kpiIdBuilder_.getMessageOrBuilder(); } else { - return java.util.Collections.unmodifiableList(kpiId_); + return kpiId_ == null ? + monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_; } } /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - public monitoring.Monitoring.KpiId.Builder addKpiIdBuilder() { - return getKpiIdFieldBuilder().addBuilder( - monitoring.Monitoring.KpiId.getDefaultInstance()); - } - /** - * repeated .monitoring.KpiId kpi_id = 4; - */ - public monitoring.Monitoring.KpiId.Builder addKpiIdBuilder( - int index) { - return getKpiIdFieldBuilder().addBuilder( - index, monitoring.Monitoring.KpiId.getDefaultInstance()); - } - /** - * repeated .monitoring.KpiId kpi_id = 4; + * .monitoring.KpiId kpi_id = 4; */ - public java.util.List - getKpiIdBuilderList() { - return getKpiIdFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilderV3< + private com.google.protobuf.SingleFieldBuilderV3< monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdFieldBuilder() { if (kpiIdBuilder_ == null) { - kpiIdBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>( - kpiId_, - ((bitField0_ & 0x00000001) != 0), + getKpiId(), getParentForChildren(), isClean()); kpiId_ = null; @@ -15427,239 +17803,118 @@ public final class Monitoring { return kpiIdBuilder_; } - private java.util.List kpiValueRange_ = - java.util.Collections.emptyList(); - private void ensureKpiValueRangeIsMutable() { - if (!((bitField0_ & 0x00000002) != 0)) { - kpiValueRange_ = new java.util.ArrayList(kpiValueRange_); - bitField0_ |= 0x00000002; - } - } - - private com.google.protobuf.RepeatedFieldBuilderV3< - monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> kpiValueRangeBuilder_; - - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - public java.util.List getKpiValueRangeList() { - if (kpiValueRangeBuilder_ == null) { - return java.util.Collections.unmodifiableList(kpiValueRange_); - } else { - return kpiValueRangeBuilder_.getMessageList(); - } - } - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - public int getKpiValueRangeCount() { - if (kpiValueRangeBuilder_ == null) { - return kpiValueRange_.size(); - } else { - return kpiValueRangeBuilder_.getCount(); - } - } - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - public monitoring.Monitoring.KpiValueRange getKpiValueRange(int index) { - if (kpiValueRangeBuilder_ == null) { - return kpiValueRange_.get(index); - } else { - return kpiValueRangeBuilder_.getMessage(index); - } - } - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - public Builder setKpiValueRange( - int index, monitoring.Monitoring.KpiValueRange value) { - if (kpiValueRangeBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureKpiValueRangeIsMutable(); - kpiValueRange_.set(index, value); - onChanged(); - } else { - kpiValueRangeBuilder_.setMessage(index, value); - } - return this; - } - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - public Builder setKpiValueRange( - int index, monitoring.Monitoring.KpiValueRange.Builder builderForValue) { - if (kpiValueRangeBuilder_ == null) { - ensureKpiValueRangeIsMutable(); - kpiValueRange_.set(index, builderForValue.build()); - onChanged(); - } else { - kpiValueRangeBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - public Builder addKpiValueRange(monitoring.Monitoring.KpiValueRange value) { - if (kpiValueRangeBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureKpiValueRangeIsMutable(); - kpiValueRange_.add(value); - onChanged(); - } else { - kpiValueRangeBuilder_.addMessage(value); - } - return this; - } + private monitoring.Monitoring.KpiValueRange kpiValueRange_; + private com.google.protobuf.SingleFieldBuilderV3< + monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> kpiValueRangeBuilder_; /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; + * @return Whether the kpiValueRange field is set. */ - public Builder addKpiValueRange( - int index, monitoring.Monitoring.KpiValueRange value) { - if (kpiValueRangeBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureKpiValueRangeIsMutable(); - kpiValueRange_.add(index, value); - onChanged(); - } else { - kpiValueRangeBuilder_.addMessage(index, value); - } - return this; + public boolean hasKpiValueRange() { + return kpiValueRangeBuilder_ != null || kpiValueRange_ != null; } /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; + * @return The kpiValueRange. */ - public Builder addKpiValueRange( - monitoring.Monitoring.KpiValueRange.Builder builderForValue) { + public monitoring.Monitoring.KpiValueRange getKpiValueRange() { if (kpiValueRangeBuilder_ == null) { - ensureKpiValueRangeIsMutable(); - kpiValueRange_.add(builderForValue.build()); - onChanged(); + return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_; } else { - kpiValueRangeBuilder_.addMessage(builderForValue.build()); + return kpiValueRangeBuilder_.getMessage(); } - return this; } /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; */ - public Builder addKpiValueRange( - int index, monitoring.Monitoring.KpiValueRange.Builder builderForValue) { + public Builder setKpiValueRange(monitoring.Monitoring.KpiValueRange value) { if (kpiValueRangeBuilder_ == null) { - ensureKpiValueRangeIsMutable(); - kpiValueRange_.add(index, builderForValue.build()); + if (value == null) { + throw new NullPointerException(); + } + kpiValueRange_ = value; onChanged(); } else { - kpiValueRangeBuilder_.addMessage(index, builderForValue.build()); + kpiValueRangeBuilder_.setMessage(value); } + return this; } /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; */ - public Builder addAllKpiValueRange( - java.lang.Iterable values) { + public Builder setKpiValueRange( + monitoring.Monitoring.KpiValueRange.Builder builderForValue) { if (kpiValueRangeBuilder_ == null) { - ensureKpiValueRangeIsMutable(); - com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, kpiValueRange_); + kpiValueRange_ = builderForValue.build(); onChanged(); } else { - kpiValueRangeBuilder_.addAllMessages(values); + kpiValueRangeBuilder_.setMessage(builderForValue.build()); } + return this; } /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; */ - public Builder clearKpiValueRange() { + public Builder mergeKpiValueRange(monitoring.Monitoring.KpiValueRange value) { if (kpiValueRangeBuilder_ == null) { - kpiValueRange_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + if (kpiValueRange_ != null) { + kpiValueRange_ = + monitoring.Monitoring.KpiValueRange.newBuilder(kpiValueRange_).mergeFrom(value).buildPartial(); + } else { + kpiValueRange_ = value; + } onChanged(); } else { - kpiValueRangeBuilder_.clear(); + kpiValueRangeBuilder_.mergeFrom(value); } + return this; } /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; */ - public Builder removeKpiValueRange(int index) { + public Builder clearKpiValueRange() { if (kpiValueRangeBuilder_ == null) { - ensureKpiValueRangeIsMutable(); - kpiValueRange_.remove(index); + kpiValueRange_ = null; onChanged(); } else { - kpiValueRangeBuilder_.remove(index); + kpiValueRange_ = null; + kpiValueRangeBuilder_ = null; } + return this; } /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - public monitoring.Monitoring.KpiValueRange.Builder getKpiValueRangeBuilder( - int index) { - return getKpiValueRangeFieldBuilder().getBuilder(index); - } - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; */ - public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder( - int index) { - if (kpiValueRangeBuilder_ == null) { - return kpiValueRange_.get(index); } else { - return kpiValueRangeBuilder_.getMessageOrBuilder(index); - } + public monitoring.Monitoring.KpiValueRange.Builder getKpiValueRangeBuilder() { + + onChanged(); + return getKpiValueRangeFieldBuilder().getBuilder(); } /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; */ - public java.util.List - getKpiValueRangeOrBuilderList() { + public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() { if (kpiValueRangeBuilder_ != null) { - return kpiValueRangeBuilder_.getMessageOrBuilderList(); + return kpiValueRangeBuilder_.getMessageOrBuilder(); } else { - return java.util.Collections.unmodifiableList(kpiValueRange_); + return kpiValueRange_ == null ? + monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_; } } /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - public monitoring.Monitoring.KpiValueRange.Builder addKpiValueRangeBuilder() { - return getKpiValueRangeFieldBuilder().addBuilder( - monitoring.Monitoring.KpiValueRange.getDefaultInstance()); - } - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; + * .monitoring.KpiValueRange kpi_value_range = 5; */ - public monitoring.Monitoring.KpiValueRange.Builder addKpiValueRangeBuilder( - int index) { - return getKpiValueRangeFieldBuilder().addBuilder( - index, monitoring.Monitoring.KpiValueRange.getDefaultInstance()); - } - /** - * repeated .monitoring.KpiValueRange kpi_value_range = 5; - */ - public java.util.List - getKpiValueRangeBuilderList() { - return getKpiValueRangeFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilderV3< + private com.google.protobuf.SingleFieldBuilderV3< monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> getKpiValueRangeFieldBuilder() { if (kpiValueRangeBuilder_ == null) { - kpiValueRangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + kpiValueRangeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder>( - kpiValueRange_, - ((bitField0_ & 0x00000002) != 0), + getKpiValueRange(), getParentForChildren(), isClean()); kpiValueRange_ = null; @@ -16464,19 +18719,19 @@ public final class Monitoring { com.google.protobuf.MessageOrBuilder { /** - * .monitoring.AlarmID alarmID = 1; - * @return Whether the alarmID field is set. + * .monitoring.AlarmID alarm_id = 1; + * @return Whether the alarmId field is set. */ - boolean hasAlarmID(); + boolean hasAlarmId(); /** - * .monitoring.AlarmID alarmID = 1; - * @return The alarmID. + * .monitoring.AlarmID alarm_id = 1; + * @return The alarmId. */ - monitoring.Monitoring.AlarmID getAlarmID(); + monitoring.Monitoring.AlarmID getAlarmId(); /** - * .monitoring.AlarmID alarmID = 1; + * .monitoring.AlarmID alarm_id = 1; */ - monitoring.Monitoring.AlarmIDOrBuilder getAlarmIDOrBuilder(); + monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder(); /** * float subscription_timeout_s = 2; @@ -16537,13 +18792,13 @@ public final class Monitoring { break; case 10: { monitoring.Monitoring.AlarmID.Builder subBuilder = null; - if (alarmID_ != null) { - subBuilder = alarmID_.toBuilder(); + if (alarmId_ != null) { + subBuilder = alarmId_.toBuilder(); } - alarmID_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry); + alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry); if (subBuilder != null) { - subBuilder.mergeFrom(alarmID_); - alarmID_ = subBuilder.buildPartial(); + subBuilder.mergeFrom(alarmId_); + alarmId_ = subBuilder.buildPartial(); } break; @@ -16590,30 +18845,30 @@ public final class Monitoring { monitoring.Monitoring.AlarmSubscription.class, monitoring.Monitoring.AlarmSubscription.Builder.class); } - public static final int ALARMID_FIELD_NUMBER = 1; - private monitoring.Monitoring.AlarmID alarmID_; + public static final int ALARM_ID_FIELD_NUMBER = 1; + private monitoring.Monitoring.AlarmID alarmId_; /** - * .monitoring.AlarmID alarmID = 1; - * @return Whether the alarmID field is set. + * .monitoring.AlarmID alarm_id = 1; + * @return Whether the alarmId field is set. */ @java.lang.Override - public boolean hasAlarmID() { - return alarmID_ != null; + public boolean hasAlarmId() { + return alarmId_ != null; } /** - * .monitoring.AlarmID alarmID = 1; - * @return The alarmID. + * .monitoring.AlarmID alarm_id = 1; + * @return The alarmId. */ @java.lang.Override - public monitoring.Monitoring.AlarmID getAlarmID() { - return alarmID_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmID_; + public monitoring.Monitoring.AlarmID getAlarmId() { + return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_; } /** - * .monitoring.AlarmID alarmID = 1; + * .monitoring.AlarmID alarm_id = 1; */ @java.lang.Override - public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIDOrBuilder() { - return getAlarmID(); + public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() { + return getAlarmId(); } public static final int SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER = 2; @@ -16652,8 +18907,8 @@ public final class Monitoring { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (alarmID_ != null) { - output.writeMessage(1, getAlarmID()); + if (alarmId_ != null) { + output.writeMessage(1, getAlarmId()); } if (subscriptionTimeoutS_ != 0F) { output.writeFloat(2, subscriptionTimeoutS_); @@ -16670,9 +18925,9 @@ public final class Monitoring { if (size != -1) return size; size = 0; - if (alarmID_ != null) { + if (alarmId_ != null) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, getAlarmID()); + .computeMessageSize(1, getAlarmId()); } if (subscriptionTimeoutS_ != 0F) { size += com.google.protobuf.CodedOutputStream @@ -16697,10 +18952,10 @@ public final class Monitoring { } monitoring.Monitoring.AlarmSubscription other = (monitoring.Monitoring.AlarmSubscription) obj; - if (hasAlarmID() != other.hasAlarmID()) return false; - if (hasAlarmID()) { - if (!getAlarmID() - .equals(other.getAlarmID())) return false; + if (hasAlarmId() != other.hasAlarmId()) return false; + if (hasAlarmId()) { + if (!getAlarmId() + .equals(other.getAlarmId())) return false; } if (java.lang.Float.floatToIntBits(getSubscriptionTimeoutS()) != java.lang.Float.floatToIntBits( @@ -16719,9 +18974,9 @@ public final class Monitoring { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (hasAlarmID()) { - hash = (37 * hash) + ALARMID_FIELD_NUMBER; - hash = (53 * hash) + getAlarmID().hashCode(); + if (hasAlarmId()) { + hash = (37 * hash) + ALARM_ID_FIELD_NUMBER; + hash = (53 * hash) + getAlarmId().hashCode(); } hash = (37 * hash) + SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER; hash = (53 * hash) + java.lang.Float.floatToIntBits( @@ -16862,11 +19117,11 @@ public final class Monitoring { @java.lang.Override public Builder clear() { super.clear(); - if (alarmIDBuilder_ == null) { - alarmID_ = null; + if (alarmIdBuilder_ == null) { + alarmId_ = null; } else { - alarmID_ = null; - alarmIDBuilder_ = null; + alarmId_ = null; + alarmIdBuilder_ = null; } subscriptionTimeoutS_ = 0F; @@ -16898,10 +19153,10 @@ public final class Monitoring { @java.lang.Override public monitoring.Monitoring.AlarmSubscription buildPartial() { monitoring.Monitoring.AlarmSubscription result = new monitoring.Monitoring.AlarmSubscription(this); - if (alarmIDBuilder_ == null) { - result.alarmID_ = alarmID_; + if (alarmIdBuilder_ == null) { + result.alarmId_ = alarmId_; } else { - result.alarmID_ = alarmIDBuilder_.build(); + result.alarmId_ = alarmIdBuilder_.build(); } result.subscriptionTimeoutS_ = subscriptionTimeoutS_; result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_; @@ -16953,8 +19208,8 @@ public final class Monitoring { public Builder mergeFrom(monitoring.Monitoring.AlarmSubscription other) { if (other == monitoring.Monitoring.AlarmSubscription.getDefaultInstance()) return this; - if (other.hasAlarmID()) { - mergeAlarmID(other.getAlarmID()); + if (other.hasAlarmId()) { + mergeAlarmId(other.getAlarmId()); } if (other.getSubscriptionTimeoutS() != 0F) { setSubscriptionTimeoutS(other.getSubscriptionTimeoutS()); @@ -16991,123 +19246,123 @@ public final class Monitoring { return this; } - private monitoring.Monitoring.AlarmID alarmID_; + private monitoring.Monitoring.AlarmID alarmId_; private com.google.protobuf.SingleFieldBuilderV3< - monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIDBuilder_; + monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_; /** - * .monitoring.AlarmID alarmID = 1; - * @return Whether the alarmID field is set. + * .monitoring.AlarmID alarm_id = 1; + * @return Whether the alarmId field is set. */ - public boolean hasAlarmID() { - return alarmIDBuilder_ != null || alarmID_ != null; + public boolean hasAlarmId() { + return alarmIdBuilder_ != null || alarmId_ != null; } /** - * .monitoring.AlarmID alarmID = 1; - * @return The alarmID. + * .monitoring.AlarmID alarm_id = 1; + * @return The alarmId. */ - public monitoring.Monitoring.AlarmID getAlarmID() { - if (alarmIDBuilder_ == null) { - return alarmID_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmID_; + public monitoring.Monitoring.AlarmID getAlarmId() { + if (alarmIdBuilder_ == null) { + return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_; } else { - return alarmIDBuilder_.getMessage(); + return alarmIdBuilder_.getMessage(); } } /** - * .monitoring.AlarmID alarmID = 1; + * .monitoring.AlarmID alarm_id = 1; */ - public Builder setAlarmID(monitoring.Monitoring.AlarmID value) { - if (alarmIDBuilder_ == null) { + public Builder setAlarmId(monitoring.Monitoring.AlarmID value) { + if (alarmIdBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - alarmID_ = value; + alarmId_ = value; onChanged(); } else { - alarmIDBuilder_.setMessage(value); + alarmIdBuilder_.setMessage(value); } return this; } /** - * .monitoring.AlarmID alarmID = 1; + * .monitoring.AlarmID alarm_id = 1; */ - public Builder setAlarmID( + public Builder setAlarmId( monitoring.Monitoring.AlarmID.Builder builderForValue) { - if (alarmIDBuilder_ == null) { - alarmID_ = builderForValue.build(); + if (alarmIdBuilder_ == null) { + alarmId_ = builderForValue.build(); onChanged(); } else { - alarmIDBuilder_.setMessage(builderForValue.build()); + alarmIdBuilder_.setMessage(builderForValue.build()); } return this; } /** - * .monitoring.AlarmID alarmID = 1; + * .monitoring.AlarmID alarm_id = 1; */ - public Builder mergeAlarmID(monitoring.Monitoring.AlarmID value) { - if (alarmIDBuilder_ == null) { - if (alarmID_ != null) { - alarmID_ = - monitoring.Monitoring.AlarmID.newBuilder(alarmID_).mergeFrom(value).buildPartial(); + public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) { + if (alarmIdBuilder_ == null) { + if (alarmId_ != null) { + alarmId_ = + monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial(); } else { - alarmID_ = value; + alarmId_ = value; } onChanged(); } else { - alarmIDBuilder_.mergeFrom(value); + alarmIdBuilder_.mergeFrom(value); } return this; } /** - * .monitoring.AlarmID alarmID = 1; + * .monitoring.AlarmID alarm_id = 1; */ - public Builder clearAlarmID() { - if (alarmIDBuilder_ == null) { - alarmID_ = null; + public Builder clearAlarmId() { + if (alarmIdBuilder_ == null) { + alarmId_ = null; onChanged(); } else { - alarmID_ = null; - alarmIDBuilder_ = null; + alarmId_ = null; + alarmIdBuilder_ = null; } return this; } /** - * .monitoring.AlarmID alarmID = 1; + * .monitoring.AlarmID alarm_id = 1; */ - public monitoring.Monitoring.AlarmID.Builder getAlarmIDBuilder() { + public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() { onChanged(); - return getAlarmIDFieldBuilder().getBuilder(); + return getAlarmIdFieldBuilder().getBuilder(); } /** - * .monitoring.AlarmID alarmID = 1; + * .monitoring.AlarmID alarm_id = 1; */ - public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIDOrBuilder() { - if (alarmIDBuilder_ != null) { - return alarmIDBuilder_.getMessageOrBuilder(); + public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() { + if (alarmIdBuilder_ != null) { + return alarmIdBuilder_.getMessageOrBuilder(); } else { - return alarmID_ == null ? - monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmID_; + return alarmId_ == null ? + monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_; } } /** - * .monitoring.AlarmID alarmID = 1; + * .monitoring.AlarmID alarm_id = 1; */ private com.google.protobuf.SingleFieldBuilderV3< monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> - getAlarmIDFieldBuilder() { - if (alarmIDBuilder_ == null) { - alarmIDBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + getAlarmIdFieldBuilder() { + if (alarmIdBuilder_ == null) { + alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder>( - getAlarmID(), + getAlarmId(), getParentForChildren(), isClean()); - alarmID_ = null; + alarmId_ = null; } - return alarmIDBuilder_; + return alarmIdBuilder_; } private float subscriptionTimeoutS_ ; @@ -17256,34 +19511,19 @@ public final class Monitoring { getTextBytes(); /** - * .monitoring.KpiValue kpi_value = 3; - * @return Whether the kpiValue field is set. - */ - boolean hasKpiValue(); - /** - * .monitoring.KpiValue kpi_value = 3; - * @return The kpiValue. - */ - monitoring.Monitoring.KpiValue getKpiValue(); - /** - * .monitoring.KpiValue kpi_value = 3; - */ - monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder(); - - /** - * .context.Timestamp timestamp = 4; - * @return Whether the timestamp field is set. + * .monitoring.KpiList kpi_list = 3; + * @return Whether the kpiList field is set. */ - boolean hasTimestamp(); + boolean hasKpiList(); /** - * .context.Timestamp timestamp = 4; - * @return The timestamp. + * .monitoring.KpiList kpi_list = 3; + * @return The kpiList. */ - context.ContextOuterClass.Timestamp getTimestamp(); + monitoring.Monitoring.KpiList getKpiList(); /** - * .context.Timestamp timestamp = 4; + * .monitoring.KpiList kpi_list = 3; */ - context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder(); + monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder(); } /** * Protobuf type {@code monitoring.AlarmResponse} @@ -17351,27 +19591,14 @@ public final class Monitoring { break; } case 26: { - monitoring.Monitoring.KpiValue.Builder subBuilder = null; - if (kpiValue_ != null) { - subBuilder = kpiValue_.toBuilder(); - } - kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(kpiValue_); - kpiValue_ = subBuilder.buildPartial(); - } - - break; - } - case 34: { - context.ContextOuterClass.Timestamp.Builder subBuilder = null; - if (timestamp_ != null) { - subBuilder = timestamp_.toBuilder(); + monitoring.Monitoring.KpiList.Builder subBuilder = null; + if (kpiList_ != null) { + subBuilder = kpiList_.toBuilder(); } - timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry); + kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry); if (subBuilder != null) { - subBuilder.mergeFrom(timestamp_); - timestamp_ = subBuilder.buildPartial(); + subBuilder.mergeFrom(kpiList_); + kpiList_ = subBuilder.buildPartial(); } break; @@ -17472,56 +19699,30 @@ public final class Monitoring { } } - public static final int KPI_VALUE_FIELD_NUMBER = 3; - private monitoring.Monitoring.KpiValue kpiValue_; - /** - * .monitoring.KpiValue kpi_value = 3; - * @return Whether the kpiValue field is set. - */ - @java.lang.Override - public boolean hasKpiValue() { - return kpiValue_ != null; - } - /** - * .monitoring.KpiValue kpi_value = 3; - * @return The kpiValue. - */ - @java.lang.Override - public monitoring.Monitoring.KpiValue getKpiValue() { - return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_; - } - /** - * .monitoring.KpiValue kpi_value = 3; - */ - @java.lang.Override - public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() { - return getKpiValue(); - } - - public static final int TIMESTAMP_FIELD_NUMBER = 4; - private context.ContextOuterClass.Timestamp timestamp_; + public static final int KPI_LIST_FIELD_NUMBER = 3; + private monitoring.Monitoring.KpiList kpiList_; /** - * .context.Timestamp timestamp = 4; - * @return Whether the timestamp field is set. + * .monitoring.KpiList kpi_list = 3; + * @return Whether the kpiList field is set. */ @java.lang.Override - public boolean hasTimestamp() { - return timestamp_ != null; + public boolean hasKpiList() { + return kpiList_ != null; } /** - * .context.Timestamp timestamp = 4; - * @return The timestamp. + * .monitoring.KpiList kpi_list = 3; + * @return The kpiList. */ @java.lang.Override - public context.ContextOuterClass.Timestamp getTimestamp() { - return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_; + public monitoring.Monitoring.KpiList getKpiList() { + return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_; } /** - * .context.Timestamp timestamp = 4; + * .monitoring.KpiList kpi_list = 3; */ @java.lang.Override - public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() { - return getTimestamp(); + public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() { + return getKpiList(); } private byte memoizedIsInitialized = -1; @@ -17544,11 +19745,8 @@ public final class Monitoring { if (!getTextBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, text_); } - if (kpiValue_ != null) { - output.writeMessage(3, getKpiValue()); - } - if (timestamp_ != null) { - output.writeMessage(4, getTimestamp()); + if (kpiList_ != null) { + output.writeMessage(3, getKpiList()); } unknownFields.writeTo(output); } @@ -17566,13 +19764,9 @@ public final class Monitoring { if (!getTextBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, text_); } - if (kpiValue_ != null) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getKpiValue()); - } - if (timestamp_ != null) { + if (kpiList_ != null) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(4, getTimestamp()); + .computeMessageSize(3, getKpiList()); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -17596,15 +19790,10 @@ public final class Monitoring { } if (!getText() .equals(other.getText())) return false; - if (hasKpiValue() != other.hasKpiValue()) return false; - if (hasKpiValue()) { - if (!getKpiValue() - .equals(other.getKpiValue())) return false; - } - if (hasTimestamp() != other.hasTimestamp()) return false; - if (hasTimestamp()) { - if (!getTimestamp() - .equals(other.getTimestamp())) return false; + if (hasKpiList() != other.hasKpiList()) return false; + if (hasKpiList()) { + if (!getKpiList() + .equals(other.getKpiList())) return false; } if (!unknownFields.equals(other.unknownFields)) return false; return true; @@ -17623,13 +19812,9 @@ public final class Monitoring { } hash = (37 * hash) + TEXT_FIELD_NUMBER; hash = (53 * hash) + getText().hashCode(); - if (hasKpiValue()) { - hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER; - hash = (53 * hash) + getKpiValue().hashCode(); - } - if (hasTimestamp()) { - hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; - hash = (53 * hash) + getTimestamp().hashCode(); + if (hasKpiList()) { + hash = (37 * hash) + KPI_LIST_FIELD_NUMBER; + hash = (53 * hash) + getKpiList().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; @@ -17766,23 +19951,17 @@ public final class Monitoring { super.clear(); if (alarmIdBuilder_ == null) { alarmId_ = null; - } else { - alarmId_ = null; - alarmIdBuilder_ = null; - } - text_ = ""; - - if (kpiValueBuilder_ == null) { - kpiValue_ = null; - } else { - kpiValue_ = null; - kpiValueBuilder_ = null; + } else { + alarmId_ = null; + alarmIdBuilder_ = null; } - if (timestampBuilder_ == null) { - timestamp_ = null; + text_ = ""; + + if (kpiListBuilder_ == null) { + kpiList_ = null; } else { - timestamp_ = null; - timestampBuilder_ = null; + kpiList_ = null; + kpiListBuilder_ = null; } return this; } @@ -17816,15 +19995,10 @@ public final class Monitoring { result.alarmId_ = alarmIdBuilder_.build(); } result.text_ = text_; - if (kpiValueBuilder_ == null) { - result.kpiValue_ = kpiValue_; - } else { - result.kpiValue_ = kpiValueBuilder_.build(); - } - if (timestampBuilder_ == null) { - result.timestamp_ = timestamp_; + if (kpiListBuilder_ == null) { + result.kpiList_ = kpiList_; } else { - result.timestamp_ = timestampBuilder_.build(); + result.kpiList_ = kpiListBuilder_.build(); } onBuilt(); return result; @@ -17881,11 +20055,8 @@ public final class Monitoring { text_ = other.text_; onChanged(); } - if (other.hasKpiValue()) { - mergeKpiValue(other.getKpiValue()); - } - if (other.hasTimestamp()) { - mergeTimestamp(other.getTimestamp()); + if (other.hasKpiList()) { + mergeKpiList(other.getKpiList()); } this.mergeUnknownFields(other.unknownFields); onChanged(); @@ -18111,242 +20282,123 @@ public final class Monitoring { return this; } - private monitoring.Monitoring.KpiValue kpiValue_; - private com.google.protobuf.SingleFieldBuilderV3< - monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiValueBuilder_; - /** - * .monitoring.KpiValue kpi_value = 3; - * @return Whether the kpiValue field is set. - */ - public boolean hasKpiValue() { - return kpiValueBuilder_ != null || kpiValue_ != null; - } - /** - * .monitoring.KpiValue kpi_value = 3; - * @return The kpiValue. - */ - public monitoring.Monitoring.KpiValue getKpiValue() { - if (kpiValueBuilder_ == null) { - return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_; - } else { - return kpiValueBuilder_.getMessage(); - } - } - /** - * .monitoring.KpiValue kpi_value = 3; - */ - public Builder setKpiValue(monitoring.Monitoring.KpiValue value) { - if (kpiValueBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - kpiValue_ = value; - onChanged(); - } else { - kpiValueBuilder_.setMessage(value); - } - - return this; - } - /** - * .monitoring.KpiValue kpi_value = 3; - */ - public Builder setKpiValue( - monitoring.Monitoring.KpiValue.Builder builderForValue) { - if (kpiValueBuilder_ == null) { - kpiValue_ = builderForValue.build(); - onChanged(); - } else { - kpiValueBuilder_.setMessage(builderForValue.build()); - } - - return this; - } - /** - * .monitoring.KpiValue kpi_value = 3; - */ - public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) { - if (kpiValueBuilder_ == null) { - if (kpiValue_ != null) { - kpiValue_ = - monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial(); - } else { - kpiValue_ = value; - } - onChanged(); - } else { - kpiValueBuilder_.mergeFrom(value); - } - - return this; - } - /** - * .monitoring.KpiValue kpi_value = 3; - */ - public Builder clearKpiValue() { - if (kpiValueBuilder_ == null) { - kpiValue_ = null; - onChanged(); - } else { - kpiValue_ = null; - kpiValueBuilder_ = null; - } - - return this; - } - /** - * .monitoring.KpiValue kpi_value = 3; - */ - public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() { - - onChanged(); - return getKpiValueFieldBuilder().getBuilder(); - } - /** - * .monitoring.KpiValue kpi_value = 3; - */ - public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() { - if (kpiValueBuilder_ != null) { - return kpiValueBuilder_.getMessageOrBuilder(); - } else { - return kpiValue_ == null ? - monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_; - } - } - /** - * .monitoring.KpiValue kpi_value = 3; - */ - private com.google.protobuf.SingleFieldBuilderV3< - monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> - getKpiValueFieldBuilder() { - if (kpiValueBuilder_ == null) { - kpiValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>( - getKpiValue(), - getParentForChildren(), - isClean()); - kpiValue_ = null; - } - return kpiValueBuilder_; - } - - private context.ContextOuterClass.Timestamp timestamp_; + private monitoring.Monitoring.KpiList kpiList_; private com.google.protobuf.SingleFieldBuilderV3< - context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_; + monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> kpiListBuilder_; /** - * .context.Timestamp timestamp = 4; - * @return Whether the timestamp field is set. + * .monitoring.KpiList kpi_list = 3; + * @return Whether the kpiList field is set. */ - public boolean hasTimestamp() { - return timestampBuilder_ != null || timestamp_ != null; + public boolean hasKpiList() { + return kpiListBuilder_ != null || kpiList_ != null; } /** - * .context.Timestamp timestamp = 4; - * @return The timestamp. + * .monitoring.KpiList kpi_list = 3; + * @return The kpiList. */ - public context.ContextOuterClass.Timestamp getTimestamp() { - if (timestampBuilder_ == null) { - return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_; + public monitoring.Monitoring.KpiList getKpiList() { + if (kpiListBuilder_ == null) { + return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_; } else { - return timestampBuilder_.getMessage(); + return kpiListBuilder_.getMessage(); } } /** - * .context.Timestamp timestamp = 4; + * .monitoring.KpiList kpi_list = 3; */ - public Builder setTimestamp(context.ContextOuterClass.Timestamp value) { - if (timestampBuilder_ == null) { + public Builder setKpiList(monitoring.Monitoring.KpiList value) { + if (kpiListBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - timestamp_ = value; + kpiList_ = value; onChanged(); } else { - timestampBuilder_.setMessage(value); + kpiListBuilder_.setMessage(value); } return this; } /** - * .context.Timestamp timestamp = 4; + * .monitoring.KpiList kpi_list = 3; */ - public Builder setTimestamp( - context.ContextOuterClass.Timestamp.Builder builderForValue) { - if (timestampBuilder_ == null) { - timestamp_ = builderForValue.build(); + public Builder setKpiList( + monitoring.Monitoring.KpiList.Builder builderForValue) { + if (kpiListBuilder_ == null) { + kpiList_ = builderForValue.build(); onChanged(); } else { - timestampBuilder_.setMessage(builderForValue.build()); + kpiListBuilder_.setMessage(builderForValue.build()); } return this; } /** - * .context.Timestamp timestamp = 4; + * .monitoring.KpiList kpi_list = 3; */ - public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) { - if (timestampBuilder_ == null) { - if (timestamp_ != null) { - timestamp_ = - context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial(); + public Builder mergeKpiList(monitoring.Monitoring.KpiList value) { + if (kpiListBuilder_ == null) { + if (kpiList_ != null) { + kpiList_ = + monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial(); } else { - timestamp_ = value; + kpiList_ = value; } onChanged(); } else { - timestampBuilder_.mergeFrom(value); + kpiListBuilder_.mergeFrom(value); } return this; } /** - * .context.Timestamp timestamp = 4; + * .monitoring.KpiList kpi_list = 3; */ - public Builder clearTimestamp() { - if (timestampBuilder_ == null) { - timestamp_ = null; + public Builder clearKpiList() { + if (kpiListBuilder_ == null) { + kpiList_ = null; onChanged(); } else { - timestamp_ = null; - timestampBuilder_ = null; + kpiList_ = null; + kpiListBuilder_ = null; } return this; } /** - * .context.Timestamp timestamp = 4; + * .monitoring.KpiList kpi_list = 3; */ - public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() { + public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() { onChanged(); - return getTimestampFieldBuilder().getBuilder(); + return getKpiListFieldBuilder().getBuilder(); } /** - * .context.Timestamp timestamp = 4; + * .monitoring.KpiList kpi_list = 3; */ - public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() { - if (timestampBuilder_ != null) { - return timestampBuilder_.getMessageOrBuilder(); + public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() { + if (kpiListBuilder_ != null) { + return kpiListBuilder_.getMessageOrBuilder(); } else { - return timestamp_ == null ? - context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_; + return kpiList_ == null ? + monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_; } } /** - * .context.Timestamp timestamp = 4; + * .monitoring.KpiList kpi_list = 3; */ private com.google.protobuf.SingleFieldBuilderV3< - context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> - getTimestampFieldBuilder() { - if (timestampBuilder_ == null) { - timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< - context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>( - getTimestamp(), + monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> + getKpiListFieldBuilder() { + if (kpiListBuilder_ == null) { + kpiListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder>( + getKpiList(), getParentForChildren(), isClean()); - timestamp_ = null; + kpiList_ = null; } - return timestampBuilder_; + return kpiListBuilder_; } @java.lang.Override public final Builder setUnknownFields( @@ -18401,55 +20453,55 @@ public final class Monitoring { } - public interface AlarmIDListOrBuilder extends - // @@protoc_insertion_point(interface_extends:monitoring.AlarmIDList) + public interface AlarmListOrBuilder extends + // @@protoc_insertion_point(interface_extends:monitoring.AlarmList) com.google.protobuf.MessageOrBuilder { /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - java.util.List - getAlarmListList(); + java.util.List + getAlarmDescriptorList(); /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - monitoring.Monitoring.AlarmID getAlarmList(int index); + monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(int index); /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - int getAlarmListCount(); + int getAlarmDescriptorCount(); /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - java.util.List - getAlarmListOrBuilderList(); + java.util.List + getAlarmDescriptorOrBuilderList(); /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - monitoring.Monitoring.AlarmIDOrBuilder getAlarmListOrBuilder( + monitoring.Monitoring.AlarmDescriptorOrBuilder getAlarmDescriptorOrBuilder( int index); } /** - * Protobuf type {@code monitoring.AlarmIDList} + * Protobuf type {@code monitoring.AlarmList} */ - public static final class AlarmIDList extends + public static final class AlarmList extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:monitoring.AlarmIDList) - AlarmIDListOrBuilder { + // @@protoc_insertion_point(message_implements:monitoring.AlarmList) + AlarmListOrBuilder { private static final long serialVersionUID = 0L; - // Use AlarmIDList.newBuilder() to construct. - private AlarmIDList(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use AlarmList.newBuilder() to construct. + private AlarmList(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private AlarmIDList() { - alarmList_ = java.util.Collections.emptyList(); + private AlarmList() { + alarmDescriptor_ = java.util.Collections.emptyList(); } @java.lang.Override @SuppressWarnings({"unused"}) protected java.lang.Object newInstance( UnusedPrivateParameter unused) { - return new AlarmIDList(); + return new AlarmList(); } @java.lang.Override @@ -18457,7 +20509,7 @@ public final class Monitoring { getUnknownFields() { return this.unknownFields; } - private AlarmIDList( + private AlarmList( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { @@ -18478,11 +20530,11 @@ public final class Monitoring { break; case 10: { if (!((mutable_bitField0_ & 0x00000001) != 0)) { - alarmList_ = new java.util.ArrayList(); + alarmDescriptor_ = new java.util.ArrayList(); mutable_bitField0_ |= 0x00000001; } - alarmList_.add( - input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry)); + alarmDescriptor_.add( + input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry)); break; } default: { @@ -18501,7 +20553,7 @@ public final class Monitoring { e).setUnfinishedMessage(this); } finally { if (((mutable_bitField0_ & 0x00000001) != 0)) { - alarmList_ = java.util.Collections.unmodifiableList(alarmList_); + alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_); } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); @@ -18509,55 +20561,55 @@ public final class Monitoring { } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return monitoring.Monitoring.internal_static_monitoring_AlarmIDList_descriptor; + return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return monitoring.Monitoring.internal_static_monitoring_AlarmIDList_fieldAccessorTable + return monitoring.Monitoring.internal_static_monitoring_AlarmList_fieldAccessorTable .ensureFieldAccessorsInitialized( - monitoring.Monitoring.AlarmIDList.class, monitoring.Monitoring.AlarmIDList.Builder.class); + monitoring.Monitoring.AlarmList.class, monitoring.Monitoring.AlarmList.Builder.class); } - public static final int ALARM_LIST_FIELD_NUMBER = 1; - private java.util.List alarmList_; + public static final int ALARM_DESCRIPTOR_FIELD_NUMBER = 1; + private java.util.List alarmDescriptor_; /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ @java.lang.Override - public java.util.List getAlarmListList() { - return alarmList_; + public java.util.List getAlarmDescriptorList() { + return alarmDescriptor_; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ @java.lang.Override - public java.util.List - getAlarmListOrBuilderList() { - return alarmList_; + public java.util.List + getAlarmDescriptorOrBuilderList() { + return alarmDescriptor_; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ @java.lang.Override - public int getAlarmListCount() { - return alarmList_.size(); + public int getAlarmDescriptorCount() { + return alarmDescriptor_.size(); } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ @java.lang.Override - public monitoring.Monitoring.AlarmID getAlarmList(int index) { - return alarmList_.get(index); + public monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(int index) { + return alarmDescriptor_.get(index); } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ @java.lang.Override - public monitoring.Monitoring.AlarmIDOrBuilder getAlarmListOrBuilder( + public monitoring.Monitoring.AlarmDescriptorOrBuilder getAlarmDescriptorOrBuilder( int index) { - return alarmList_.get(index); + return alarmDescriptor_.get(index); } private byte memoizedIsInitialized = -1; @@ -18574,8 +20626,8 @@ public final class Monitoring { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - for (int i = 0; i < alarmList_.size(); i++) { - output.writeMessage(1, alarmList_.get(i)); + for (int i = 0; i < alarmDescriptor_.size(); i++) { + output.writeMessage(1, alarmDescriptor_.get(i)); } unknownFields.writeTo(output); } @@ -18586,9 +20638,9 @@ public final class Monitoring { if (size != -1) return size; size = 0; - for (int i = 0; i < alarmList_.size(); i++) { + for (int i = 0; i < alarmDescriptor_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, alarmList_.get(i)); + .computeMessageSize(1, alarmDescriptor_.get(i)); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -18600,13 +20652,13 @@ public final class Monitoring { if (obj == this) { return true; } - if (!(obj instanceof monitoring.Monitoring.AlarmIDList)) { + if (!(obj instanceof monitoring.Monitoring.AlarmList)) { return super.equals(obj); } - monitoring.Monitoring.AlarmIDList other = (monitoring.Monitoring.AlarmIDList) obj; + monitoring.Monitoring.AlarmList other = (monitoring.Monitoring.AlarmList) obj; - if (!getAlarmListList() - .equals(other.getAlarmListList())) return false; + if (!getAlarmDescriptorList() + .equals(other.getAlarmDescriptorList())) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -18618,78 +20670,78 @@ public final class Monitoring { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - if (getAlarmListCount() > 0) { - hash = (37 * hash) + ALARM_LIST_FIELD_NUMBER; - hash = (53 * hash) + getAlarmListList().hashCode(); + if (getAlarmDescriptorCount() > 0) { + hash = (37 * hash) + ALARM_DESCRIPTOR_FIELD_NUMBER; + hash = (53 * hash) + getAlarmDescriptorList().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; } - public static monitoring.Monitoring.AlarmIDList parseFrom( + public static monitoring.Monitoring.AlarmList parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static monitoring.Monitoring.AlarmIDList parseFrom( + public static monitoring.Monitoring.AlarmList parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static monitoring.Monitoring.AlarmIDList parseFrom( + public static monitoring.Monitoring.AlarmList parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static monitoring.Monitoring.AlarmIDList parseFrom( + public static monitoring.Monitoring.AlarmList parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static monitoring.Monitoring.AlarmIDList parseFrom(byte[] data) + public static monitoring.Monitoring.AlarmList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static monitoring.Monitoring.AlarmIDList parseFrom( + public static monitoring.Monitoring.AlarmList parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static monitoring.Monitoring.AlarmIDList parseFrom(java.io.InputStream input) + public static monitoring.Monitoring.AlarmList parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static monitoring.Monitoring.AlarmIDList parseFrom( + public static monitoring.Monitoring.AlarmList parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - public static monitoring.Monitoring.AlarmIDList parseDelimitedFrom(java.io.InputStream input) + public static monitoring.Monitoring.AlarmList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - public static monitoring.Monitoring.AlarmIDList parseDelimitedFrom( + public static monitoring.Monitoring.AlarmList parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static monitoring.Monitoring.AlarmIDList parseFrom( + public static monitoring.Monitoring.AlarmList parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static monitoring.Monitoring.AlarmIDList parseFrom( + public static monitoring.Monitoring.AlarmList parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -18702,7 +20754,7 @@ public final class Monitoring { public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(monitoring.Monitoring.AlarmIDList prototype) { + public static Builder newBuilder(monitoring.Monitoring.AlarmList prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -18718,26 +20770,26 @@ public final class Monitoring { return builder; } /** - * Protobuf type {@code monitoring.AlarmIDList} + * Protobuf type {@code monitoring.AlarmList} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:monitoring.AlarmIDList) - monitoring.Monitoring.AlarmIDListOrBuilder { + // @@protoc_insertion_point(builder_implements:monitoring.AlarmList) + monitoring.Monitoring.AlarmListOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return monitoring.Monitoring.internal_static_monitoring_AlarmIDList_descriptor; + return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return monitoring.Monitoring.internal_static_monitoring_AlarmIDList_fieldAccessorTable + return monitoring.Monitoring.internal_static_monitoring_AlarmList_fieldAccessorTable .ensureFieldAccessorsInitialized( - monitoring.Monitoring.AlarmIDList.class, monitoring.Monitoring.AlarmIDList.Builder.class); + monitoring.Monitoring.AlarmList.class, monitoring.Monitoring.AlarmList.Builder.class); } - // Construct using monitoring.Monitoring.AlarmIDList.newBuilder() + // Construct using monitoring.Monitoring.AlarmList.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -18750,17 +20802,17 @@ public final class Monitoring { private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3 .alwaysUseFieldBuilders) { - getAlarmListFieldBuilder(); + getAlarmDescriptorFieldBuilder(); } } @java.lang.Override public Builder clear() { super.clear(); - if (alarmListBuilder_ == null) { - alarmList_ = java.util.Collections.emptyList(); + if (alarmDescriptorBuilder_ == null) { + alarmDescriptor_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); } else { - alarmListBuilder_.clear(); + alarmDescriptorBuilder_.clear(); } return this; } @@ -18768,17 +20820,17 @@ public final class Monitoring { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return monitoring.Monitoring.internal_static_monitoring_AlarmIDList_descriptor; + return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor; } @java.lang.Override - public monitoring.Monitoring.AlarmIDList getDefaultInstanceForType() { - return monitoring.Monitoring.AlarmIDList.getDefaultInstance(); + public monitoring.Monitoring.AlarmList getDefaultInstanceForType() { + return monitoring.Monitoring.AlarmList.getDefaultInstance(); } @java.lang.Override - public monitoring.Monitoring.AlarmIDList build() { - monitoring.Monitoring.AlarmIDList result = buildPartial(); + public monitoring.Monitoring.AlarmList build() { + monitoring.Monitoring.AlarmList result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -18786,17 +20838,17 @@ public final class Monitoring { } @java.lang.Override - public monitoring.Monitoring.AlarmIDList buildPartial() { - monitoring.Monitoring.AlarmIDList result = new monitoring.Monitoring.AlarmIDList(this); + public monitoring.Monitoring.AlarmList buildPartial() { + monitoring.Monitoring.AlarmList result = new monitoring.Monitoring.AlarmList(this); int from_bitField0_ = bitField0_; - if (alarmListBuilder_ == null) { + if (alarmDescriptorBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { - alarmList_ = java.util.Collections.unmodifiableList(alarmList_); + alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_); bitField0_ = (bitField0_ & ~0x00000001); } - result.alarmList_ = alarmList_; + result.alarmDescriptor_ = alarmDescriptor_; } else { - result.alarmList_ = alarmListBuilder_.build(); + result.alarmDescriptor_ = alarmDescriptorBuilder_.build(); } onBuilt(); return result; @@ -18836,39 +20888,39 @@ public final class Monitoring { } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof monitoring.Monitoring.AlarmIDList) { - return mergeFrom((monitoring.Monitoring.AlarmIDList)other); + if (other instanceof monitoring.Monitoring.AlarmList) { + return mergeFrom((monitoring.Monitoring.AlarmList)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(monitoring.Monitoring.AlarmIDList other) { - if (other == monitoring.Monitoring.AlarmIDList.getDefaultInstance()) return this; - if (alarmListBuilder_ == null) { - if (!other.alarmList_.isEmpty()) { - if (alarmList_.isEmpty()) { - alarmList_ = other.alarmList_; + public Builder mergeFrom(monitoring.Monitoring.AlarmList other) { + if (other == monitoring.Monitoring.AlarmList.getDefaultInstance()) return this; + if (alarmDescriptorBuilder_ == null) { + if (!other.alarmDescriptor_.isEmpty()) { + if (alarmDescriptor_.isEmpty()) { + alarmDescriptor_ = other.alarmDescriptor_; bitField0_ = (bitField0_ & ~0x00000001); } else { - ensureAlarmListIsMutable(); - alarmList_.addAll(other.alarmList_); + ensureAlarmDescriptorIsMutable(); + alarmDescriptor_.addAll(other.alarmDescriptor_); } onChanged(); } } else { - if (!other.alarmList_.isEmpty()) { - if (alarmListBuilder_.isEmpty()) { - alarmListBuilder_.dispose(); - alarmListBuilder_ = null; - alarmList_ = other.alarmList_; + if (!other.alarmDescriptor_.isEmpty()) { + if (alarmDescriptorBuilder_.isEmpty()) { + alarmDescriptorBuilder_.dispose(); + alarmDescriptorBuilder_ = null; + alarmDescriptor_ = other.alarmDescriptor_; bitField0_ = (bitField0_ & ~0x00000001); - alarmListBuilder_ = + alarmDescriptorBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? - getAlarmListFieldBuilder() : null; + getAlarmDescriptorFieldBuilder() : null; } else { - alarmListBuilder_.addAllMessages(other.alarmList_); + alarmDescriptorBuilder_.addAllMessages(other.alarmDescriptor_); } } } @@ -18887,11 +20939,11 @@ public final class Monitoring { com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - monitoring.Monitoring.AlarmIDList parsedMessage = null; + monitoring.Monitoring.AlarmList parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (monitoring.Monitoring.AlarmIDList) e.getUnfinishedMessage(); + parsedMessage = (monitoring.Monitoring.AlarmList) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { if (parsedMessage != null) { @@ -18902,244 +20954,244 @@ public final class Monitoring { } private int bitField0_; - private java.util.List alarmList_ = + private java.util.List alarmDescriptor_ = java.util.Collections.emptyList(); - private void ensureAlarmListIsMutable() { + private void ensureAlarmDescriptorIsMutable() { if (!((bitField0_ & 0x00000001) != 0)) { - alarmList_ = new java.util.ArrayList(alarmList_); + alarmDescriptor_ = new java.util.ArrayList(alarmDescriptor_); bitField0_ |= 0x00000001; } } private com.google.protobuf.RepeatedFieldBuilderV3< - monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmListBuilder_; + monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmDescriptor.Builder, monitoring.Monitoring.AlarmDescriptorOrBuilder> alarmDescriptorBuilder_; /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public java.util.List getAlarmListList() { - if (alarmListBuilder_ == null) { - return java.util.Collections.unmodifiableList(alarmList_); + public java.util.List getAlarmDescriptorList() { + if (alarmDescriptorBuilder_ == null) { + return java.util.Collections.unmodifiableList(alarmDescriptor_); } else { - return alarmListBuilder_.getMessageList(); + return alarmDescriptorBuilder_.getMessageList(); } } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public int getAlarmListCount() { - if (alarmListBuilder_ == null) { - return alarmList_.size(); + public int getAlarmDescriptorCount() { + if (alarmDescriptorBuilder_ == null) { + return alarmDescriptor_.size(); } else { - return alarmListBuilder_.getCount(); + return alarmDescriptorBuilder_.getCount(); } } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public monitoring.Monitoring.AlarmID getAlarmList(int index) { - if (alarmListBuilder_ == null) { - return alarmList_.get(index); + public monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(int index) { + if (alarmDescriptorBuilder_ == null) { + return alarmDescriptor_.get(index); } else { - return alarmListBuilder_.getMessage(index); + return alarmDescriptorBuilder_.getMessage(index); } } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public Builder setAlarmList( - int index, monitoring.Monitoring.AlarmID value) { - if (alarmListBuilder_ == null) { + public Builder setAlarmDescriptor( + int index, monitoring.Monitoring.AlarmDescriptor value) { + if (alarmDescriptorBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureAlarmListIsMutable(); - alarmList_.set(index, value); + ensureAlarmDescriptorIsMutable(); + alarmDescriptor_.set(index, value); onChanged(); } else { - alarmListBuilder_.setMessage(index, value); + alarmDescriptorBuilder_.setMessage(index, value); } return this; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public Builder setAlarmList( - int index, monitoring.Monitoring.AlarmID.Builder builderForValue) { - if (alarmListBuilder_ == null) { - ensureAlarmListIsMutable(); - alarmList_.set(index, builderForValue.build()); + public Builder setAlarmDescriptor( + int index, monitoring.Monitoring.AlarmDescriptor.Builder builderForValue) { + if (alarmDescriptorBuilder_ == null) { + ensureAlarmDescriptorIsMutable(); + alarmDescriptor_.set(index, builderForValue.build()); onChanged(); } else { - alarmListBuilder_.setMessage(index, builderForValue.build()); + alarmDescriptorBuilder_.setMessage(index, builderForValue.build()); } return this; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public Builder addAlarmList(monitoring.Monitoring.AlarmID value) { - if (alarmListBuilder_ == null) { + public Builder addAlarmDescriptor(monitoring.Monitoring.AlarmDescriptor value) { + if (alarmDescriptorBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureAlarmListIsMutable(); - alarmList_.add(value); + ensureAlarmDescriptorIsMutable(); + alarmDescriptor_.add(value); onChanged(); } else { - alarmListBuilder_.addMessage(value); + alarmDescriptorBuilder_.addMessage(value); } return this; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public Builder addAlarmList( - int index, monitoring.Monitoring.AlarmID value) { - if (alarmListBuilder_ == null) { + public Builder addAlarmDescriptor( + int index, monitoring.Monitoring.AlarmDescriptor value) { + if (alarmDescriptorBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - ensureAlarmListIsMutable(); - alarmList_.add(index, value); + ensureAlarmDescriptorIsMutable(); + alarmDescriptor_.add(index, value); onChanged(); } else { - alarmListBuilder_.addMessage(index, value); + alarmDescriptorBuilder_.addMessage(index, value); } return this; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public Builder addAlarmList( - monitoring.Monitoring.AlarmID.Builder builderForValue) { - if (alarmListBuilder_ == null) { - ensureAlarmListIsMutable(); - alarmList_.add(builderForValue.build()); + public Builder addAlarmDescriptor( + monitoring.Monitoring.AlarmDescriptor.Builder builderForValue) { + if (alarmDescriptorBuilder_ == null) { + ensureAlarmDescriptorIsMutable(); + alarmDescriptor_.add(builderForValue.build()); onChanged(); } else { - alarmListBuilder_.addMessage(builderForValue.build()); + alarmDescriptorBuilder_.addMessage(builderForValue.build()); } return this; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public Builder addAlarmList( - int index, monitoring.Monitoring.AlarmID.Builder builderForValue) { - if (alarmListBuilder_ == null) { - ensureAlarmListIsMutable(); - alarmList_.add(index, builderForValue.build()); + public Builder addAlarmDescriptor( + int index, monitoring.Monitoring.AlarmDescriptor.Builder builderForValue) { + if (alarmDescriptorBuilder_ == null) { + ensureAlarmDescriptorIsMutable(); + alarmDescriptor_.add(index, builderForValue.build()); onChanged(); } else { - alarmListBuilder_.addMessage(index, builderForValue.build()); + alarmDescriptorBuilder_.addMessage(index, builderForValue.build()); } return this; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public Builder addAllAlarmList( - java.lang.Iterable values) { - if (alarmListBuilder_ == null) { - ensureAlarmListIsMutable(); + public Builder addAllAlarmDescriptor( + java.lang.Iterable values) { + if (alarmDescriptorBuilder_ == null) { + ensureAlarmDescriptorIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( - values, alarmList_); + values, alarmDescriptor_); onChanged(); } else { - alarmListBuilder_.addAllMessages(values); + alarmDescriptorBuilder_.addAllMessages(values); } return this; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public Builder clearAlarmList() { - if (alarmListBuilder_ == null) { - alarmList_ = java.util.Collections.emptyList(); + public Builder clearAlarmDescriptor() { + if (alarmDescriptorBuilder_ == null) { + alarmDescriptor_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); onChanged(); } else { - alarmListBuilder_.clear(); + alarmDescriptorBuilder_.clear(); } return this; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public Builder removeAlarmList(int index) { - if (alarmListBuilder_ == null) { - ensureAlarmListIsMutable(); - alarmList_.remove(index); + public Builder removeAlarmDescriptor(int index) { + if (alarmDescriptorBuilder_ == null) { + ensureAlarmDescriptorIsMutable(); + alarmDescriptor_.remove(index); onChanged(); } else { - alarmListBuilder_.remove(index); + alarmDescriptorBuilder_.remove(index); } return this; } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public monitoring.Monitoring.AlarmID.Builder getAlarmListBuilder( + public monitoring.Monitoring.AlarmDescriptor.Builder getAlarmDescriptorBuilder( int index) { - return getAlarmListFieldBuilder().getBuilder(index); + return getAlarmDescriptorFieldBuilder().getBuilder(index); } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public monitoring.Monitoring.AlarmIDOrBuilder getAlarmListOrBuilder( + public monitoring.Monitoring.AlarmDescriptorOrBuilder getAlarmDescriptorOrBuilder( int index) { - if (alarmListBuilder_ == null) { - return alarmList_.get(index); } else { - return alarmListBuilder_.getMessageOrBuilder(index); + if (alarmDescriptorBuilder_ == null) { + return alarmDescriptor_.get(index); } else { + return alarmDescriptorBuilder_.getMessageOrBuilder(index); } } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public java.util.List - getAlarmListOrBuilderList() { - if (alarmListBuilder_ != null) { - return alarmListBuilder_.getMessageOrBuilderList(); + public java.util.List + getAlarmDescriptorOrBuilderList() { + if (alarmDescriptorBuilder_ != null) { + return alarmDescriptorBuilder_.getMessageOrBuilderList(); } else { - return java.util.Collections.unmodifiableList(alarmList_); + return java.util.Collections.unmodifiableList(alarmDescriptor_); } } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public monitoring.Monitoring.AlarmID.Builder addAlarmListBuilder() { - return getAlarmListFieldBuilder().addBuilder( - monitoring.Monitoring.AlarmID.getDefaultInstance()); + public monitoring.Monitoring.AlarmDescriptor.Builder addAlarmDescriptorBuilder() { + return getAlarmDescriptorFieldBuilder().addBuilder( + monitoring.Monitoring.AlarmDescriptor.getDefaultInstance()); } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public monitoring.Monitoring.AlarmID.Builder addAlarmListBuilder( + public monitoring.Monitoring.AlarmDescriptor.Builder addAlarmDescriptorBuilder( int index) { - return getAlarmListFieldBuilder().addBuilder( - index, monitoring.Monitoring.AlarmID.getDefaultInstance()); + return getAlarmDescriptorFieldBuilder().addBuilder( + index, monitoring.Monitoring.AlarmDescriptor.getDefaultInstance()); } /** - * repeated .monitoring.AlarmID alarm_list = 1; + * repeated .monitoring.AlarmDescriptor alarm_descriptor = 1; */ - public java.util.List - getAlarmListBuilderList() { - return getAlarmListFieldBuilder().getBuilderList(); + public java.util.List + getAlarmDescriptorBuilderList() { + return getAlarmDescriptorFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> - getAlarmListFieldBuilder() { - if (alarmListBuilder_ == null) { - alarmListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder>( - alarmList_, + monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmDescriptor.Builder, monitoring.Monitoring.AlarmDescriptorOrBuilder> + getAlarmDescriptorFieldBuilder() { + if (alarmDescriptorBuilder_ == null) { + alarmDescriptorBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmDescriptor.Builder, monitoring.Monitoring.AlarmDescriptorOrBuilder>( + alarmDescriptor_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); - alarmList_ = null; + alarmDescriptor_ = null; } - return alarmListBuilder_; + return alarmDescriptorBuilder_; } @java.lang.Override public final Builder setUnknownFields( @@ -19154,41 +21206,41 @@ public final class Monitoring { } - // @@protoc_insertion_point(builder_scope:monitoring.AlarmIDList) + // @@protoc_insertion_point(builder_scope:monitoring.AlarmList) } - // @@protoc_insertion_point(class_scope:monitoring.AlarmIDList) - private static final monitoring.Monitoring.AlarmIDList DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:monitoring.AlarmList) + private static final monitoring.Monitoring.AlarmList DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmIDList(); + DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmList(); } - public static monitoring.Monitoring.AlarmIDList getDefaultInstance() { + public static monitoring.Monitoring.AlarmList getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public AlarmIDList parsePartialFrom( + public AlarmList parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new AlarmIDList(input, extensionRegistry); + return new AlarmList(input, extensionRegistry); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public monitoring.Monitoring.AlarmIDList getDefaultInstanceForType() { + public monitoring.Monitoring.AlarmList getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -19209,6 +21261,21 @@ public final class Monitoring { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_KpiQuery_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_monitoring_RawKpi_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_monitoring_RawKpi_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_monitoring_RawKpiList_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_monitoring_RawKpiList_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_monitoring_RawKpiTable_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_monitoring_RawKpiTable_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_KpiId_descriptor; private static final @@ -19255,10 +21322,10 @@ public final class Monitoring { com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_SubsResponse_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_monitoring_SubsIDList_descriptor; + internal_static_monitoring_SubsList_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_monitoring_SubsIDList_fieldAccessorTable; + internal_static_monitoring_SubsList_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_AlarmDescriptor_descriptor; private static final @@ -19280,10 +21347,10 @@ public final class Monitoring { com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_AlarmResponse_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor - internal_static_monitoring_AlarmIDList_descriptor; + internal_static_monitoring_AlarmList_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_monitoring_AlarmIDList_fieldAccessorTable; + internal_static_monitoring_AlarmList_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { @@ -19294,7 +21361,7 @@ public final class Monitoring { static { java.lang.String[] descriptorData = { "\n\020monitoring.proto\022\nmonitoring\032\rcontext." + - "proto\032\026kpi_sample_types.proto\"\311\002\n\rKpiDes" + + "proto\032\026kpi_sample_types.proto\"\367\002\n\rKpiDes" + "criptor\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.Kpi" + "Id\022\027\n\017kpi_description\030\002 \001(\t\022&\n\013kpi_id_li" + "st\030\003 \003(\0132\021.monitoring.KpiId\0228\n\017kpi_sampl" + @@ -19303,86 +21370,92 @@ public final class Monitoring { "eId\022(\n\013endpoint_id\030\006 \001(\0132\023.context.EndPo" + "intId\022&\n\nservice_id\030\007 \001(\0132\022.context.Serv" + "iceId\022\"\n\010slice_id\030\010 \001(\0132\020.context.SliceI" + - "d\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001 \001(\0132\021" + - ".monitoring.KpiId\022\033\n\023monitoring_window_s" + - "\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\323\001\n\010KpiQ" + - "uery\022!\n\006kpi_id\030\001 \003(\0132\021.monitoring.KpiId\022" + - "\033\n\023monitoring_window_s\030\002 \001(\002\022\027\n\017sampling" + - "_rate_s\030\003 \001(\002\022\026\n\016last_n_samples\030\004 \001(\r\022+\n" + - "\017start_timestamp\030\005 \001(\0132\022.context.Timesta" + - "mp\022)\n\rend_timestamp\030\006 \001(\0132\022.context.Time" + - "stamp\"&\n\005KpiId\022\035\n\006kpi_id\030\001 \001(\0132\r.context" + - ".Uuid\"x\n\003Kpi\022!\n\006kpi_id\030\001 \001(\0132\021.monitorin" + - "g.KpiId\022%\n\ttimestamp\030\002 \001(\0132\022.context.Tim" + - "estamp\022\'\n\tkpi_value\030\003 \001(\0132\024.monitoring.K" + - "piValue\"\250\001\n\rKpiValueRange\022)\n\013kpiMinValue" + - "\030\001 \001(\0132\024.monitoring.KpiValue\022)\n\013kpiMaxVa" + - "lue\030\002 \001(\0132\024.monitoring.KpiValue\022\017\n\007inRan" + - "ge\030\003 \001(\010\022\027\n\017includeMinValue\030\004 \001(\010\022\027\n\017inc" + - "ludeMaxValue\030\005 \001(\010\"\241\001\n\010KpiValue\022\022\n\010int32" + - "Val\030\001 \001(\005H\000\022\023\n\tuint32Val\030\002 \001(\rH\000\022\022\n\010int6" + - "4Val\030\003 \001(\003H\000\022\023\n\tuint64Val\030\004 \001(\004H\000\022\022\n\010flo" + - "atVal\030\005 \001(\002H\000\022\023\n\tstringVal\030\006 \001(\tH\000\022\021\n\007bo" + - "olVal\030\007 \001(\010H\000B\007\n\005value\",\n\007KpiList\022!\n\010kpi" + - "_list\030\001 \003(\0132\017.monitoring.Kpi\"K\n\021KpiDescr" + - "iptorList\0226\n\023kpi_descriptor_list\030\001 \003(\0132\031" + - ".monitoring.KpiDescriptor\"\362\001\n\016SubsDescri" + - "ptor\022+\n\007subs_id\030\001 \001(\0132\032.monitoring.Subsc" + - "riptionID\022!\n\006kpi_id\030\002 \001(\0132\021.monitoring.K" + - "piId\022\033\n\023sampling_duration_s\030\003 \001(\002\022\033\n\023sam" + - "pling_interval_s\030\004 \001(\002\022+\n\017start_timestam" + - "p\030\005 \001(\0132\022.context.Timestamp\022)\n\rend_times" + - "tamp\030\006 \001(\0132\022.context.Timestamp\"0\n\016Subscr" + - "iptionID\022\036\n\007subs_id\030\001 \001(\0132\r.context.Uuid" + - "\"b\n\014SubsResponse\022+\n\007subs_id\030\001 \001(\0132\032.moni" + - "toring.SubscriptionID\022%\n\010kpi_list\030\002 \003(\0132" + - "\023.monitoring.KpiList\";\n\nSubsIDList\022-\n\tsu" + - "bs_list\030\001 \003(\0132\032.monitoring.SubscriptionI" + - "D\"\337\001\n\017AlarmDescriptor\022%\n\010alarm_id\030\001 \001(\0132" + - "\023.monitoring.AlarmID\022\031\n\021alarm_descriptio" + - "n\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022!\n\006kpi_id\030\004 \003(\0132\021." + - "monitoring.KpiId\0222\n\017kpi_value_range\030\005 \003(" + - "\0132\031.monitoring.KpiValueRange\022%\n\ttimestam" + - "p\030\006 \001(\0132\022.context.Timestamp\"*\n\007AlarmID\022\037" + - "\n\010alarm_id\030\001 \001(\0132\r.context.Uuid\"|\n\021Alarm" + - "Subscription\022$\n\007alarmID\030\001 \001(\0132\023.monitori" + - "ng.AlarmID\022\036\n\026subscription_timeout_s\030\002 \001" + - "(\002\022!\n\031subscription_frequency_ms\030\003 \001(\002\"\224\001" + - "\n\rAlarmResponse\022%\n\010alarm_id\030\001 \001(\0132\023.moni" + - "toring.AlarmID\022\014\n\004text\030\002 \001(\t\022\'\n\tkpi_valu" + - "e\030\003 \001(\0132\024.monitoring.KpiValue\022%\n\ttimesta" + - "mp\030\004 \001(\0132\022.context.Timestamp\"6\n\013AlarmIDL" + - "ist\022\'\n\nalarm_list\030\001 \003(\0132\023.monitoring.Ala" + - "rmID2\233\t\n\021MonitoringService\0228\n\006SetKpi\022\031.m" + - "onitoring.KpiDescriptor\032\021.monitoring.Kpi" + - "Id\"\000\0220\n\tDeleteKpi\022\021.monitoring.KpiId\032\016.c" + - "ontext.Empty\"\000\022B\n\020GetKpiDescriptor\022\021.mon" + - "itoring.KpiId\032\031.monitoring.KpiDescriptor" + - "\"\000\022G\n\024GetKpiDescriptorList\022\016.context.Emp" + - "ty\032\035.monitoring.KpiDescriptorList\"\000\022/\n\nI" + - "ncludeKpi\022\017.monitoring.Kpi\032\016.context.Emp" + - "ty\"\000\022=\n\nMonitorKpi\022\035.monitoring.MonitorK" + - "piRequest\032\016.context.Empty\"\000\022;\n\014QueryKpiD" + - "ata\022\024.monitoring.KpiQuery\032\023.monitoring.K" + - "piList\"\000\022I\n\022SetKpiSubscription\022\032.monitor" + - "ing.SubsDescriptor\032\023.monitoring.KpiList\"" + + "d\022,\n\rconnection_id\030\t \001(\0132\025.context.Conne" + + "ctionId\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001" + + " \001(\0132\021.monitoring.KpiId\022\033\n\023monitoring_wi" + + "ndow_s\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\273\001" + + "\n\010KpiQuery\022\"\n\007kpi_ids\030\001 \003(\0132\021.monitoring" + + ".KpiId\022\033\n\023monitoring_window_s\030\002 \001(\002\022\026\n\016l" + + "ast_n_samples\030\003 \001(\r\022+\n\017start_timestamp\030\004" + + " \001(\0132\022.context.Timestamp\022)\n\rend_timestam" + + "p\030\005 \001(\0132\022.context.Timestamp\"X\n\006RawKpi\022%\n" + + "\ttimestamp\030\001 \001(\0132\022.context.Timestamp\022\'\n\t" + + "kpi_value\030\002 \001(\0132\024.monitoring.KpiValue\"U\n" + + "\nRawKpiList\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring" + + ".KpiId\022$\n\010raw_kpis\030\002 \003(\0132\022.monitoring.Ra" + + "wKpi\"<\n\013RawKpiTable\022-\n\rraw_kpi_lists\030\001 \003" + + "(\0132\026.monitoring.RawKpiList\"&\n\005KpiId\022\035\n\006k" + + "pi_id\030\001 \001(\0132\r.context.Uuid\"x\n\003Kpi\022!\n\006kpi" + + "_id\030\001 \001(\0132\021.monitoring.KpiId\022%\n\ttimestam" + + "p\030\002 \001(\0132\022.context.Timestamp\022\'\n\tkpi_value" + + "\030\003 \001(\0132\024.monitoring.KpiValue\"\250\001\n\rKpiValu" + + "eRange\022)\n\013kpiMinValue\030\001 \001(\0132\024.monitoring" + + ".KpiValue\022)\n\013kpiMaxValue\030\002 \001(\0132\024.monitor" + + "ing.KpiValue\022\017\n\007inRange\030\003 \001(\010\022\027\n\017include" + + "MinValue\030\004 \001(\010\022\027\n\017includeMaxValue\030\005 \001(\010\"" + + "\241\001\n\010KpiValue\022\022\n\010int32Val\030\001 \001(\005H\000\022\023\n\tuint" + + "32Val\030\002 \001(\rH\000\022\022\n\010int64Val\030\003 \001(\003H\000\022\023\n\tuin" + + "t64Val\030\004 \001(\004H\000\022\022\n\010floatVal\030\005 \001(\002H\000\022\023\n\tst" + + "ringVal\030\006 \001(\tH\000\022\021\n\007boolVal\030\007 \001(\010H\000B\007\n\005va" + + "lue\"\'\n\007KpiList\022\034\n\003kpi\030\001 \003(\0132\017.monitoring" + + ".Kpi\"K\n\021KpiDescriptorList\0226\n\023kpi_descrip" + + "tor_list\030\001 \003(\0132\031.monitoring.KpiDescripto" + + "r\"\362\001\n\016SubsDescriptor\022+\n\007subs_id\030\001 \001(\0132\032." + + "monitoring.SubscriptionID\022!\n\006kpi_id\030\002 \001(" + + "\0132\021.monitoring.KpiId\022\033\n\023sampling_duratio" + + "n_s\030\003 \001(\002\022\033\n\023sampling_interval_s\030\004 \001(\002\022+" + + "\n\017start_timestamp\030\005 \001(\0132\022.context.Timest" + + "amp\022)\n\rend_timestamp\030\006 \001(\0132\022.context.Tim" + + "estamp\"0\n\016SubscriptionID\022\036\n\007subs_id\030\001 \001(" + + "\0132\r.context.Uuid\"b\n\014SubsResponse\022+\n\007subs" + + "_id\030\001 \001(\0132\032.monitoring.SubscriptionID\022%\n" + + "\010kpi_list\030\002 \001(\0132\023.monitoring.KpiList\"?\n\010" + + "SubsList\0223\n\017subs_descriptor\030\001 \003(\0132\032.moni" + + "toring.SubsDescriptor\"\337\001\n\017AlarmDescripto" + + "r\022%\n\010alarm_id\030\001 \001(\0132\023.monitoring.AlarmID" + + "\022\031\n\021alarm_description\030\002 \001(\t\022\014\n\004name\030\003 \001(" + + "\t\022!\n\006kpi_id\030\004 \001(\0132\021.monitoring.KpiId\0222\n\017" + + "kpi_value_range\030\005 \001(\0132\031.monitoring.KpiVa" + + "lueRange\022%\n\ttimestamp\030\006 \001(\0132\022.context.Ti" + + "mestamp\"*\n\007AlarmID\022\037\n\010alarm_id\030\001 \001(\0132\r.c" + + "ontext.Uuid\"}\n\021AlarmSubscription\022%\n\010alar" + + "m_id\030\001 \001(\0132\023.monitoring.AlarmID\022\036\n\026subsc" + + "ription_timeout_s\030\002 \001(\002\022!\n\031subscription_" + + "frequency_ms\030\003 \001(\002\"k\n\rAlarmResponse\022%\n\010a" + + "larm_id\030\001 \001(\0132\023.monitoring.AlarmID\022\014\n\004te" + + "xt\030\002 \001(\t\022%\n\010kpi_list\030\003 \001(\0132\023.monitoring." + + "KpiList\"B\n\tAlarmList\0225\n\020alarm_descriptor" + + "\030\001 \003(\0132\033.monitoring.AlarmDescriptor2\234\t\n\021" + + "MonitoringService\0228\n\006SetKpi\022\031.monitoring" + + ".KpiDescriptor\032\021.monitoring.KpiId\"\000\0220\n\tD" + + "eleteKpi\022\021.monitoring.KpiId\032\016.context.Em" + + "pty\"\000\022B\n\020GetKpiDescriptor\022\021.monitoring.K" + + "piId\032\031.monitoring.KpiDescriptor\"\000\022G\n\024Get" + + "KpiDescriptorList\022\016.context.Empty\032\035.moni" + + "toring.KpiDescriptorList\"\000\022/\n\nIncludeKpi" + + "\022\017.monitoring.Kpi\032\016.context.Empty\"\000\022=\n\nM" + + "onitorKpi\022\035.monitoring.MonitorKpiRequest" + + "\032\016.context.Empty\"\000\022?\n\014QueryKpiData\022\024.mon" + + "itoring.KpiQuery\032\027.monitoring.RawKpiTabl" + + "e\"\000\022N\n\022SetKpiSubscription\022\032.monitoring.S" + + "ubsDescriptor\032\030.monitoring.SubsResponse\"" + "\0000\001\022M\n\021GetSubsDescriptor\022\032.monitoring.Su" + "bscriptionID\032\032.monitoring.SubsDescriptor" + - "\"\000\022<\n\020GetSubscriptions\022\016.context.Empty\032\026" + - ".monitoring.SubsIDList\"\000\022B\n\022DeleteSubscr" + - "iption\022\032.monitoring.SubscriptionID\032\016.con" + - "text.Empty\"\000\022A\n\013SetKpiAlarm\022\033.monitoring" + - ".AlarmDescriptor\032\023.monitoring.AlarmID\"\000\022" + - "6\n\tGetAlarms\022\016.context.Empty\032\027.monitorin" + - "g.AlarmIDList\"\000\022H\n\022GetAlarmDescriptor\022\023." + - "monitoring.AlarmID\032\033.monitoring.AlarmDes" + - "criptor\"\000\022V\n\026GetAlarmResponseStream\022\035.mo" + - "nitoring.AlarmSubscription\032\031.monitoring." + - "AlarmResponse\"\0000\001\0224\n\013DeleteAlarm\022\023.monit" + - "oring.AlarmID\032\016.context.Empty\"\000\0226\n\014GetSt" + - "reamKpi\022\021.monitoring.KpiId\032\017.monitoring." + - "Kpi\"\0000\001\0229\n\rGetInstantKpi\022\021.monitoring.Kp" + - "iId\032\023.monitoring.KpiList\"\000b\006proto3" + "\"\000\022:\n\020GetSubscriptions\022\016.context.Empty\032\024" + + ".monitoring.SubsList\"\000\022B\n\022DeleteSubscrip" + + "tion\022\032.monitoring.SubscriptionID\032\016.conte" + + "xt.Empty\"\000\022A\n\013SetKpiAlarm\022\033.monitoring.A" + + "larmDescriptor\032\023.monitoring.AlarmID\"\000\0224\n" + + "\tGetAlarms\022\016.context.Empty\032\025.monitoring." + + "AlarmList\"\000\022H\n\022GetAlarmDescriptor\022\023.moni" + + "toring.AlarmID\032\033.monitoring.AlarmDescrip" + + "tor\"\000\022V\n\026GetAlarmResponseStream\022\035.monito" + + "ring.AlarmSubscription\032\031.monitoring.Alar" + + "mResponse\"\0000\001\0224\n\013DeleteAlarm\022\023.monitorin" + + "g.AlarmID\032\016.context.Empty\"\000\0226\n\014GetStream" + + "Kpi\022\021.monitoring.KpiId\032\017.monitoring.Kpi\"" + + "\0000\001\0225\n\rGetInstantKpi\022\021.monitoring.KpiId\032" + + "\017.monitoring.Kpi\"\000b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -19395,7 +21468,7 @@ public final class Monitoring { internal_static_monitoring_KpiDescriptor_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_KpiDescriptor_descriptor, - new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", }); + new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", "ConnectionId", }); internal_static_monitoring_MonitorKpiRequest_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable = new @@ -19407,97 +21480,115 @@ public final class Monitoring { internal_static_monitoring_KpiQuery_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_KpiQuery_descriptor, - new java.lang.String[] { "KpiId", "MonitoringWindowS", "SamplingRateS", "LastNSamples", "StartTimestamp", "EndTimestamp", }); - internal_static_monitoring_KpiId_descriptor = + new java.lang.String[] { "KpiIds", "MonitoringWindowS", "LastNSamples", "StartTimestamp", "EndTimestamp", }); + internal_static_monitoring_RawKpi_descriptor = getDescriptor().getMessageTypes().get(3); + internal_static_monitoring_RawKpi_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_monitoring_RawKpi_descriptor, + new java.lang.String[] { "Timestamp", "KpiValue", }); + internal_static_monitoring_RawKpiList_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_monitoring_RawKpiList_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_monitoring_RawKpiList_descriptor, + new java.lang.String[] { "KpiId", "RawKpis", }); + internal_static_monitoring_RawKpiTable_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_monitoring_RawKpiTable_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_monitoring_RawKpiTable_descriptor, + new java.lang.String[] { "RawKpiLists", }); + internal_static_monitoring_KpiId_descriptor = + getDescriptor().getMessageTypes().get(6); internal_static_monitoring_KpiId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_KpiId_descriptor, new java.lang.String[] { "KpiId", }); internal_static_monitoring_Kpi_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(7); internal_static_monitoring_Kpi_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_Kpi_descriptor, new java.lang.String[] { "KpiId", "Timestamp", "KpiValue", }); internal_static_monitoring_KpiValueRange_descriptor = - getDescriptor().getMessageTypes().get(5); + getDescriptor().getMessageTypes().get(8); internal_static_monitoring_KpiValueRange_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_KpiValueRange_descriptor, new java.lang.String[] { "KpiMinValue", "KpiMaxValue", "InRange", "IncludeMinValue", "IncludeMaxValue", }); internal_static_monitoring_KpiValue_descriptor = - getDescriptor().getMessageTypes().get(6); + getDescriptor().getMessageTypes().get(9); internal_static_monitoring_KpiValue_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_KpiValue_descriptor, new java.lang.String[] { "Int32Val", "Uint32Val", "Int64Val", "Uint64Val", "FloatVal", "StringVal", "BoolVal", "Value", }); internal_static_monitoring_KpiList_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(10); internal_static_monitoring_KpiList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_KpiList_descriptor, - new java.lang.String[] { "KpiList", }); + new java.lang.String[] { "Kpi", }); internal_static_monitoring_KpiDescriptorList_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(11); internal_static_monitoring_KpiDescriptorList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_KpiDescriptorList_descriptor, new java.lang.String[] { "KpiDescriptorList", }); internal_static_monitoring_SubsDescriptor_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(12); internal_static_monitoring_SubsDescriptor_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_SubsDescriptor_descriptor, new java.lang.String[] { "SubsId", "KpiId", "SamplingDurationS", "SamplingIntervalS", "StartTimestamp", "EndTimestamp", }); internal_static_monitoring_SubscriptionID_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(13); internal_static_monitoring_SubscriptionID_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_SubscriptionID_descriptor, new java.lang.String[] { "SubsId", }); internal_static_monitoring_SubsResponse_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(14); internal_static_monitoring_SubsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_SubsResponse_descriptor, new java.lang.String[] { "SubsId", "KpiList", }); - internal_static_monitoring_SubsIDList_descriptor = - getDescriptor().getMessageTypes().get(12); - internal_static_monitoring_SubsIDList_fieldAccessorTable = new + internal_static_monitoring_SubsList_descriptor = + getDescriptor().getMessageTypes().get(15); + internal_static_monitoring_SubsList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_monitoring_SubsIDList_descriptor, - new java.lang.String[] { "SubsList", }); + internal_static_monitoring_SubsList_descriptor, + new java.lang.String[] { "SubsDescriptor", }); internal_static_monitoring_AlarmDescriptor_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(16); internal_static_monitoring_AlarmDescriptor_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_AlarmDescriptor_descriptor, new java.lang.String[] { "AlarmId", "AlarmDescription", "Name", "KpiId", "KpiValueRange", "Timestamp", }); internal_static_monitoring_AlarmID_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(17); internal_static_monitoring_AlarmID_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_AlarmID_descriptor, new java.lang.String[] { "AlarmId", }); internal_static_monitoring_AlarmSubscription_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(18); internal_static_monitoring_AlarmSubscription_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_AlarmSubscription_descriptor, - new java.lang.String[] { "AlarmID", "SubscriptionTimeoutS", "SubscriptionFrequencyMs", }); + new java.lang.String[] { "AlarmId", "SubscriptionTimeoutS", "SubscriptionFrequencyMs", }); internal_static_monitoring_AlarmResponse_descriptor = - getDescriptor().getMessageTypes().get(16); + getDescriptor().getMessageTypes().get(19); internal_static_monitoring_AlarmResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_monitoring_AlarmResponse_descriptor, - new java.lang.String[] { "AlarmId", "Text", "KpiValue", "Timestamp", }); - internal_static_monitoring_AlarmIDList_descriptor = - getDescriptor().getMessageTypes().get(17); - internal_static_monitoring_AlarmIDList_fieldAccessorTable = new + new java.lang.String[] { "AlarmId", "Text", "KpiList", }); + internal_static_monitoring_AlarmList_descriptor = + getDescriptor().getMessageTypes().get(20); + internal_static_monitoring_AlarmList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_monitoring_AlarmIDList_descriptor, - new java.lang.String[] { "AlarmList", }); + internal_static_monitoring_AlarmList_descriptor, + new java.lang.String[] { "AlarmDescriptor", }); context.ContextOuterClass.getDescriptor(); kpi_sample_types.KpiSampleTypes.getDescriptor(); } diff --git a/src/automation/target/generated-sources/grpc/monitoring/MonitoringService.java b/src/automation/target/generated-sources/grpc/monitoring/MonitoringService.java index 6372600680d57d0b351e7dd67b88c84f9d8e8cff..0ce30559b2c0a1bb6236431482d6b99b82cf0842 100644 --- a/src/automation/target/generated-sources/grpc/monitoring/MonitoringService.java +++ b/src/automation/target/generated-sources/grpc/monitoring/MonitoringService.java @@ -20,26 +20,26 @@ public interface MonitoringService extends MutinyService { io.smallrye.mutiny.Uni monitorKpi(monitoring.Monitoring.MonitorKpiRequest request); - io.smallrye.mutiny.Uni queryKpiData(monitoring.Monitoring.KpiQuery request); + io.smallrye.mutiny.Uni queryKpiData(monitoring.Monitoring.KpiQuery request); io.smallrye.mutiny.Uni getSubsDescriptor(monitoring.Monitoring.SubscriptionID request); - io.smallrye.mutiny.Uni getSubscriptions(context.ContextOuterClass.Empty request); + io.smallrye.mutiny.Uni getSubscriptions(context.ContextOuterClass.Empty request); io.smallrye.mutiny.Uni deleteSubscription(monitoring.Monitoring.SubscriptionID request); io.smallrye.mutiny.Uni setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request); - io.smallrye.mutiny.Uni getAlarms(context.ContextOuterClass.Empty request); + io.smallrye.mutiny.Uni getAlarms(context.ContextOuterClass.Empty request); io.smallrye.mutiny.Uni getAlarmDescriptor(monitoring.Monitoring.AlarmID request); io.smallrye.mutiny.Uni deleteAlarm(monitoring.Monitoring.AlarmID request); - io.smallrye.mutiny.Uni getInstantKpi(monitoring.Monitoring.KpiId request); + io.smallrye.mutiny.Uni getInstantKpi(monitoring.Monitoring.KpiId request); - io.smallrye.mutiny.Multi setKpiSubscription(monitoring.Monitoring.SubsDescriptor request); + io.smallrye.mutiny.Multi setKpiSubscription(monitoring.Monitoring.SubsDescriptor request); io.smallrye.mutiny.Multi getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request); diff --git a/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java b/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java index 21f7f48acd6b6870584133dc3d665f681e78cf5e..cbc984e7132bdbf22c9b99a510106c5c6f4cbda7 100644 --- a/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java +++ b/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java @@ -64,7 +64,7 @@ public class MonitoringServiceBean extends MutinyMonitoringServiceGrpc.Monitorin } } @Override - public io.smallrye.mutiny.Uni queryKpiData(monitoring.Monitoring.KpiQuery request) { + public io.smallrye.mutiny.Uni queryKpiData(monitoring.Monitoring.KpiQuery request) { try { return delegate.queryKpiData(request); } catch (UnsupportedOperationException e) { @@ -80,7 +80,7 @@ public class MonitoringServiceBean extends MutinyMonitoringServiceGrpc.Monitorin } } @Override - public io.smallrye.mutiny.Uni getSubscriptions(context.ContextOuterClass.Empty request) { + public io.smallrye.mutiny.Uni getSubscriptions(context.ContextOuterClass.Empty request) { try { return delegate.getSubscriptions(request); } catch (UnsupportedOperationException e) { @@ -104,7 +104,7 @@ public class MonitoringServiceBean extends MutinyMonitoringServiceGrpc.Monitorin } } @Override - public io.smallrye.mutiny.Uni getAlarms(context.ContextOuterClass.Empty request) { + public io.smallrye.mutiny.Uni getAlarms(context.ContextOuterClass.Empty request) { try { return delegate.getAlarms(request); } catch (UnsupportedOperationException e) { @@ -128,7 +128,7 @@ public class MonitoringServiceBean extends MutinyMonitoringServiceGrpc.Monitorin } } @Override - public io.smallrye.mutiny.Uni getInstantKpi(monitoring.Monitoring.KpiId request) { + public io.smallrye.mutiny.Uni getInstantKpi(monitoring.Monitoring.KpiId request) { try { return delegate.getInstantKpi(request); } catch (UnsupportedOperationException e) { @@ -137,7 +137,7 @@ public class MonitoringServiceBean extends MutinyMonitoringServiceGrpc.Monitorin } @Override - public io.smallrye.mutiny.Multi setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) { + public io.smallrye.mutiny.Multi setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) { try { return delegate.setKpiSubscription(request); } catch (UnsupportedOperationException e) { diff --git a/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java b/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java index 6b6dc38645931ad94287b4151019c3b42a1c098d..0e8ff5d1b8929694b49548984cd7d53f9c8f68a4 100644 --- a/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java +++ b/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java @@ -45,7 +45,7 @@ public class MonitoringServiceClient implements MonitoringService, MutinyClient< return stub.monitorKpi(request); } @Override - public io.smallrye.mutiny.Uni queryKpiData(monitoring.Monitoring.KpiQuery request) { + public io.smallrye.mutiny.Uni queryKpiData(monitoring.Monitoring.KpiQuery request) { return stub.queryKpiData(request); } @Override @@ -53,7 +53,7 @@ public class MonitoringServiceClient implements MonitoringService, MutinyClient< return stub.getSubsDescriptor(request); } @Override - public io.smallrye.mutiny.Uni getSubscriptions(context.ContextOuterClass.Empty request) { + public io.smallrye.mutiny.Uni getSubscriptions(context.ContextOuterClass.Empty request) { return stub.getSubscriptions(request); } @Override @@ -65,7 +65,7 @@ public class MonitoringServiceClient implements MonitoringService, MutinyClient< return stub.setKpiAlarm(request); } @Override - public io.smallrye.mutiny.Uni getAlarms(context.ContextOuterClass.Empty request) { + public io.smallrye.mutiny.Uni getAlarms(context.ContextOuterClass.Empty request) { return stub.getAlarms(request); } @Override @@ -77,12 +77,12 @@ public class MonitoringServiceClient implements MonitoringService, MutinyClient< return stub.deleteAlarm(request); } @Override - public io.smallrye.mutiny.Uni getInstantKpi(monitoring.Monitoring.KpiId request) { + public io.smallrye.mutiny.Uni getInstantKpi(monitoring.Monitoring.KpiId request) { return stub.getInstantKpi(request); } @Override - public io.smallrye.mutiny.Multi setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) { + public io.smallrye.mutiny.Multi setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) { return stub.setKpiSubscription(request); } diff --git a/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java b/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java index fe92a7814166b65b12db5d50bb4baaf525c59146..c5f55b3b44c03ea8f5377ce11e3c3e547da5ef06 100644 --- a/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java +++ b/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java @@ -201,28 +201,28 @@ public final class MonitoringServiceGrpc { } private static volatile io.grpc.MethodDescriptor getQueryKpiDataMethod; + monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod; @io.grpc.stub.annotations.RpcMethod( fullMethodName = SERVICE_NAME + '/' + "QueryKpiData", requestType = monitoring.Monitoring.KpiQuery.class, - responseType = monitoring.Monitoring.KpiList.class, + responseType = monitoring.Monitoring.RawKpiTable.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) public static io.grpc.MethodDescriptor getQueryKpiDataMethod() { - io.grpc.MethodDescriptor getQueryKpiDataMethod; + monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod() { + io.grpc.MethodDescriptor getQueryKpiDataMethod; if ((getQueryKpiDataMethod = MonitoringServiceGrpc.getQueryKpiDataMethod) == null) { synchronized (MonitoringServiceGrpc.class) { if ((getQueryKpiDataMethod = MonitoringServiceGrpc.getQueryKpiDataMethod) == null) { MonitoringServiceGrpc.getQueryKpiDataMethod = getQueryKpiDataMethod = - io.grpc.MethodDescriptor.newBuilder() + io.grpc.MethodDescriptor.newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.UNARY) .setFullMethodName(generateFullMethodName(SERVICE_NAME, "QueryKpiData")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( monitoring.Monitoring.KpiQuery.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - monitoring.Monitoring.KpiList.getDefaultInstance())) + monitoring.Monitoring.RawKpiTable.getDefaultInstance())) .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("QueryKpiData")) .build(); } @@ -232,28 +232,28 @@ public final class MonitoringServiceGrpc { } private static volatile io.grpc.MethodDescriptor getSetKpiSubscriptionMethod; + monitoring.Monitoring.SubsResponse> getSetKpiSubscriptionMethod; @io.grpc.stub.annotations.RpcMethod( fullMethodName = SERVICE_NAME + '/' + "SetKpiSubscription", requestType = monitoring.Monitoring.SubsDescriptor.class, - responseType = monitoring.Monitoring.KpiList.class, + responseType = monitoring.Monitoring.SubsResponse.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING) public static io.grpc.MethodDescriptor getSetKpiSubscriptionMethod() { - io.grpc.MethodDescriptor getSetKpiSubscriptionMethod; + monitoring.Monitoring.SubsResponse> getSetKpiSubscriptionMethod() { + io.grpc.MethodDescriptor getSetKpiSubscriptionMethod; if ((getSetKpiSubscriptionMethod = MonitoringServiceGrpc.getSetKpiSubscriptionMethod) == null) { synchronized (MonitoringServiceGrpc.class) { if ((getSetKpiSubscriptionMethod = MonitoringServiceGrpc.getSetKpiSubscriptionMethod) == null) { MonitoringServiceGrpc.getSetKpiSubscriptionMethod = getSetKpiSubscriptionMethod = - io.grpc.MethodDescriptor.newBuilder() + io.grpc.MethodDescriptor.newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING) .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetKpiSubscription")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( monitoring.Monitoring.SubsDescriptor.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - monitoring.Monitoring.KpiList.getDefaultInstance())) + monitoring.Monitoring.SubsResponse.getDefaultInstance())) .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SetKpiSubscription")) .build(); } @@ -294,28 +294,28 @@ public final class MonitoringServiceGrpc { } private static volatile io.grpc.MethodDescriptor getGetSubscriptionsMethod; + monitoring.Monitoring.SubsList> getGetSubscriptionsMethod; @io.grpc.stub.annotations.RpcMethod( fullMethodName = SERVICE_NAME + '/' + "GetSubscriptions", requestType = context.ContextOuterClass.Empty.class, - responseType = monitoring.Monitoring.SubsIDList.class, + responseType = monitoring.Monitoring.SubsList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) public static io.grpc.MethodDescriptor getGetSubscriptionsMethod() { - io.grpc.MethodDescriptor getGetSubscriptionsMethod; + monitoring.Monitoring.SubsList> getGetSubscriptionsMethod() { + io.grpc.MethodDescriptor getGetSubscriptionsMethod; if ((getGetSubscriptionsMethod = MonitoringServiceGrpc.getGetSubscriptionsMethod) == null) { synchronized (MonitoringServiceGrpc.class) { if ((getGetSubscriptionsMethod = MonitoringServiceGrpc.getGetSubscriptionsMethod) == null) { MonitoringServiceGrpc.getGetSubscriptionsMethod = getGetSubscriptionsMethod = - io.grpc.MethodDescriptor.newBuilder() + io.grpc.MethodDescriptor.newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.UNARY) .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSubscriptions")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( context.ContextOuterClass.Empty.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - monitoring.Monitoring.SubsIDList.getDefaultInstance())) + monitoring.Monitoring.SubsList.getDefaultInstance())) .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetSubscriptions")) .build(); } @@ -387,28 +387,28 @@ public final class MonitoringServiceGrpc { } private static volatile io.grpc.MethodDescriptor getGetAlarmsMethod; + monitoring.Monitoring.AlarmList> getGetAlarmsMethod; @io.grpc.stub.annotations.RpcMethod( fullMethodName = SERVICE_NAME + '/' + "GetAlarms", requestType = context.ContextOuterClass.Empty.class, - responseType = monitoring.Monitoring.AlarmIDList.class, + responseType = monitoring.Monitoring.AlarmList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) public static io.grpc.MethodDescriptor getGetAlarmsMethod() { - io.grpc.MethodDescriptor getGetAlarmsMethod; + monitoring.Monitoring.AlarmList> getGetAlarmsMethod() { + io.grpc.MethodDescriptor getGetAlarmsMethod; if ((getGetAlarmsMethod = MonitoringServiceGrpc.getGetAlarmsMethod) == null) { synchronized (MonitoringServiceGrpc.class) { if ((getGetAlarmsMethod = MonitoringServiceGrpc.getGetAlarmsMethod) == null) { MonitoringServiceGrpc.getGetAlarmsMethod = getGetAlarmsMethod = - io.grpc.MethodDescriptor.newBuilder() + io.grpc.MethodDescriptor.newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.UNARY) .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetAlarms")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( context.ContextOuterClass.Empty.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - monitoring.Monitoring.AlarmIDList.getDefaultInstance())) + monitoring.Monitoring.AlarmList.getDefaultInstance())) .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetAlarms")) .build(); } @@ -542,28 +542,28 @@ public final class MonitoringServiceGrpc { } private static volatile io.grpc.MethodDescriptor getGetInstantKpiMethod; + monitoring.Monitoring.Kpi> getGetInstantKpiMethod; @io.grpc.stub.annotations.RpcMethod( fullMethodName = SERVICE_NAME + '/' + "GetInstantKpi", requestType = monitoring.Monitoring.KpiId.class, - responseType = monitoring.Monitoring.KpiList.class, + responseType = monitoring.Monitoring.Kpi.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) public static io.grpc.MethodDescriptor getGetInstantKpiMethod() { - io.grpc.MethodDescriptor getGetInstantKpiMethod; + monitoring.Monitoring.Kpi> getGetInstantKpiMethod() { + io.grpc.MethodDescriptor getGetInstantKpiMethod; if ((getGetInstantKpiMethod = MonitoringServiceGrpc.getGetInstantKpiMethod) == null) { synchronized (MonitoringServiceGrpc.class) { if ((getGetInstantKpiMethod = MonitoringServiceGrpc.getGetInstantKpiMethod) == null) { MonitoringServiceGrpc.getGetInstantKpiMethod = getGetInstantKpiMethod = - io.grpc.MethodDescriptor.newBuilder() + io.grpc.MethodDescriptor.newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.UNARY) .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetInstantKpi")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( monitoring.Monitoring.KpiId.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - monitoring.Monitoring.KpiList.getDefaultInstance())) + monitoring.Monitoring.Kpi.getDefaultInstance())) .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetInstantKpi")) .build(); } @@ -665,14 +665,14 @@ public final class MonitoringServiceGrpc { /** */ public void queryKpiData(monitoring.Monitoring.KpiQuery request, - io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getQueryKpiDataMethod(), responseObserver); } /** */ public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, - io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiSubscriptionMethod(), responseObserver); } @@ -686,7 +686,7 @@ public final class MonitoringServiceGrpc { /** */ public void getSubscriptions(context.ContextOuterClass.Empty request, - io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubscriptionsMethod(), responseObserver); } @@ -707,7 +707,7 @@ public final class MonitoringServiceGrpc { /** */ public void getAlarms(context.ContextOuterClass.Empty request, - io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmsMethod(), responseObserver); } @@ -742,7 +742,7 @@ public final class MonitoringServiceGrpc { /** */ public void getInstantKpi(monitoring.Monitoring.KpiId request, - io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInstantKpiMethod(), responseObserver); } @@ -795,14 +795,14 @@ public final class MonitoringServiceGrpc { io.grpc.stub.ServerCalls.asyncUnaryCall( new MethodHandlers< monitoring.Monitoring.KpiQuery, - monitoring.Monitoring.KpiList>( + monitoring.Monitoring.RawKpiTable>( this, METHODID_QUERY_KPI_DATA))) .addMethod( getSetKpiSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall( new MethodHandlers< monitoring.Monitoring.SubsDescriptor, - monitoring.Monitoring.KpiList>( + monitoring.Monitoring.SubsResponse>( this, METHODID_SET_KPI_SUBSCRIPTION))) .addMethod( getGetSubsDescriptorMethod(), @@ -816,7 +816,7 @@ public final class MonitoringServiceGrpc { io.grpc.stub.ServerCalls.asyncUnaryCall( new MethodHandlers< context.ContextOuterClass.Empty, - monitoring.Monitoring.SubsIDList>( + monitoring.Monitoring.SubsList>( this, METHODID_GET_SUBSCRIPTIONS))) .addMethod( getDeleteSubscriptionMethod(), @@ -837,7 +837,7 @@ public final class MonitoringServiceGrpc { io.grpc.stub.ServerCalls.asyncUnaryCall( new MethodHandlers< context.ContextOuterClass.Empty, - monitoring.Monitoring.AlarmIDList>( + monitoring.Monitoring.AlarmList>( this, METHODID_GET_ALARMS))) .addMethod( getGetAlarmDescriptorMethod(), @@ -872,7 +872,7 @@ public final class MonitoringServiceGrpc { io.grpc.stub.ServerCalls.asyncUnaryCall( new MethodHandlers< monitoring.Monitoring.KpiId, - monitoring.Monitoring.KpiList>( + monitoring.Monitoring.Kpi>( this, METHODID_GET_INSTANT_KPI))) .build(); } @@ -943,7 +943,7 @@ public final class MonitoringServiceGrpc { /** */ public void queryKpiData(monitoring.Monitoring.KpiQuery request, - io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ClientCalls.asyncUnaryCall( getChannel().newCall(getQueryKpiDataMethod(), getCallOptions()), request, responseObserver); } @@ -951,7 +951,7 @@ public final class MonitoringServiceGrpc { /** */ public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, - io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ClientCalls.asyncServerStreamingCall( getChannel().newCall(getSetKpiSubscriptionMethod(), getCallOptions()), request, responseObserver); } @@ -967,7 +967,7 @@ public final class MonitoringServiceGrpc { /** */ public void getSubscriptions(context.ContextOuterClass.Empty request, - io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ClientCalls.asyncUnaryCall( getChannel().newCall(getGetSubscriptionsMethod(), getCallOptions()), request, responseObserver); } @@ -991,7 +991,7 @@ public final class MonitoringServiceGrpc { /** */ public void getAlarms(context.ContextOuterClass.Empty request, - io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ClientCalls.asyncUnaryCall( getChannel().newCall(getGetAlarmsMethod(), getCallOptions()), request, responseObserver); } @@ -1031,7 +1031,7 @@ public final class MonitoringServiceGrpc { /** */ public void getInstantKpi(monitoring.Monitoring.KpiId request, - io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ClientCalls.asyncUnaryCall( getChannel().newCall(getGetInstantKpiMethod(), getCallOptions()), request, responseObserver); } @@ -1095,14 +1095,14 @@ public final class MonitoringServiceGrpc { /** */ - public monitoring.Monitoring.KpiList queryKpiData(monitoring.Monitoring.KpiQuery request) { + public monitoring.Monitoring.RawKpiTable queryKpiData(monitoring.Monitoring.KpiQuery request) { return io.grpc.stub.ClientCalls.blockingUnaryCall( getChannel(), getQueryKpiDataMethod(), getCallOptions(), request); } /** */ - public java.util.Iterator setKpiSubscription( + public java.util.Iterator setKpiSubscription( monitoring.Monitoring.SubsDescriptor request) { return io.grpc.stub.ClientCalls.blockingServerStreamingCall( getChannel(), getSetKpiSubscriptionMethod(), getCallOptions(), request); @@ -1117,7 +1117,7 @@ public final class MonitoringServiceGrpc { /** */ - public monitoring.Monitoring.SubsIDList getSubscriptions(context.ContextOuterClass.Empty request) { + public monitoring.Monitoring.SubsList getSubscriptions(context.ContextOuterClass.Empty request) { return io.grpc.stub.ClientCalls.blockingUnaryCall( getChannel(), getGetSubscriptionsMethod(), getCallOptions(), request); } @@ -1138,7 +1138,7 @@ public final class MonitoringServiceGrpc { /** */ - public monitoring.Monitoring.AlarmIDList getAlarms(context.ContextOuterClass.Empty request) { + public monitoring.Monitoring.AlarmList getAlarms(context.ContextOuterClass.Empty request) { return io.grpc.stub.ClientCalls.blockingUnaryCall( getChannel(), getGetAlarmsMethod(), getCallOptions(), request); } @@ -1175,7 +1175,7 @@ public final class MonitoringServiceGrpc { /** */ - public monitoring.Monitoring.KpiList getInstantKpi(monitoring.Monitoring.KpiId request) { + public monitoring.Monitoring.Kpi getInstantKpi(monitoring.Monitoring.KpiId request) { return io.grpc.stub.ClientCalls.blockingUnaryCall( getChannel(), getGetInstantKpiMethod(), getCallOptions(), request); } @@ -1245,7 +1245,7 @@ public final class MonitoringServiceGrpc { /** */ - public com.google.common.util.concurrent.ListenableFuture queryKpiData( + public com.google.common.util.concurrent.ListenableFuture queryKpiData( monitoring.Monitoring.KpiQuery request) { return io.grpc.stub.ClientCalls.futureUnaryCall( getChannel().newCall(getQueryKpiDataMethod(), getCallOptions()), request); @@ -1261,7 +1261,7 @@ public final class MonitoringServiceGrpc { /** */ - public com.google.common.util.concurrent.ListenableFuture getSubscriptions( + public com.google.common.util.concurrent.ListenableFuture getSubscriptions( context.ContextOuterClass.Empty request) { return io.grpc.stub.ClientCalls.futureUnaryCall( getChannel().newCall(getGetSubscriptionsMethod(), getCallOptions()), request); @@ -1285,7 +1285,7 @@ public final class MonitoringServiceGrpc { /** */ - public com.google.common.util.concurrent.ListenableFuture getAlarms( + public com.google.common.util.concurrent.ListenableFuture getAlarms( context.ContextOuterClass.Empty request) { return io.grpc.stub.ClientCalls.futureUnaryCall( getChannel().newCall(getGetAlarmsMethod(), getCallOptions()), request); @@ -1309,7 +1309,7 @@ public final class MonitoringServiceGrpc { /** */ - public com.google.common.util.concurrent.ListenableFuture getInstantKpi( + public com.google.common.util.concurrent.ListenableFuture getInstantKpi( monitoring.Monitoring.KpiId request) { return io.grpc.stub.ClientCalls.futureUnaryCall( getChannel().newCall(getGetInstantKpiMethod(), getCallOptions()), request); @@ -1378,11 +1378,11 @@ public final class MonitoringServiceGrpc { break; case METHODID_QUERY_KPI_DATA: serviceImpl.queryKpiData((monitoring.Monitoring.KpiQuery) request, - (io.grpc.stub.StreamObserver) responseObserver); + (io.grpc.stub.StreamObserver) responseObserver); break; case METHODID_SET_KPI_SUBSCRIPTION: serviceImpl.setKpiSubscription((monitoring.Monitoring.SubsDescriptor) request, - (io.grpc.stub.StreamObserver) responseObserver); + (io.grpc.stub.StreamObserver) responseObserver); break; case METHODID_GET_SUBS_DESCRIPTOR: serviceImpl.getSubsDescriptor((monitoring.Monitoring.SubscriptionID) request, @@ -1390,7 +1390,7 @@ public final class MonitoringServiceGrpc { break; case METHODID_GET_SUBSCRIPTIONS: serviceImpl.getSubscriptions((context.ContextOuterClass.Empty) request, - (io.grpc.stub.StreamObserver) responseObserver); + (io.grpc.stub.StreamObserver) responseObserver); break; case METHODID_DELETE_SUBSCRIPTION: serviceImpl.deleteSubscription((monitoring.Monitoring.SubscriptionID) request, @@ -1402,7 +1402,7 @@ public final class MonitoringServiceGrpc { break; case METHODID_GET_ALARMS: serviceImpl.getAlarms((context.ContextOuterClass.Empty) request, - (io.grpc.stub.StreamObserver) responseObserver); + (io.grpc.stub.StreamObserver) responseObserver); break; case METHODID_GET_ALARM_DESCRIPTOR: serviceImpl.getAlarmDescriptor((monitoring.Monitoring.AlarmID) request, @@ -1422,7 +1422,7 @@ public final class MonitoringServiceGrpc { break; case METHODID_GET_INSTANT_KPI: serviceImpl.getInstantKpi((monitoring.Monitoring.KpiId) request, - (io.grpc.stub.StreamObserver) responseObserver); + (io.grpc.stub.StreamObserver) responseObserver); break; default: throw new AssertionError(); diff --git a/src/automation/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java b/src/automation/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java index d663b38c923a2b5401642db4e697e16be4720f05..f045ecc7ed434ba90bdfda065f18e0d839850a76 100644 --- a/src/automation/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java +++ b/src/automation/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java @@ -66,7 +66,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim } - public io.smallrye.mutiny.Uni queryKpiData(monitoring.Monitoring.KpiQuery request) { + public io.smallrye.mutiny.Uni queryKpiData(monitoring.Monitoring.KpiQuery request) { return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::queryKpiData); } @@ -76,7 +76,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim } - public io.smallrye.mutiny.Uni getSubscriptions(context.ContextOuterClass.Empty request) { + public io.smallrye.mutiny.Uni getSubscriptions(context.ContextOuterClass.Empty request) { return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getSubscriptions); } @@ -91,7 +91,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim } - public io.smallrye.mutiny.Uni getAlarms(context.ContextOuterClass.Empty request) { + public io.smallrye.mutiny.Uni getAlarms(context.ContextOuterClass.Empty request) { return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getAlarms); } @@ -106,12 +106,12 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim } - public io.smallrye.mutiny.Uni getInstantKpi(monitoring.Monitoring.KpiId request) { + public io.smallrye.mutiny.Uni getInstantKpi(monitoring.Monitoring.KpiId request) { return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getInstantKpi); } - public io.smallrye.mutiny.Multi setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) { + public io.smallrye.mutiny.Multi setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) { return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::setKpiSubscription); } @@ -173,7 +173,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim } - public io.smallrye.mutiny.Uni queryKpiData(monitoring.Monitoring.KpiQuery request) { + public io.smallrye.mutiny.Uni queryKpiData(monitoring.Monitoring.KpiQuery request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } @@ -183,7 +183,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim } - public io.smallrye.mutiny.Uni getSubscriptions(context.ContextOuterClass.Empty request) { + public io.smallrye.mutiny.Uni getSubscriptions(context.ContextOuterClass.Empty request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } @@ -198,7 +198,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim } - public io.smallrye.mutiny.Uni getAlarms(context.ContextOuterClass.Empty request) { + public io.smallrye.mutiny.Uni getAlarms(context.ContextOuterClass.Empty request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } @@ -213,12 +213,12 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim } - public io.smallrye.mutiny.Uni getInstantKpi(monitoring.Monitoring.KpiId request) { + public io.smallrye.mutiny.Uni getInstantKpi(monitoring.Monitoring.KpiId request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } - public io.smallrye.mutiny.Multi setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) { + public io.smallrye.mutiny.Multi setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) { throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED); } @@ -281,14 +281,14 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim asyncUnaryCall( new MethodHandlers< monitoring.Monitoring.KpiQuery, - monitoring.Monitoring.KpiList>( + monitoring.Monitoring.RawKpiTable>( this, METHODID_QUERY_KPI_DATA, compression))) .addMethod( monitoring.MonitoringServiceGrpc.getSetKpiSubscriptionMethod(), asyncServerStreamingCall( new MethodHandlers< monitoring.Monitoring.SubsDescriptor, - monitoring.Monitoring.KpiList>( + monitoring.Monitoring.SubsResponse>( this, METHODID_SET_KPI_SUBSCRIPTION, compression))) .addMethod( monitoring.MonitoringServiceGrpc.getGetSubsDescriptorMethod(), @@ -302,7 +302,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim asyncUnaryCall( new MethodHandlers< context.ContextOuterClass.Empty, - monitoring.Monitoring.SubsIDList>( + monitoring.Monitoring.SubsList>( this, METHODID_GET_SUBSCRIPTIONS, compression))) .addMethod( monitoring.MonitoringServiceGrpc.getDeleteSubscriptionMethod(), @@ -323,7 +323,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim asyncUnaryCall( new MethodHandlers< context.ContextOuterClass.Empty, - monitoring.Monitoring.AlarmIDList>( + monitoring.Monitoring.AlarmList>( this, METHODID_GET_ALARMS, compression))) .addMethod( monitoring.MonitoringServiceGrpc.getGetAlarmDescriptorMethod(), @@ -358,7 +358,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim asyncUnaryCall( new MethodHandlers< monitoring.Monitoring.KpiId, - monitoring.Monitoring.KpiList>( + monitoring.Monitoring.Kpi>( this, METHODID_GET_INSTANT_KPI, compression))) .build(); } @@ -440,13 +440,13 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim break; case METHODID_QUERY_KPI_DATA: io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiQuery) request, - (io.grpc.stub.StreamObserver) responseObserver, + (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::queryKpiData); break; case METHODID_SET_KPI_SUBSCRIPTION: io.quarkus.grpc.runtime.ServerCalls.oneToMany((monitoring.Monitoring.SubsDescriptor) request, - (io.grpc.stub.StreamObserver) responseObserver, + (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::setKpiSubscription); break; @@ -458,7 +458,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim break; case METHODID_GET_SUBSCRIPTIONS: io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, - (io.grpc.stub.StreamObserver) responseObserver, + (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getSubscriptions); break; @@ -476,7 +476,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim break; case METHODID_GET_ALARMS: io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, - (io.grpc.stub.StreamObserver) responseObserver, + (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getAlarms); break; @@ -506,7 +506,7 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim break; case METHODID_GET_INSTANT_KPI: io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiId) request, - (io.grpc.stub.StreamObserver) responseObserver, + (io.grpc.stub.StreamObserver) responseObserver, compression, serviceImpl::getInstantKpi); break; diff --git a/src/automation/target/kubernetes/kubernetes.yml b/src/automation/target/kubernetes/kubernetes.yml index 1fc788787ff527647cb920ffa74b270171ab1b6d..8bc14b935b4e4f4a18ed03f10cca0b74f480dcf0 100644 --- a/src/automation/target/kubernetes/kubernetes.yml +++ b/src/automation/target/kubernetes/kubernetes.yml @@ -3,20 +3,19 @@ apiVersion: v1 kind: Service metadata: annotations: - app.quarkus.io/commit-id: 80cfc0874138153f72a2a673fc4d040be707e899 - app.quarkus.io/build-timestamp: 2022-08-31 - 09:25:37 +0000 + app.quarkus.io/build-timestamp: 2022-09-19 - 10:48:18 +0000 labels: app.kubernetes.io/name: automationservice app: automationservice name: automationservice spec: ports: - - name: http - port: 8080 - targetPort: 8080 - name: grpc port: 5050 targetPort: 5050 + - name: http + port: 8080 + targetPort: 8080 selector: app.kubernetes.io/name: automationservice type: ClusterIP @@ -25,8 +24,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - app.quarkus.io/commit-id: 80cfc0874138153f72a2a673fc4d040be707e899 - app.quarkus.io/build-timestamp: 2022-08-31 - 09:25:37 +0000 + app.quarkus.io/build-timestamp: 2022-09-19 - 10:48:18 +0000 labels: app: automationservice app.kubernetes.io/name: automationservice @@ -39,8 +37,7 @@ spec: template: metadata: annotations: - app.quarkus.io/commit-id: 80cfc0874138153f72a2a673fc4d040be707e899 - app.quarkus.io/build-timestamp: 2022-08-31 - 09:25:37 +0000 + app.quarkus.io/build-timestamp: 2022-09-19 - 10:48:18 +0000 labels: app: automationservice app.kubernetes.io/name: automationservice @@ -52,9 +49,9 @@ spec: fieldRef: fieldPath: metadata.namespace - name: CONTEXT_SERVICE_HOST - value: ContextService + value: contextservice - name: DEVICE_SERVICE_HOST - value: DeviceService + value: deviceservice image: registry.gitlab.com/teraflow-h2020/controller/automation:0.2.0 imagePullPolicy: Always livenessProbe: @@ -69,12 +66,12 @@ spec: timeoutSeconds: 10 name: automationservice ports: - - containerPort: 8080 - name: http - protocol: TCP - containerPort: 5050 name: grpc protocol: TCP + - containerPort: 8080 + name: http + protocol: TCP readinessProbe: failureThreshold: 3 httpGet: diff --git a/src/common/Constants.py b/src/common/Constants.py index f18d4384035f2310355d7a16c5a709720b5b07e9..ffdfbc4e03adaa272ce5b841ea44923409df5cbe 100644 --- a/src/common/Constants.py +++ b/src/common/Constants.py @@ -20,7 +20,7 @@ DEFAULT_LOG_LEVEL = logging.WARNING # Default gRPC server settings DEFAULT_GRPC_BIND_ADDRESS = '0.0.0.0' -DEFAULT_GRPC_MAX_WORKERS = 10 +DEFAULT_GRPC_MAX_WORKERS = 200 DEFAULT_GRPC_GRACE_PERIOD = 60 # Default HTTP server settings @@ -30,8 +30,9 @@ DEFAULT_HTTP_BIND_ADDRESS = '0.0.0.0' DEFAULT_METRICS_PORT = 9192 # Default context and topology UUIDs -DEFAULT_CONTEXT_UUID = 'admin' -DEFAULT_TOPOLOGY_UUID = 'admin' +DEFAULT_CONTEXT_UUID = 'admin' +DEFAULT_TOPOLOGY_UUID = 'admin' # contains the detailed local topology +INTERDOMAIN_TOPOLOGY_UUID = 'inter' # contains the abstract inter-domain topology # Default service names class ServiceNameEnum(Enum): @@ -49,6 +50,9 @@ class ServiceNameEnum(Enum): PATHCOMP = 'pathcomp' WEBUI = 'webui' + # Used for test and debugging only + DLT_GATEWAY = 'dltgateway' + # Default gRPC service ports DEFAULT_SERVICE_GRPC_PORTS = { ServiceNameEnum.CONTEXT .value : 1010, @@ -63,6 +67,9 @@ DEFAULT_SERVICE_GRPC_PORTS = { ServiceNameEnum.CYBERSECURITY.value : 10000, ServiceNameEnum.INTERDOMAIN .value : 10010, ServiceNameEnum.PATHCOMP .value : 10020, + + # Used for test and debugging only + ServiceNameEnum.DLT_GATEWAY .value : 50051, } # Default HTTP/REST-API service ports diff --git a/src/common/DeviceTypes.py b/src/common/DeviceTypes.py index bf871a2d5afa6a73f1c9dd39431c64a7f31bbd7e..c353708995cd5d8e4a7e2fde8d9bdd03732008eb 100644 --- a/src/common/DeviceTypes.py +++ b/src/common/DeviceTypes.py @@ -15,12 +15,27 @@ from enum import Enum class DeviceTypeEnum(Enum): - EMULATED_OPTICAL_LINE_SYSTEM = 'emu-optical-line-system' - EMULATED_PACKET_ROUTER = 'emu-packet-router' - MICROVAWE_RADIO_SYSTEM = 'microwave-radio-system' - OPTICAL_ROADM = 'optical-roadm' - OPTICAL_TRANDPONDER = 'optical-trandponder' - OPTICAL_LINE_SYSTEM = 'optical-line-system' - PACKET_ROUTER = 'packet-router' - PACKET_SWITCH = 'packet-switch' - P4_SWITCH = 'p4-switch' + + # Abstractions + NETWORK = 'network' + + # Emulated device types + EMULATED_DATACENTER = 'emu-datacenter' + EMULATED_MICROWAVE_RADIO_SYSTEM = 'emu-microwave-radio-system' + EMULATED_OPEN_LINE_SYSTEM = 'emu-open-line-system' + EMULATED_OPTICAL_ROADM = 'emu-optical-roadm' + EMULATED_OPTICAL_TRANSPONDER = 'emu-optical-transponder' + EMULATED_P4_SWITCH = 'emu-p4-switch' + EMULATED_PACKET_ROUTER = 'emu-packet-router' + EMULATED_PACKET_SWITCH = 'emu-packet-switch' + + # Real device types + DATACENTER = 'datacenter' + MICROWAVE_RADIO_SYSTEM = 'microwave-radio-system' + OPEN_LINE_SYSTEM = 'open-line-system' + OPTICAL_ROADM = 'optical-roadm' + OPTICAL_TRANSPONDER = 'optical-transponder' + P4_SWITCH = 'p4-switch' + PACKET_ROUTER = 'packet-router' + PACKET_SWITCH = 'packet-switch' + XR_CONSTELLATION = 'xr-constellation' \ No newline at end of file diff --git a/src/common/method_wrappers/Decorator.py b/src/common/method_wrappers/Decorator.py new file mode 100644 index 0000000000000000000000000000000000000000..7ee2a919e10f25104d0fa77caaf8bafa11c2b30f --- /dev/null +++ b/src/common/method_wrappers/Decorator.py @@ -0,0 +1,132 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import grpc, logging, threading +from enum import Enum +from typing import Dict, Tuple +from prometheus_client import Counter, Histogram +from prometheus_client.metrics import MetricWrapperBase, INF +from common.tools.grpc.Tools import grpc_message_to_json_string +from .ServiceExceptions import ServiceException + +class MetricTypeEnum(Enum): + COUNTER_STARTED = 'tfs_{component:s}_{sub_module:s}_{method:s}_counter_requests_started' + COUNTER_COMPLETED = 'tfs_{component:s}_{sub_module:s}_{method:s}_counter_requests_completed' + COUNTER_FAILED = 'tfs_{component:s}_{sub_module:s}_{method:s}_counter_requests_failed' + HISTOGRAM_DURATION = 'tfs_{component:s}_{sub_module:s}_{method:s}_histogram_duration' + +METRIC_TO_CLASS_PARAMS = { + MetricTypeEnum.COUNTER_STARTED : (Counter, {}), + MetricTypeEnum.COUNTER_COMPLETED : (Counter, {}), + MetricTypeEnum.COUNTER_FAILED : (Counter, {}), + MetricTypeEnum.HISTOGRAM_DURATION: (Histogram, { + 'buckets': ( + # .005, .01, .025, .05, .075, .1, .25, .5, .75, 1.0, INF + 0.0010, 0.0025, 0.0050, 0.0075, + 0.0100, 0.0250, 0.0500, 0.0750, + 0.1000, 0.2500, 0.5000, 0.7500, + 1.0000, 2.5000, 5.0000, 7.5000, + INF) + }) +} + +class MetricsPool: + lock = threading.Lock() + metrics : Dict[str, MetricWrapperBase] = dict() + + def __init__( + self, component : str, sub_module : str, labels : Dict[str, str] = {}, + default_metric_params : Dict[MetricTypeEnum, Dict] = dict() + ) -> None: + self._component = component + self._sub_module = sub_module + self._labels = labels + self._default_metric_params = default_metric_params + + def get_or_create(self, method : str, metric_type : MetricTypeEnum, **metric_params) -> MetricWrapperBase: + metric_name = str(metric_type.value).format( + component=self._component, sub_module=self._sub_module, method=method).upper() + with MetricsPool.lock: + if metric_name not in MetricsPool.metrics: + metric_tuple : Tuple[MetricWrapperBase, Dict] = METRIC_TO_CLASS_PARAMS.get(metric_type) + metric_class, default_metric_params = metric_tuple + if len(metric_params) == 0: metric_params = self._default_metric_params.get(metric_type, {}) + if len(metric_params) == 0: metric_params = default_metric_params + labels = sorted(self._labels.keys()) + MetricsPool.metrics[metric_name] = metric_class(metric_name.lower(), '', labels, **metric_params) + return MetricsPool.metrics[metric_name] + + def get_metrics( + self, method : str + ) -> Tuple[MetricWrapperBase, MetricWrapperBase, MetricWrapperBase, MetricWrapperBase]: + histogram_duration : Histogram = self.get_or_create(method, MetricTypeEnum.HISTOGRAM_DURATION) + counter_started : Counter = self.get_or_create(method, MetricTypeEnum.COUNTER_STARTED) + counter_completed : Counter = self.get_or_create(method, MetricTypeEnum.COUNTER_COMPLETED) + counter_failed : Counter = self.get_or_create(method, MetricTypeEnum.COUNTER_FAILED) + + if len(self._labels) > 0: + histogram_duration = histogram_duration.labels(**(self._labels)) + counter_started = counter_started.labels(**(self._labels)) + counter_completed = counter_completed.labels(**(self._labels)) + counter_failed = counter_failed.labels(**(self._labels)) + + return histogram_duration, counter_started, counter_completed, counter_failed + +def metered_subclass_method(metrics_pool : MetricsPool): + def outer_wrapper(func): + metrics = metrics_pool.get_metrics(func.__name__) + histogram_duration, counter_started, counter_completed, counter_failed = metrics + + @histogram_duration.time() + def inner_wrapper(self, *args, **kwargs): + counter_started.inc() + try: + reply = func(self, *args, **kwargs) + counter_completed.inc() + return reply + except KeyboardInterrupt: # pylint: disable=try-except-raise + raise + except Exception: # pylint: disable=broad-except + counter_failed.inc() + + return inner_wrapper + return outer_wrapper + +def safe_and_metered_rpc_method(metrics_pool : MetricsPool, logger : logging.Logger): + def outer_wrapper(func): + method_name = func.__name__ + metrics = metrics_pool.get_metrics(method_name) + histogram_duration, counter_started, counter_completed, counter_failed = metrics + + @histogram_duration.time() + def inner_wrapper(self, request, grpc_context : grpc.ServicerContext): + counter_started.inc() + try: + logger.debug('{:s} request: {:s}'.format(method_name, grpc_message_to_json_string(request))) + reply = func(self, request, grpc_context) + logger.debug('{:s} reply: {:s}'.format(method_name, grpc_message_to_json_string(reply))) + counter_completed.inc() + return reply + except ServiceException as e: # pragma: no cover (ServiceException not thrown) + if e.code not in [grpc.StatusCode.NOT_FOUND, grpc.StatusCode.ALREADY_EXISTS]: + # Assume not found or already exists is just a condition, not an error + logger.exception('{:s} exception'.format(method_name)) + counter_failed.inc() + grpc_context.abort(e.code, e.details) + except Exception as e: # pragma: no cover, pylint: disable=broad-except + logger.exception('{:s} exception'.format(method_name)) + counter_failed.inc() + grpc_context.abort(grpc.StatusCode.INTERNAL, str(e)) + return inner_wrapper + return outer_wrapper diff --git a/src/common/rpc_method_wrapper/ServiceExceptions.py b/src/common/method_wrappers/ServiceExceptions.py similarity index 88% rename from src/common/rpc_method_wrapper/ServiceExceptions.py rename to src/common/method_wrappers/ServiceExceptions.py index f4f0a64cad79c96dc069bd37e8d2c2be5f011c53..e8d5c79acca19117fca53ec216166c01d3f0781d 100644 --- a/src/common/rpc_method_wrapper/ServiceExceptions.py +++ b/src/common/method_wrappers/ServiceExceptions.py @@ -56,3 +56,11 @@ class OperationFailedException(ServiceException): details = 'Operation({:s}) failed'.format(str(operation)) super().__init__(grpc.StatusCode.INTERNAL, details, extra_details=extra_details) + +class NotImplementedException(ServiceException): + def __init__( + self, operation : str, extra_details : Union[str, Iterable[str]] = None + ) -> None: + + details = 'Operation({:s}) not implemented'.format(str(operation)) + super().__init__(grpc.StatusCode.UNIMPLEMENTED, details, extra_details=extra_details) diff --git a/src/pathcomp/client/__init__.py b/src/common/method_wrappers/__init__.py similarity index 100% rename from src/pathcomp/client/__init__.py rename to src/common/method_wrappers/__init__.py diff --git a/src/common/method_wrappers/results-perf-eval/MW/dev-drv-mw.png b/src/common/method_wrappers/results-perf-eval/MW/dev-drv-mw.png new file mode 100644 index 0000000000000000000000000000000000000000..a5732f8d162182a014497f219b510baa3d5ac105 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/MW/dev-drv-mw.png differ diff --git a/src/common/method_wrappers/results-perf-eval/MW/generate.sh b/src/common/method_wrappers/results-perf-eval/MW/generate.sh new file mode 100755 index 0000000000000000000000000000000000000000..bb86e747580cc48cfd93d9091584ebe66a2586fc --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/MW/generate.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +python generate_plot.py "DEVICE_DRIVER_MW" +python generate_plot.py "SERVICE_HANDLER_MW" diff --git a/src/common/method_wrappers/results-perf-eval/MW/generate_plot.py b/src/common/method_wrappers/results-perf-eval/MW/generate_plot.py new file mode 100644 index 0000000000000000000000000000000000000000..beae663f671b73b685e5ac8ec2048df35771c862 --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/MW/generate_plot.py @@ -0,0 +1,69 @@ +import enum, sys +import numpy as np +import matplotlib.pyplot as plt + +class PlotName(enum.Enum): + DEVICE_DRIVER_MW = 'dev-drv-mw' + SERVICE_HANDLER_MW = 'srv-hlr-mw' + +plot_name = PlotName.__members__.get(sys.argv[1]) +if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name))) + +PLOTS = { + PlotName.DEVICE_DRIVER_MW: ( + #'Device Driver - MicroWave', '0.0001-100', [ + # ('GetConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,10,172,0,1,0,0,0,0,0,0]), + # ('SetConfig', [89,1,0,0,0,0,0,0,0,0,0,0,0,0,0,6,34,50,1,0,0,0,0,0,0,0]), + # ('DeleteConfig', [90,1,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,4,72,12,0,0,0,0,0,0]), + #]), + 'Device Driver - MicroWave', '0.1-10', [ + ('GetConfig', [0,1,0,10,172,0,1,0]), + ('SetConfig', [0,0,6,34,50,1,0,0]), + ('DeleteConfig', [0,2,3,0,4,72,12,0]), + ]), + PlotName.SERVICE_HANDLER_MW: ( + 'Service Handler - L2NM MicroWave', '1-100', [ + ('SetEndpoint', [0,1,0,1,5,75,6,0]), + ('DeleteEndpoint', [0,0,0,0,1,77,17,0]), + ]), +} + +BINS_RANGES = { + '0.0001-100' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, + 25, 50, 75, 100, 200], + '0.1-10' : [0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.0001-1' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1], + '0.0001-0.25' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25], + '1-100' : [1, 2.5, 5, 7.5, 10, 25, 50, 75, 100], + '0.001-100' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200], + '0.001-7.5' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.01-5' : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5], +} + +# plot the cumulative histogram +fig, ax = plt.subplots(figsize=(8, 8)) + +bins = PLOTS[plot_name][1] +if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]] +bins = np.array(bins).astype(float) + +for label, counts in PLOTS[plot_name][2]: + counts = np.array(counts).astype(float) + assert len(bins) == len(counts) + 1 + centroids = (bins[1:] + bins[:-1]) / 2 + ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True, + histtype='step', cumulative=True, label=label) + +ax.grid(True) +ax.legend(loc='upper left') +ax.set_title(PLOTS[plot_name][0]) +ax.set_xlabel('seconds') +ax.set_ylabel('Likelihood of occurrence') +plt.xscale('log') +plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) +plt.show() diff --git a/src/common/method_wrappers/results-perf-eval/MW/srv-hlr-mw.png b/src/common/method_wrappers/results-perf-eval/MW/srv-hlr-mw.png new file mode 100644 index 0000000000000000000000000000000000000000..70368ade484fd07310b521b6ea8182b223604922 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/MW/srv-hlr-mw.png differ diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/dev-drv-openconfig.png b/src/common/method_wrappers/results-perf-eval/OpenConfig/dev-drv-openconfig.png new file mode 100644 index 0000000000000000000000000000000000000000..7130d5cc721a5b3dd419f0eba1217664aab064d4 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/OpenConfig/dev-drv-openconfig.png differ diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/generate.sh b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate.sh new file mode 100755 index 0000000000000000000000000000000000000000..0ecd000fd52dc8b5d40b0b115f09b4e957582240 --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +python generate_plot.py "DEVICE_DRIVER_OPENCONFIG" +python generate_plot.py "SERVICE_HANDLER_OPENCONFIG_L2NM" +python generate_plot.py "SERVICE_HANDLER_OPENCONFIG_L3NM" diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/generate_plot.py b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate_plot.py new file mode 100644 index 0000000000000000000000000000000000000000..c6fda331d7782acefd47759d28d7e1d82508efef --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate_plot.py @@ -0,0 +1,74 @@ +import enum, sys +import numpy as np +import matplotlib.pyplot as plt + +class PlotName(enum.Enum): + DEVICE_DRIVER_OPENCONFIG = 'dev-drv-openconfig' + SERVICE_HANDLER_OPENCONFIG_L2NM = 'srv-hlr-openconfig-l2nm' + SERVICE_HANDLER_OPENCONFIG_L3NM = 'srv-hlr-openconfig-l3nm' + +plot_name = PlotName.__members__.get(sys.argv[1]) +if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name))) + +PLOTS = { + PlotName.DEVICE_DRIVER_OPENCONFIG: ( + 'Device Driver - OpenConfig', '0.0001-100', [ + #('GetConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,0,0,0,0]), + #('SetConfig', [127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,19,0,0,0,0,0,0]), + #('DeleteConfig', [92,1,0,0,0,0,0,0,0,0,0,0,0,0,5,2,8,71,14,0,0,0,0,0,0,0]), + + ('GetConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,0,0,0,0]), + ('SetConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,19,0,0,0,0,0,0]), + ('DeleteConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,8,71,14,0,0,0,0,0,0,0]), + ]), + PlotName.SERVICE_HANDLER_OPENCONFIG_L2NM: ( + 'Service Handler - L2NM OpenConfig', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,10]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14]), + ]), + PlotName.SERVICE_HANDLER_OPENCONFIG_L3NM: ( + 'Service Handler - L3NM OpenConfig', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20]), + ]), +} + +BINS_RANGES = { + '0.0001-100' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, + 25, 50, 75, 100, 200], + '0.1-10' : [0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.0001-1' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1], + '0.0001-0.25' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25], + '1-100' : [1, 2.5, 5, 7.5, 10, 25, 50, 75, 100], + '0.001-100' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200], + '0.001-7.5' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.01-5' : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5], +} + +# plot the cumulative histogram +fig, ax = plt.subplots(figsize=(8, 8)) + +bins = PLOTS[plot_name][1] +if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]] +bins = np.array(bins).astype(float) + +for label, counts in PLOTS[plot_name][2]: + counts = np.array(counts).astype(float) + assert len(bins) == len(counts) + 1 + centroids = (bins[1:] + bins[:-1]) / 2 + ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True, + histtype='step', cumulative=True, label=label) + +ax.grid(True) +ax.legend(loc='upper left') +ax.set_title(PLOTS[plot_name][0]) +ax.set_xlabel('seconds') +ax.set_ylabel('Likelihood of occurrence') +plt.xscale('log') +plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) +plt.show() diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l2nm.png b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l2nm.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4393a0ee713b0232b2e4eb5bba75f30159f6e9 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l2nm.png differ diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l3nm.png b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l3nm.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b2d83685dc983cbd2738eecf7064eba74c8e13 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l3nm.png differ diff --git a/src/common/method_wrappers/results-perf-eval/TE/te-cdf.py b/src/common/method_wrappers/results-perf-eval/TE/te-cdf.py new file mode 100644 index 0000000000000000000000000000000000000000..60919ba8bb2a1e5976d14bafd727e176cf86b0cd --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/TE/te-cdf.py @@ -0,0 +1,30 @@ +import matplotlib.pyplot as plt + +flow_creation_us = [ + 3.007065,3.007783,3.010780,3.007374,3.006519,3.006668,3.006303,3.006463,3.006758,3.007992,3.012198,3.001413, + 3.007289,3.006241,3.007523,3.007569,3.006643,3.006255,3.007058,3.006111,3.006918,3.007972,3.006829,3.007378, + 3.007666,3.003071,3.006774,3.006060,3.006731,3.005812 +] + +flow_update_us = [ + 3.005123,3.004228,3.003897,3.006692,3.003767,3.003749,3.004626,3.004333,3.004449,3.003895,3.004092,3.003979, + 3.005099,3.213206,3.004625,3.004707,3.004187,3.004609,3.003885,3.004064,3.004308,3.004280,3.004423,3.211980, + 3.004138,3.004394,3.004018,3.004747,3.005719,3.003656 +] + +n_bins = 10 +fig, ax = plt.subplots(figsize=(8, 8)) + +# plot the cumulative histograms +n, bins, _ = ax.hist(flow_creation_us, n_bins, density=True, histtype='step', cumulative=True, label='FlowCreate') +print(n, bins) +n, bins, _ = ax.hist(flow_update_us, n_bins, density=True, histtype='step', cumulative=True, label='FlowUpdate') +print(n, bins) + +ax.grid(True) +ax.legend(loc='lower center') +ax.set_title('TE Flow Management Delay') +ax.set_xlabel('seconds') +ax.set_ylabel('Likelihood of occurrence') +plt.savefig('te-perf-eval.png', dpi = (600)) +plt.show() diff --git a/src/common/method_wrappers/results-perf-eval/TE/te-perf-eval.png b/src/common/method_wrappers/results-perf-eval/TE/te-perf-eval.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2fd8160bddb4322d8fbb22dac950598bf2115b Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/TE/te-perf-eval.png differ diff --git a/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr-with-outliers.png b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr-with-outliers.png new file mode 100644 index 0000000000000000000000000000000000000000..9607ce0436ee962b7fa5b7ed333ca219ef097884 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr-with-outliers.png differ diff --git a/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr.png b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr.png new file mode 100644 index 0000000000000000000000000000000000000000..61f7d3e394676a05f240d032ce62124a70d8b8bb Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr.png differ diff --git a/src/common/method_wrappers/results-perf-eval/XR/generate.sh b/src/common/method_wrappers/results-perf-eval/XR/generate.sh new file mode 100755 index 0000000000000000000000000000000000000000..eae3eb6d6e615f3be97b2df9f44ce544523ddb72 --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/XR/generate.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +python generate_plot.py "DEVICE_DRIVER_XR" diff --git a/src/common/method_wrappers/results-perf-eval/XR/generate_plot.py b/src/common/method_wrappers/results-perf-eval/XR/generate_plot.py new file mode 100644 index 0000000000000000000000000000000000000000..66110b44400719a796bc86bf6ea1b0c7a1d44224 --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/XR/generate_plot.py @@ -0,0 +1,61 @@ +import enum, sys +import numpy as np +import matplotlib.pyplot as plt + +class PlotName(enum.Enum): + DEVICE_DRIVER_XR = 'dev-drv-xr' + +plot_name = PlotName.__members__.get(sys.argv[1]) +if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name))) + +PLOTS = { + PlotName.DEVICE_DRIVER_XR: ( + #'Device Driver - XR', '0.0001-0.25', [ + # ('GetConfig', [0,0,0,0,0,0,0,0,0,77,1,1,0,0]), + # ('SetConfig', [0,15,17,7,0,0,0,0,0,0,34,3,2,0]), + # ('DeleteConfig', [23,16,0,0,0,0,0,0,0,1,32,5,1,0]), + #]), + 'Device Driver - XR', '0.0001-0.25', [ + ('GetConfig', [0,0,0,0,0,0,0,0,0,77,1,1,0,0]), + ('SetConfig', [0,0,0,0,0,0,0,0,0,0,34,3,2,0]), + ('DeleteConfig', [0,0,0,0,0,0,0,0,0,1,32,5,1,0]), + ]), +} + +BINS_RANGES = { + '0.0001-100' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, + 25, 50, 75, 100, 200], + '0.0001-1' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1], + '0.0001-0.25' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25], + '0.001-100' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200], + '0.001-7.5' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.01-5' : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5], +} + +# plot the cumulative histogram +fig, ax = plt.subplots(figsize=(8, 8)) + +bins = PLOTS[plot_name][1] +if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]] +bins = np.array(bins).astype(float) + +for label, counts in PLOTS[plot_name][2]: + counts = np.array(counts).astype(float) + assert len(bins) == len(counts) + 1 + centroids = (bins[1:] + bins[:-1]) / 2 + ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True, + histtype='step', cumulative=True, label=label) + +ax.grid(True) +ax.legend(loc='upper left') +ax.set_title(PLOTS[plot_name][0]) +ax.set_xlabel('seconds') +ax.set_ylabel('Likelihood of occurrence') +plt.xscale('log') +plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) +plt.show() diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l2nm.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l2nm.png new file mode 100644 index 0000000000000000000000000000000000000000..84ab8747e2a6ca5153e4b6e02483030ab891a421 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l2nm.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l3nm.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l3nm.png new file mode 100644 index 0000000000000000000000000000000000000000..d37827794618024ddaa553de8d2134b455aa31a0 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l3nm.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-tapi.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-tapi.png new file mode 100644 index 0000000000000000000000000000000000000000..70b51e144e259191d9d174abfebd5a6ff3a52e57 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-tapi.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-pathcomp-rpc-compute.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-pathcomp-rpc-compute.png new file mode 100644 index 0000000000000000000000000000000000000000..af84e7e9d5866671e9441c1a93b9d2a66a9218c9 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-pathcomp-rpc-compute.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l2nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l2nm-emu.png new file mode 100644 index 0000000000000000000000000000000000000000..3e58fcbb8d8a25c7bbbd2094a28dad419afbeb02 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l2nm-emu.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l3nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l3nm-emu.png new file mode 100644 index 0000000000000000000000000000000000000000..317af9ca13267f313cab9e6d67a3ba068a3993a4 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l3nm-emu.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-tapi.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-tapi.png new file mode 100644 index 0000000000000000000000000000000000000000..764b4f6cc64db88512b449e91b2ff31d6b260f91 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-tapi.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-connection-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-connection-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..4caa6681993a1850c9e561fed300a16a0d333a87 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-connection-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-device-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-device-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..188d784b68cbc1abb2ea90eaa305863b36cb838a Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-device-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-link-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-link-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3b5ea36e7a278b670699baf7fddf12447510dc Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-link-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-service-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-service-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..74e639b85b70d35c2f0830aa837497646d6b3666 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-service-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-slice-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-slice-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..4060b8ae9b9d2a901b8d0cc2b009ce888f34fab9 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-slice-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-topology-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-topology-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..aae9d07ef4420e53ee4ba3d715f5bf37eae924dd Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-topology-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-driver-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-driver-emu.png new file mode 100644 index 0000000000000000000000000000000000000000..9b6e4d2a47d09f884a1c6e95e5ae27c4df56d55a Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-driver-emu.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..70182fad226d4a387a13991cfba80a6cbd7d57fe Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-dlt-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-dlt-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..dae5e567c7395d5e6972a55b5e7053a551da624f Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-dlt-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-pathcomp-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-pathcomp-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..1c48c875f19b3a49238ee473bc265b9358cfbf6a Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-pathcomp-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-service-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-service-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..2c50e199195dec26ac29abf6901103d66d3bca33 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-service-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-slice-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-slice-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..1292bc5e717634807ce835d481bd08424ef19f2b Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-slice-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l2nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l2nm-emu.png new file mode 100644 index 0000000000000000000000000000000000000000..403baefa0ccd07a70c7fd08db964ae30c3a56301 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l2nm-emu.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l3nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l3nm-emu.png new file mode 100644 index 0000000000000000000000000000000000000000..9c45a0ddf886369fc50a828ded57c26ac6691634 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l3nm-emu.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/generate.sh b/src/common/method_wrappers/results-perf-eval/emulated/generate.sh new file mode 100755 index 0000000000000000000000000000000000000000..f7ed1e31f0382ce1f3b1c89e1ab7de465692614c --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/emulated/generate.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L2NM" +#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L3NM" +python generate_plot.py "EXP1_DEVICE_DRIVER_TAPI" +#python generate_plot.py "EXP2_DEVICE_DRIVER_EMU" + +# ----- All ------------------------------------------------------------ +#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L2NM" +#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L3NM" +#python generate_plot.py "EXP1_DEVICE_DRIVER_TAPI" +#python generate_plot.py "EXP1_SERVICE_HANDLER_EMU_L2NM" +#python generate_plot.py "EXP1_SERVICE_HANDLER_EMU_L3NM" +#python generate_plot.py "EXP1_SERVICE_HANDLER_TAPI" +#python generate_plot.py "EXP1_COMP_PATHCOMP_RPC_COMPUTE" +#python generate_plot.py "EXP2_DEVICE_DRIVER_EMU" +#python generate_plot.py "EXP2_SERVICE_HANDLER_EMU_L2NM" +#python generate_plot.py "EXP2_SERVICE_HANDLER_EMU_L3NM" +#python generate_plot.py "EXP2_COMP_CONTEXT_DEVICE_RPCS" +#python generate_plot.py "EXP2_COMP_CONTEXT_LINK_RPCS" +#python generate_plot.py "EXP2_COMP_CONTEXT_SERVICE_RPCS" +#python generate_plot.py "EXP2_COMP_CONTEXT_SLICE_RPCS" +#python generate_plot.py "EXP2_COMP_CONTEXT_TOPOLOGY_RPCS" +#python generate_plot.py "EXP2_COMP_CONTEXT_CONNECTION_RPCS" +#python generate_plot.py "EXP2_COMP_DEVICE_RPCS" +#python generate_plot.py "EXP2_COMP_SERVICE_RPCS" +#python generate_plot.py "EXP2_COMP_SLICE_RPCS" +#python generate_plot.py "EXP2_COMP_PATHCOMP_RPCS" +#python generate_plot.py "EXP2_COMP_DLT_RPCS" diff --git a/src/common/method_wrappers/results-perf-eval/emulated/generate_plot.py b/src/common/method_wrappers/results-perf-eval/emulated/generate_plot.py new file mode 100644 index 0000000000000000000000000000000000000000..74ae49c26b56cae22d812496633a96ea1b595405 --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/emulated/generate_plot.py @@ -0,0 +1,219 @@ +import enum, sys +import numpy as np +import matplotlib.pyplot as plt + +class PlotName(enum.Enum): + EXP1_DEVICE_DRIVER_EMU_L2NM = 'exp1-dev-drv-emu-l2nm' + EXP1_DEVICE_DRIVER_EMU_L3NM = 'exp1-dev-drv-emu-l3nm' + EXP1_DEVICE_DRIVER_TAPI = 'exp1-dev-drv-tapi' + EXP1_SERVICE_HANDLER_EMU_L2NM = 'exp1-svc-hdl-l2nm-emu' + EXP1_SERVICE_HANDLER_EMU_L3NM = 'exp1-svc-hdl-l3nm-emu' + EXP1_SERVICE_HANDLER_TAPI = 'exp1-svc-hdl-tapi' + EXP1_COMP_PATHCOMP_RPC_COMPUTE = 'exp1-pathcomp-rpc-compute' + + EXP2_DEVICE_DRIVER_EMU = 'exp2-device-driver-emu' + EXP2_SERVICE_HANDLER_EMU_L2NM = 'exp2-svc-hdl-l2nm-emu' + EXP2_SERVICE_HANDLER_EMU_L3NM = 'exp2-svc-hdl-l3nm-emu' + + EXP2_COMP_CONTEXT_DEVICE_RPCS = 'exp2-context-device-rpcs' + EXP2_COMP_CONTEXT_LINK_RPCS = 'exp2-context-link-rpcs' + EXP2_COMP_CONTEXT_SERVICE_RPCS = 'exp2-context-service-rpcs' + EXP2_COMP_CONTEXT_SLICE_RPCS = 'exp2-context-slice-rpcs' + EXP2_COMP_CONTEXT_TOPOLOGY_RPCS = 'exp2-context-topology-rpcs' + EXP2_COMP_CONTEXT_CONNECTION_RPCS = 'exp2-context-connection-rpcs' + EXP2_COMP_DEVICE_RPCS = 'exp2-device-rpcs' + EXP2_COMP_SERVICE_RPCS = 'exp2-service-rpcs' + EXP2_COMP_SLICE_RPCS = 'exp2-slice-rpcs' + EXP2_COMP_PATHCOMP_RPCS = 'exp2-pathcomp-rpcs' + EXP2_COMP_DLT_RPCS = 'exp2-dlt-rpcs' + +plot_name = PlotName.__members__.get(sys.argv[1]) +if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name))) + +PLOTS = { + PlotName.EXP1_DEVICE_DRIVER_EMU_L2NM: ( + 'Device Driver - Emulated (using L2NM services)', '0.0001-1', [ + ('GetConfig', [0,27,252,212,160,261,26,2,3,9,19,11,2,1,0,0,0]), + ('SetConfig', [575,56,112,78,61,82,8,0,2,5,5,0,1, 0,0,0,0]), + ('DeleteConfig', [606,96,150,66,29,31,5,0,0,1,1,0, 0,0,0,0,0]), + ]), + + PlotName.EXP1_DEVICE_DRIVER_EMU_L3NM: ( + 'Device Driver - Emulated (using L3NM services)', '0.0001-1', [ + ('GetConfig', [0,1,40,83,127,460,132,24,13,39,36,31,9,5,1,0,0]), + ('SetConfig', [487,29,110,52,55,171,48,6,6,15,12,8,0,1, 0,0,0]), + ('DeleteConfig', [510,86,79,43,26,120,70,20,6,9,15,8,5,3, 0,0,0]), + ]), + + PlotName.EXP1_DEVICE_DRIVER_TAPI: ( + #'Device Driver - TAPI', '0.0001-1', [ + # ('GetConfig', [0,0,0,0,0,0,0,0,0,1,1,3,10,159,14, 0,0]), + # ('SetConfig', [92,3,1,0,0,0,0,6,11,47,13,13,0,0,0,0,0]), + # ('DeleteConfig', [90,0,0,0,0,0,3,14,25,35,6,11,2,0,0,0,0]), + #]), + 'Device Driver - TAPI', '0.0001-1', [ + ('GetConfig', [0,0,0,0,0,0,0,0,0,1,1,3,10,159,14, 0,0]), + ('SetConfig', [0,0,0,0,0,0,0,6,11,47,13,13,0,0,0,0,0]), + ('DeleteConfig', [0,0,0,0,0,0,3,14,25,35,6,11,2,0,0,0,0]), + ]), + + PlotName.EXP1_SERVICE_HANDLER_EMU_L2NM: ( + 'Service Handler - L2NM Emulated', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,41,35,12,1,0]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,3,29,45,7,0,0]), + ]), + + PlotName.EXP1_SERVICE_HANDLER_EMU_L3NM: ( + 'Service Handler - L3NM Emulated', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,8,27,29,15,11]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,6,22,29,18,11]), + ]), + + PlotName.EXP1_SERVICE_HANDLER_TAPI: ( + 'Service Handler - TAPI', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,4,79,2,0,0,0,0]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,5,0,3,1,73,12,0,0,0,0]), + ]), + + PlotName.EXP1_COMP_PATHCOMP_RPC_COMPUTE: ( + 'PathComp - Compute RPC', '0.01-5', [ + ('Compute (using L2NM services)', [0,0,20,32,14,22,0]), + ('Compute (using L3NM services)', [0,1,1,10,17,59,2]), + ('Compute (using TAPI services)', [3,70,10,3,2,6,0]), + ]), + + PlotName.EXP2_DEVICE_DRIVER_EMU: ( + 'Device Driver - Emulated', '0.0001-0.25', [ + ('GetConfig', [0,21,198,247,190,332,28,5,3,7,14,8,0,0]), + ('SetConfig', [558,61,139,85,57,117,22,1,2,4,1,5,1,0]), + ('DeleteConfig', [573,123,142,63,30,78,24,2,2,8,5,2,0,0]), + ]), + + PlotName.EXP2_SERVICE_HANDLER_EMU_L2NM: ( + 'Service Handler - L2NM Emulated', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,2,18,15,4,1,2,2,0,0,0]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,1,0,20,20,5,1,0,0,0,0,0]), + ]), + + PlotName.EXP2_SERVICE_HANDLER_EMU_L3NM: ( + 'Service Handler - L3NM Emulated', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,13,24,2,5,4,1,0,0,0]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,11,27,7,3,1,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_DEVICE_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('GetDevice', [0,0,0,0,6,130,348,305,382,578,76,7,6,0,0,0,0]), + ('ListDevices', [0,0,0,0,0,0,0,0,0,4,37,43,8,2,0,0,0]), + ('SetDevice', [0,0,0,0,0,42,236,158,179,380,46,9,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_LINK_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('GetLink', [0,1,9,5,1,1,0,0,0,0,0,0,0,0,0,0,0]), + ('ListLinks', [0,0,0,0,0,5,20,23,27,17,2,0,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_SERVICE_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('GetService', [124,120,42,55,80,167,62,34,14,33,9,2,1,0,0,0,0]), + ('ListServices', [0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0]), + ('RemoveService', [0,0,3,18,15,29,13,5,1,4,1,0,0,0,0,0,0]), + ('SetService', [6,90,59,51,63,165,70,32,5,12,8,2,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_SLICE_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('GetSlice', [30,75,48,24,32,118,56,34,12,19,8,2,0,0,0,0,0]), + ('ListSlices', [0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0]), + ('RemoveSlice', [0,0,2,10,8,14,8,2,1,2,0,0,0,0,0,0,0]), + ('SetSlice', [6,29,22,18,21,70,25,12,11,13,1,0,0,0,0,0,0]), + ('UnsetSlice', [0,12,12,8,1,3,6,3,1,2,0,0,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_TOPOLOGY_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('GetTopology', [72,11,0,0,0,2,6,1,0,1,1,0,0,0,0,0,0]), + ('ListTopologies', [0,0,0,0,5,38,25,10,6,10,0,0,0,0,0,0,0]), + ('ListTopologyIds', [1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_CONNECTION_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('ListConnections', [13,21,5,19,23,145,46,27,10,15,4,2,0,1,0,0,0]), + ('ListContextIds', [1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]), + ('RemoveConnection', [0,0,17,17,12,23,11,2,2,6,0,0,0,0,0,0,0]), + ('SetConnection', [0,0,17,26,9,18,4,7,2,5,4,2,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_DEVICE_RPCS: ( + 'Device RPCs', '0.001-7.5', [ + ('AddDevice', [0,0,0,0,0,0,0,1,2,4,0,0,0,0,0,0,0]), + ('ConfigureDevice', [0,0,0,0,0,0,0,0,2,140,367,243,127,143,19,9,5]), + ]), + + PlotName.EXP2_COMP_SERVICE_RPCS: ( + 'Service RPCs', '0.001-7.5', [ + ('CreateService', [0,0,0,9,11,32,13,10,4,7,3,2,1,0,0,0,0]), + ('UpdateService', [0,0,0,0,0,0,0,0,0,0,0,0,0,19,41,15,18]), + ('DeleteService', [0,0,0,0,0,0,0,0,0,0,0,0,1,23,45,21,6]), + ]), + + PlotName.EXP2_COMP_SLICE_RPCS: ( + 'Slice RPCs', '0.001-7.5', [ + ('CreateSlice', [0,0,0,0,0,4,5,4,10,11,6,2,1,0,0,0,0]), + ('UpdateSlice', [0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,10,10]), + ('DeleteSice', [0,0,0,0,0,0,0,0,0,0,0,0,0,9,21,15,2]), + ]), + + PlotName.EXP2_COMP_PATHCOMP_RPCS: ( + 'PathComp RPCs', '0.001-7.5', [ + ('Compute', [0,0,0,0,0,0,0,0,0,0,13,43,22,14,0,0,0]), + ]), + + PlotName.EXP2_COMP_DLT_RPCS: ( + 'DLT RPCs', '0.001-7.5', [ + ('RecordDevice', [0,0,0,0,0,0,0,1,4,5,6,6,0,26,71,94,306]), + ('RecordLink', [0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0]), + ('RecordService', [0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,30,184]), + ('RecordSlice', [0,0,0,0,0,0,0,0,2,3,1,2,1,6,19,23,82]), + ]), +} + +BINS_RANGES = { + '0.0001-100' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, + 25, 50, 75, 100, 200], + '0.0001-1' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1], + '0.0001-0.25' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25], + '0.001-100' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200], + '0.001-7.5' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.01-5' : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5], +} + +# plot the cumulative histogram +fig, ax = plt.subplots(figsize=(8, 8)) + +bins = PLOTS[plot_name][1] +if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]] +bins = np.array(bins).astype(float) + +for label, counts in PLOTS[plot_name][2]: + counts = np.array(counts).astype(float) + assert len(bins) == len(counts) + 1 + centroids = (bins[1:] + bins[:-1]) / 2 + ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True, + histtype='step', cumulative=True, label=label) + +ax.grid(True) +ax.legend(loc='best') +ax.set_title(PLOTS[plot_name][0]) +ax.set_xlabel('seconds') +ax.set_ylabel('Likelihood of occurrence') +plt.xscale('log') +plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) +plt.show() diff --git a/src/common/method_wrappers/tests/DummyDeviceDriver.py b/src/common/method_wrappers/tests/DummyDeviceDriver.py new file mode 100644 index 0000000000000000000000000000000000000000..f4fe1169e8b59f1fd11ee3d7dd1fa85198c43374 --- /dev/null +++ b/src/common/method_wrappers/tests/DummyDeviceDriver.py @@ -0,0 +1,39 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import random, time +from common.perf_eval_method_wrapper.Decorator import MetricsPool, meter_method + +EXCEPTION_RATIO = 0.05 + +METRICS_POOL = MetricsPool(labels={'driver': 'dummy'}) + +class DummyDeviceDriver: + def __init__(self) -> None: + pass + + @meter_method(METRICS_POOL) + def get_config(self): + if random.random() < EXCEPTION_RATIO: raise Exception() + time.sleep(random.random()) + + @meter_method(METRICS_POOL) + def set_config(self): + if random.random() < EXCEPTION_RATIO: raise Exception() + time.sleep(random.random()) + + @meter_method(METRICS_POOL) + def del_config(self): + if random.random() < EXCEPTION_RATIO: raise Exception() + time.sleep(random.random()) diff --git a/src/common/method_wrappers/tests/README.md b/src/common/method_wrappers/tests/README.md new file mode 100644 index 0000000000000000000000000000000000000000..db9c0687098981d5410326c1330294931f496e3c --- /dev/null +++ b/src/common/method_wrappers/tests/README.md @@ -0,0 +1,63 @@ +# Performance Evaluation Method Wrapper + +## Description: + +- enable prometheus addon: +``` +tfs@tfs-vm:~/tfs-ctrl$ microk8s.enable prometheus +``` + +- wait till prometheus becomes enabled (when enabled, press Ctrl+C): +``` +tfs@tfs-vm:~/tfs-ctrl$ watch -n 1 microk8s.status --wait-ready +``` + +- wait till all pods in the monitoring namespace have STATE=Running and READY=X/X (when done, press Ctrl+C): +``` +tfs@tfs-vm:~/tfs-ctrl$ watch -n 1 kubectl get pods --all-namespaces +``` + +- deploy as: +``` +tfs@tfs-vm:~/tfs-ctrl$ source src/common/method_wrappers/tests/deploy_specs.sh +tfs@tfs-vm:~/tfs-ctrl$ ./deploy.sh +``` + +- expose prometheus and grafana + - (required) terminal 1 (grafana UI): `kubectl port-forward -n monitoring service/grafana --address 0.0.0.0 3001:3000` + - (optional) terminal 2 (prometheus UI): `kubectl port-forward -n monitoring service/prometheus-k8s --address 0.0.0.0 9090:9090` + - (optional) terminal 3 (alertmanager UI): `kubectl port-forward -n monitoring service/alertmanager-main --address 0.0.0.0 9093:9093` + +- if using remote server/VM for running MicroK8s and VSCode, forward ports 3001, 9090, 9093 + +- (only used for internal framework debugging) run manual tests over the performance evaluation framework + - terminal 4: + ``` + export PYTHONPATH=/home/tfs/tfs-ctrl/src + python -m common.method_wrappers.tests + ``` + +- log into grafana: + - browse: http://127.0.0.1:3000 + - user/pass: admin/admin + - upload dashboards through "left menu > Dashboards > Manage > Import" + - upload grafana_prometheus_component_rpc.json + - upload grafana_prometheus_device_driver.json + - upload grafana_prometheus_service_handler.json + - watch in real time the dashboard + +- upload topology through WebUI and navigate + - should see histogram changing in Grafana + +## References: +- [Prometheus - Tutorials - Getting Started](https://prometheus.io/docs/tutorials/getting_started/) +- [Prometheus - Tutorials - Understanding metric types](https://prometheus.io/docs/tutorials/understanding_metric_types/) +- [Prometheus - Tutorials - Instrumenting HTTP server in Go](https://prometheus.io/docs/tutorials/instrumenting_http_server_in_go/) +- [Prometheus - Tutorials - Visualizing metrics using Grafana](https://prometheus.io/docs/tutorials/visualizing_metrics_using_grafana/) +- [Prometheus - Tutorials - Alerting based on metrics](https://prometheus.io/docs/tutorials/alerting_based_on_metrics/) +- [Prometheus Operator - Guide](https://www.infracloud.io/blogs/prometheus-operator-helm-guide/) +- [Prometheus Operator - ServiceMonitor definition](https://prometheus-operator.dev/docs/operator/api/#monitoring.coreos.com/v1.ServiceMonitor) +- [Prometheus Operator - ServiceMonitor example 1](https://stackoverflow.com/questions/45613660/how-do-you-add-scrape-targets-to-a-prometheus-server-that-was-installed-with-kub) +- [Prometheus Operator - ServiceMonitor example 2](https://stackoverflow.com/questions/52991038/how-to-create-a-servicemonitor-for-prometheus-operator) +- [How to visualize Prometheus histograms in Grafana](https://grafana.com/blog/2020/06/23/how-to-visualize-prometheus-histograms-in-grafana/) +- [Prometheus Histograms with Grafana Heatmaps](https://towardsdatascience.com/prometheus-histograms-with-grafana-heatmaps-d556c28612c7) diff --git a/src/pathcomp/service/__init__.py b/src/common/method_wrappers/tests/__init__.py similarity index 100% rename from src/pathcomp/service/__init__.py rename to src/common/method_wrappers/tests/__init__.py diff --git a/src/common/method_wrappers/tests/__main__.py b/src/common/method_wrappers/tests/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..505991f61ddb955196218230bfd533d8ea6ddf0d --- /dev/null +++ b/src/common/method_wrappers/tests/__main__.py @@ -0,0 +1,32 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import logging, random +from prometheus_client import start_http_server +from .DummyDeviceDriver import DummyDeviceDriver + +logging.basicConfig(level=logging.DEBUG) +LOGGER = logging.getLogger(__name__) + +def main(): + # Start up the server to expose the metrics + start_http_server(8000) + + ddd = DummyDeviceDriver() + while True: + func = random.choice([ddd.get_config, ddd.set_config, ddd.del_config]) + func() + +if __name__ == '__main__': + main() diff --git a/src/common/method_wrappers/tests/deploy_specs.sh b/src/common/method_wrappers/tests/deploy_specs.sh new file mode 100644 index 0000000000000000000000000000000000000000..238918480ae857e64efb52f652b20ab08a21c2df --- /dev/null +++ b/src/common/method_wrappers/tests/deploy_specs.sh @@ -0,0 +1,26 @@ +# 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. +# Supported components are: +# context device automation policy service compute monitoring webui +# interdomain slice pathcomp dlt +# dbscanserving opticalattackmitigator opticalattackdetector +# l3_attackmitigator l3_centralizedattackdetector l3_distributedattackdetector +export TFS_COMPONENTS="context device pathcomp service slice webui" # automation monitoring compute + +# 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" + +# Set additional manifest files to be applied after the deployment +export TFS_EXTRA_MANIFESTS="manifests/nginx_ingress_http.yaml manifests/servicemonitors.yaml" + +# Set the new 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" #${TFS_SKIP_BUILD:-"YES"} diff --git a/src/common/method_wrappers/tests/grafana_prometheus_component_rpc.json b/src/common/method_wrappers/tests/grafana_prometheus_component_rpc.json new file mode 100644 index 0000000000000000000000000000000000000000..b5b857e7573264f26289ba9a72ec5444e4ac71a4 --- /dev/null +++ b/src/common/method_wrappers/tests/grafana_prometheus_component_rpc.json @@ -0,0 +1,426 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 25, + "iteration": 1671297223428, + "links": [], + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "prometheus", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.5.4", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(tfs_[[component]]_rpc_[[method]]_counter_requests_started_total{pod=~\"[[pod]]\"})", + "interval": "", + "legendFormat": "started", + "queryType": "randomWalk", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum(tfs_[[component]]_rpc_[[method]]_counter_requests_completed_total{pod=~\"[[pod]]\"})", + "hide": false, + "interval": "", + "legendFormat": "completed", + "refId": "B" + }, + { + "exemplar": true, + "expr": "sum(tfs_[[component]]_rpc_[[method]]_counter_requests_started_total{pod=~\"[[pod]]\"})", + "hide": false, + "interval": "", + "legendFormat": "failed", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "transformations": [], + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:935", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:936", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateRdYlGn", + "exponent": 0.5, + "max": null, + "min": 0, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "prometheus", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 6 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 2, + "interval": "60s", + "legend": { + "show": true + }, + "pluginVersion": "7.5.4", + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(\r\n max_over_time(tfs_[[component]]_rpc_[[method]]_histogram_duration_bucket{pod=~\"[[pod]]\"}[1m]) -\r\n min_over_time(tfs_[[component]]_rpc_[[method]]_histogram_duration_bucket{pod=~\"[[pod]]\"}[1m])\r\n) by (le)", + "format": "heatmap", + "instant": false, + "interval": "1m", + "intervalFactor": 1, + "legendFormat": "{{le}}", + "queryType": "randomWalk", + "refId": "A" + } + ], + "title": "Histogram", + "tooltip": { + "show": true, + "showHistogram": true + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "prometheus", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.5.4", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(tfs_[[component]]_rpc_[[method]]_histogram_duration_sum{pod=~\"[[pod]]\"})", + "hide": false, + "interval": "", + "legendFormat": "total time", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Total Exec Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "transformations": [], + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:407", + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:408", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "5s", + "schemaVersion": 27, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "selected": false, + "text": "context", + "value": "context" + }, + "datasource": "prometheus", + "definition": "metrics(tfs_)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Component", + "multi": false, + "name": "component", + "options": [], + "query": { + "query": "metrics(tfs_)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/tfs_(.+)_rpc_.*/", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "getcontext", + "value": "getcontext" + }, + "datasource": "prometheus", + "definition": "metrics(tfs_[[component]]_rpc_)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Method", + "multi": false, + "name": "method", + "options": [], + "query": { + "query": "metrics(tfs_[[component]]_rpc_)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/tfs_[[component]]_rpc_(.+)_histogram_duration_bucket/", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "prometheus", + "definition": "label_values(tfs_[[component]]_rpc_[[method]]_histogram_duration_bucket, pod)", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "Pod", + "multi": true, + "name": "pod", + "options": [], + "query": { + "query": "label_values(tfs_[[component]]_rpc_[[method]]_histogram_duration_bucket, pod)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-15m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "TFS / Component RPCs", + "uid": "KKxzxIFVz", + "version": 21 +} \ No newline at end of file diff --git a/src/common/method_wrappers/tests/grafana_prometheus_device_driver.json b/src/common/method_wrappers/tests/grafana_prometheus_device_driver.json new file mode 100644 index 0000000000000000000000000000000000000000..2926a409b3b77b16c4e7b5d86ecd7d56f6acdebc --- /dev/null +++ b/src/common/method_wrappers/tests/grafana_prometheus_device_driver.json @@ -0,0 +1,431 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 26, + "iteration": 1671318718779, + "links": [], + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "prometheus", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.5.4", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(tfs_device_driver_[[method]]_counter_requests_started_total{driver=~\"[[driver]]\", pod=~\"deviceservice-[[pod]]\"})", + "interval": "", + "legendFormat": "started", + "queryType": "randomWalk", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum(tfs_device_driver_[[method]]_counter_requests_completed_total{driver=~\"[[driver]]\", pod=~\"deviceservice-[[pod]]\"})", + "hide": false, + "interval": "", + "legendFormat": "completed", + "refId": "B" + }, + { + "exemplar": true, + "expr": "sum(tfs_device_driver_[[method]]_counter_requests_failed_total{driver=~\"[[driver]]\", pod=~\"deviceservice-[[pod]]\"})", + "hide": false, + "interval": "", + "legendFormat": "failed", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "transformations": [], + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:864", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:865", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateRdYlGn", + "exponent": 0.5, + "max": null, + "min": 0, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "prometheus", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 6 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 2, + "interval": "60s", + "legend": { + "show": true + }, + "pluginVersion": "7.5.4", + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(\r\n max_over_time(tfs_device_driver_[[method]]_histogram_duration_bucket{driver=~\"[[driver]]\", pod=~\"deviceservice-[[pod]]\"}[1m]) -\r\n min_over_time(tfs_device_driver_[[method]]_histogram_duration_bucket{driver=~\"[[driver]]\", pod=~\"deviceservice-[[pod]]\"}[1m])\r\n) by (le)", + "format": "heatmap", + "instant": false, + "interval": "60s", + "intervalFactor": 1, + "legendFormat": "{{le}}", + "queryType": "randomWalk", + "refId": "A" + } + ], + "timeFrom": null, + "title": "Histogram", + "tooltip": { + "show": true, + "showHistogram": true + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "prometheus", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.5.4", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(tfs_device_driver_[[method]]_histogram_duration_sum{driver=~\"[[driver]]\", pod=~\"deviceservice-[[pod]]\"})", + "hide": false, + "interval": "", + "legendFormat": "total time", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Total Exec Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "transformations": [], + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:407", + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:408", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "5s", + "schemaVersion": 27, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": "", + "current": { + "selected": false, + "text": "setconfig", + "value": "setconfig" + }, + "datasource": "prometheus", + "definition": "metrics(tfs_device_driver_.+)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Method", + "multi": false, + "name": "method", + "options": [], + "query": { + "query": "metrics(tfs_device_driver_.+)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/tfs_device_driver_(.+config)_histogram_duration_bucket/", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "prometheus", + "definition": "label_values(tfs_device_driver_[[method]]_histogram_duration_bucket, driver)", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "Driver", + "multi": true, + "name": "driver", + "options": [], + "query": { + "query": "label_values(tfs_device_driver_[[method]]_histogram_duration_bucket, driver)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "prometheus", + "definition": "label_values(tfs_device_driver_[[method]]_histogram_duration_bucket, pod)", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "Pod", + "multi": true, + "name": "pod", + "options": [], + "query": { + "query": "label_values(tfs_device_driver_[[method]]_histogram_duration_bucket, pod)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/deviceservice-(.*)/", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-15m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "TFS / Device / Driver", + "uid": "eAg-wsOVk", + "version": 30 +} \ No newline at end of file diff --git a/src/common/method_wrappers/tests/grafana_prometheus_service_handler.json b/src/common/method_wrappers/tests/grafana_prometheus_service_handler.json new file mode 100644 index 0000000000000000000000000000000000000000..48e770afe4bba9c2eb5df76d3532bf35d6cfe192 --- /dev/null +++ b/src/common/method_wrappers/tests/grafana_prometheus_service_handler.json @@ -0,0 +1,432 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 27, + "iteration": 1671319012315, + "links": [], + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "prometheus", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.5.4", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(tfs_service_handler_[[method]]_counter_requests_started_total{handler=~\"[[handler]]\", pod=~\"serviceservice-[[pod]]\"})", + "instant": false, + "interval": "", + "legendFormat": "started", + "queryType": "randomWalk", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum(tfs_service_handler_[[method]]_counter_requests_completed_total{handler=~\"[[handler]]\", pod=~\"serviceservice-[[pod]]\"})", + "hide": false, + "interval": "", + "legendFormat": "completed", + "refId": "B" + }, + { + "exemplar": true, + "expr": "sum(tfs_service_handler_[[method]]_counter_requests_failed_total{handler=~\"[[handler]]\", pod=~\"serviceservice-[[pod]]\"})", + "hide": false, + "interval": "", + "legendFormat": "failed", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "transformations": [], + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:935", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:936", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateRdYlGn", + "exponent": 0.5, + "max": null, + "min": 0, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "prometheus", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 6 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 2, + "interval": "60s", + "legend": { + "show": true + }, + "pluginVersion": "7.5.4", + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(\r\n max_over_time(tfs_service_handler_[[method]]_histogram_duration_bucket{handler=~\"[[handler]]\", pod=~\"serviceservice-[[pod]]\"}[1m]) -\r\n min_over_time(tfs_service_handler_[[method]]_histogram_duration_bucket{handler=~\"[[handler]]\", pod=~\"serviceservice-[[pod]]\"}[1m])\r\n) by (le)", + "format": "heatmap", + "instant": false, + "interval": "1m", + "intervalFactor": 1, + "legendFormat": "{{le}}", + "queryType": "randomWalk", + "refId": "A" + } + ], + "timeFrom": null, + "title": "Histogram", + "tooltip": { + "show": true, + "showHistogram": true + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "prometheus", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.5.4", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(tfs_service_handler_[[method]]_histogram_duration_sum{handler=~\"[[handler]]\", pod=~\"serviceservice-[[pod]]\"})", + "hide": false, + "interval": "", + "legendFormat": "total time", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Total Exec Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "transformations": [], + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:407", + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:408", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "5s", + "schemaVersion": 27, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": "", + "current": { + "selected": false, + "text": "setendpoint", + "value": "setendpoint" + }, + "datasource": "prometheus", + "definition": "metrics(tfs_service_handler_.+)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Method", + "multi": false, + "name": "method", + "options": [], + "query": { + "query": "metrics(tfs_service_handler_.+)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/tfs_service_handler_(.+)_histogram_duration_bucket/", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "prometheus", + "definition": "label_values(tfs_service_handler_[[method]]_histogram_duration_bucket, handler)", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "Handler", + "multi": true, + "name": "handler", + "options": [], + "query": { + "query": "label_values(tfs_service_handler_[[method]]_histogram_duration_bucket, handler)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": "prometheus", + "definition": "label_values(tfs_service_handler_[[method]]_histogram_duration_bucket, pod)", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "Pod", + "multi": true, + "name": "pod", + "options": [], + "query": { + "query": "label_values(tfs_service_handler_[[method]]_histogram_duration_bucket, pod)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "/serviceservice-(.*)/", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-15m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "TFS / Service / Handler", + "uid": "DNOhOIF4k", + "version": 16 +} \ No newline at end of file diff --git a/src/common/method_wrappers/tests/old/docker_grafana.sh b/src/common/method_wrappers/tests/old/docker_grafana.sh new file mode 100644 index 0000000000000000000000000000000000000000..2a1484d5504c69f08b23d652879f4c6bace44548 --- /dev/null +++ b/src/common/method_wrappers/tests/old/docker_grafana.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + + +docker create -it --name=prometheus -p 9090:9090 \ + -v /home/tfs/tfs-ctrl/test-prom-cli/prometheus.yml:/etc/prometheus/prometheus.yml \ + prom/prometheus + +docker create -it --name=grafana -p 3000:3000 \ + grafana/grafana diff --git a/src/common/method_wrappers/tests/old/prometheus.yml b/src/common/method_wrappers/tests/old/prometheus.yml new file mode 100644 index 0000000000000000000000000000000000000000..af2849209ab75eef57d41d0489bf695baa6d5fde --- /dev/null +++ b/src/common/method_wrappers/tests/old/prometheus.yml @@ -0,0 +1,23 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +global: + scrape_interval: 15s # when Prometheus is pulling data from exporters etc + evaluation_interval: 30s # time between each evaluation of Prometheus' alerting rules + +scrape_configs: +- job_name: ddd # your project name + static_configs: + - targets: + - 172.17.0.1:8000 diff --git a/src/common/method_wrappers/tests/prometheus_queries.txt b/src/common/method_wrappers/tests/prometheus_queries.txt new file mode 100644 index 0000000000000000000000000000000000000000..9eb69e970aa1daffc0a491734dad5b381051e994 --- /dev/null +++ b/src/common/method_wrappers/tests/prometheus_queries.txt @@ -0,0 +1,63 @@ +TFS/Components: +--------------- + +variables: +name=component + query=metrics(tfs_) + regex=/tfs_(.+)_rpc_.*/ +name=method + query=metrics(tfs_[[component]]_rpc_) + regex=/tfs_[[component]]_rpc_(.+)_histogram_duration_bucket/ + +plots: +tfs_[[component]]_rpc_[[method]]_counter_requests_started_total +tfs_[[component]]_rpc_[[method]]_counter_requests_completed_total +tfs_[[component]]_rpc_[[method]]_counter_requests_failed_total +tfs_[[component]]_rpc_[[method]]_histogram_duration_sum +#sum(increase(tfs_[[component]]_rpc_[[method]]_histogram_duration_bucket[$__rate_interval])) by (le) +sum( + max_over_time(tfs_[[component]]_rpc_[[method]]_histogram_duration_bucket{pod=~"[[pod]]"}[1m]) - + min_over_time(tfs_[[component]]_rpc_[[method]]_histogram_duration_bucket{pod=~"[[pod]]"}[1m]) +) by (le) + + +TFS/Device/Driver: +------------------ + +variables: +name=method + query=metrics(tfs_device_driver_.+) + regex=/tfs_device_driver_(.+config)_histogram_duration_bucket/ +name=driver + query=label_values(tfs_device_driver_[[method]]_histogram_duration_bucket, driver) + regex= + +plots: +tfs_device_driver_[[method]]_counter_requests_started_total{driver="[[driver]]"} +tfs_device_driver_[[method]]_counter_requests_completed_total{driver="[[driver]]"} +tfs_device_driver_[[method]]_counter_requests_failed_total{driver="[[driver]]"} +tfs_device_driver_[[method]]_histogram_duration_sum{driver="[[driver]]"} +#sum(increase(tfs_device_driver_[[method]]_histogram_duration_bucket{driver="[[driver]]"}[$__rate_interval])) by (le) +sum( + max_over_time(tfs_device_driver_[[method]]_histogram_duration_bucket{driver="[[driver]]", pod=~"deviceservice-[[pod]]"}[1m]) - + min_over_time(tfs_device_driver_[[method]]_histogram_duration_bucket{driver="[[driver]]", pod=~"deviceservice-[[pod]]"}[1m]) +) by (le) + +variables: +name=method + query=metrics(tfs_service_handler_.+) + regex=/tfs_service_handler_(.+config)_histogram_duration_bucket/ +name=driver + query=label_values(tfs_service_handler_[[method]]_histogram_duration_bucket, handler) + regex= + +plots: +tfs_service_handler_[[method]]_counter_requests_started_total{handler="[[handler]]"} +tfs_service_handler_[[method]]_counter_requests_completed_total{handler="[[handler]]"} +tfs_service_handler_[[method]]_counter_requests_failed_total{handler="[[handler]]"} +tfs_service_handler_[[method]]_histogram_duration_sum{handler="[[handler]]"} +#sum(increase(tfs_service_handler_[[method]]_histogram_duration_bucket{handler="[[handler]]"}[$__rate_interval])) by (le) +sum( + max_over_time(tfs_service_handler_[[method]]_histogram_duration_bucket{handler=~"[[handler]]", pod=~"serviceservice-[[pod]]"}[1m]) - + min_over_time(tfs_service_handler_[[method]]_histogram_duration_bucket{handler=~"[[handler]]", pod=~"serviceservice-[[pod]]"}[1m]) +) by (le) diff --git a/src/common/rpc_method_wrapper/tests/test_unitary.py b/src/common/method_wrappers/tests/test_unitary.py similarity index 50% rename from src/common/rpc_method_wrapper/tests/test_unitary.py rename to src/common/method_wrappers/tests/test_unitary.py index c8fc7a2aa187dcb905a8c230b047ffb1171d2ccd..95e40f6411f9ced557f79dca8f907d1d44ed0fac 100644 --- a/src/common/rpc_method_wrapper/tests/test_unitary.py +++ b/src/common/method_wrappers/tests/test_unitary.py @@ -13,24 +13,15 @@ # limitations under the License. import grpc, logging, time -from common.rpc_method_wrapper.Decorator import create_metrics, safe_and_metered_rpc_method +from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method logging.basicConfig(level=logging.DEBUG) LOGGER = logging.getLogger(__name__) +METRICS_POOL = MetricsPool('Context', 'RPC') def test_database_instantiation(): - SERVICE_NAME = 'Context' - METHOD_NAMES = [ - 'ListContextIds', 'ListContexts', 'GetContext', 'SetContext', 'RemoveContext', 'GetContextEvents', - 'ListTopologyIds', 'ListTopologies', 'GetTopology', 'SetTopology', 'RemoveTopology', 'GetTopologyEvents', - 'ListDeviceIds', 'ListDevices', 'GetDevice', 'SetDevice', 'RemoveDevice', 'GetDeviceEvents', - 'ListLinkIds', 'ListLinks', 'GetLink', 'SetLink', 'RemoveLink', 'GetLinkEvents', - 'ListServiceIds', 'ListServices', 'GetService', 'SetService', 'RemoveService', 'GetServiceEvents', - ] - METRICS = create_metrics(SERVICE_NAME, METHOD_NAMES) - class TestServiceServicerImpl: - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetTopology(self, request, grpc_context : grpc.ServicerContext): print('doing funny things') time.sleep(0.1) @@ -39,6 +30,7 @@ def test_database_instantiation(): tssi = TestServiceServicerImpl() tssi.GetTopology(1, 2) - for metric_name,metric in METRICS.items(): - if 'GETTOPOLOGY_' not in metric_name: continue - print(metric_name, metric._child_samples()) # pylint: disable=protected-access + for metric_name,metric in METRICS_POOL.metrics.items(): + if 'TFS_CONTEXT_RPC_GETTOPOLOGY_' not in metric_name: continue + print(metric_name, metric._child_samples()) + raise Exception() diff --git a/src/common/orm/HighLevel.py b/src/common/orm/HighLevel.py index a5bdeae3e9607767b5215f6ff87cb0d8624918d0..3a4b0d6618d4b6ddc8ba185d65b796533a8bbc10 100644 --- a/src/common/orm/HighLevel.py +++ b/src/common/orm/HighLevel.py @@ -13,7 +13,7 @@ # limitations under the License. from typing import Any, Dict, List, Optional, Set, Tuple -from common.rpc_method_wrapper.ServiceExceptions import NotFoundException +from common.method_wrappers.ServiceExceptions import NotFoundException from common.orm.Database import Database from common.orm.backend.Tools import key_to_str from common.orm.fields.ForeignKeyField import ForeignKeyField diff --git a/src/common/rpc_method_wrapper/Decorator.py b/src/common/rpc_method_wrapper/Decorator.py deleted file mode 100644 index 31dc4b82bdaa8762b1dee5af247b3f8b7b9af2af..0000000000000000000000000000000000000000 --- a/src/common/rpc_method_wrapper/Decorator.py +++ /dev/null @@ -1,82 +0,0 @@ -# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) -# -# 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. - -import grpc, logging -from enum import Enum -from typing import Dict, List -from prometheus_client import Counter, Histogram -from prometheus_client.metrics import MetricWrapperBase -from common.tools.grpc.Tools import grpc_message_to_json_string -from .ServiceExceptions import ServiceException - -class RequestConditionEnum(Enum): - STARTED = 'started' - COMPLETED = 'completed' - FAILED = 'failed' - -def get_counter_requests(method_name : str, request_condition : RequestConditionEnum) -> Counter: - str_request_condition = request_condition.value - name = '{:s}_counter_requests_{:s}'.format(method_name.replace(':', '_'), str_request_condition) - description = '{:s} counter of requests {:s}'.format(method_name, str_request_condition) - return Counter(name, description) - -def get_histogram_duration(method_name : str) -> Histogram: - name = '{:s}_histogram_duration'.format(method_name.replace(':', '_')) - description = '{:s} histogram of request duration'.format(method_name) - return Histogram(name, description) - -METRIC_TEMPLATES = { - '{:s}_COUNTER_STARTED' : lambda method_name: get_counter_requests (method_name, RequestConditionEnum.STARTED), - '{:s}_COUNTER_COMPLETED' : lambda method_name: get_counter_requests (method_name, RequestConditionEnum.COMPLETED), - '{:s}_COUNTER_FAILED' : lambda method_name: get_counter_requests (method_name, RequestConditionEnum.FAILED), - '{:s}_HISTOGRAM_DURATION': lambda method_name: get_histogram_duration(method_name), -} - -def create_metrics(service_name : str, method_names : List[str]) -> Dict[str, MetricWrapperBase]: - metrics = {} - for method_name in method_names: - for template_name, template_generator_function in METRIC_TEMPLATES.items(): - metric_name = template_name.format(method_name).upper() - metrics[metric_name] = template_generator_function('{:s}:{:s}'.format(service_name, method_name)) - return metrics - -def safe_and_metered_rpc_method(metrics : Dict[str, MetricWrapperBase], logger : logging.Logger): - def outer_wrapper(func): - function_name = func.__name__ - HISTOGRAM_DURATION : Histogram = metrics.get('{:s}_HISTOGRAM_DURATION'.format(function_name).upper()) - COUNTER_STARTED : Counter = metrics.get('{:s}_COUNTER_STARTED' .format(function_name).upper()) - COUNTER_COMPLETED : Counter = metrics.get('{:s}_COUNTER_COMPLETED' .format(function_name).upper()) - COUNTER_FAILED : Counter = metrics.get('{:s}_COUNTER_FAILED' .format(function_name).upper()) - - @HISTOGRAM_DURATION.time() - def inner_wrapper(self, request, grpc_context : grpc.ServicerContext): - COUNTER_STARTED.inc() - try: - logger.debug('{:s} request: {:s}'.format(function_name, grpc_message_to_json_string(request))) - reply = func(self, request, grpc_context) - logger.debug('{:s} reply: {:s}'.format(function_name, grpc_message_to_json_string(reply))) - COUNTER_COMPLETED.inc() - return reply - except ServiceException as e: # pragma: no cover (ServiceException not thrown) - if e.code not in [grpc.StatusCode.NOT_FOUND, grpc.StatusCode.ALREADY_EXISTS]: - # Assume not found or already exists is just a condition, not an error - logger.exception('{:s} exception'.format(function_name)) - COUNTER_FAILED.inc() - grpc_context.abort(e.code, e.details) - except Exception as e: # pragma: no cover, pylint: disable=broad-except - logger.exception('{:s} exception'.format(function_name)) - COUNTER_FAILED.inc() - grpc_context.abort(grpc.StatusCode.INTERNAL, str(e)) - return inner_wrapper - return outer_wrapper diff --git a/src/common/tests/EventTools.py b/src/common/tests/EventTools.py index ceff4d60e597690b29d5f1bcac894c081eb88a56..d0f82841395ea77a7c2483099458760769f8c535 100644 --- a/src/common/tests/EventTools.py +++ b/src/common/tests/EventTools.py @@ -15,7 +15,7 @@ import json, logging from typing import Dict, List, Tuple from common.proto.context_pb2 import ( - ConnectionEvent, ContextEvent, DeviceEvent, EventTypeEnum, LinkEvent, ServiceEvent, TopologyEvent) + ConnectionEvent, ContextEvent, DeviceEvent, EventTypeEnum, LinkEvent, ServiceEvent, SliceEvent, TopologyEvent) from common.tools.grpc.Tools import grpc_message_to_json_string from context.client.EventsCollector import EventsCollector @@ -32,6 +32,7 @@ CLASSNAME_CONTEXT_EVENT = class_to_classname(ContextEvent) CLASSNAME_TOPOLOGY_EVENT = class_to_classname(TopologyEvent) CLASSNAME_DEVICE_EVENT = class_to_classname(DeviceEvent) CLASSNAME_LINK_EVENT = class_to_classname(LinkEvent) +CLASSNAME_SLICE_EVENT = class_to_classname(SliceEvent) CLASSNAME_SERVICE_EVENT = class_to_classname(ServiceEvent) CLASSNAME_CONNECTION_EVENT = class_to_classname(ConnectionEvent) @@ -40,6 +41,7 @@ EVENT_CLASS_NAME__TO__ENTITY_ID_SELECTOR = { CLASSNAME_TOPOLOGY_EVENT : lambda event: event.topology_id, CLASSNAME_DEVICE_EVENT : lambda event: event.device_id, CLASSNAME_LINK_EVENT : lambda event: event.link_id, + CLASSNAME_SLICE_EVENT : lambda event: event.slice_id, CLASSNAME_SERVICE_EVENT : lambda event: event.service_id, CLASSNAME_CONNECTION_EVENT: lambda event: event.connection_id, } diff --git a/src/common/tests/LoadScenario.py b/src/common/tests/LoadScenario.py new file mode 100644 index 0000000000000000000000000000000000000000..3c3940e67b5772f3ba3ec0634c49f26b92bbc571 --- /dev/null +++ b/src/common/tests/LoadScenario.py @@ -0,0 +1,50 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import logging +from common.tools.descriptor.Loader import DescriptorLoader, compose_notifications +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from service.client.ServiceClient import ServiceClient +from slice.client.SliceClient import SliceClient + +LOGGER = logging.getLogger(__name__) +LOGGERS = { + 'success': LOGGER.info, + 'danger' : LOGGER.error, + 'error' : LOGGER.error, +} + +def load_scenario_from_descriptor( + descriptor_file : str, context_client : ContextClient, device_client : DeviceClient, + service_client : ServiceClient, slice_client : SliceClient +) -> DescriptorLoader: + with open(descriptor_file, 'r', encoding='UTF-8') as f: + descriptors = f.read() + + descriptor_loader = DescriptorLoader( + descriptors, + context_client=context_client, device_client=device_client, + service_client=service_client, slice_client=slice_client) + results = descriptor_loader.process() + + num_errors = 0 + for message,level in compose_notifications(results): + LOGGERS.get(level)(message) + if level != 'success': num_errors += 1 + if num_errors > 0: + MSG = 'Failed to load descriptors in file {:s}' + raise Exception(MSG.format(str(descriptor_file))) + + return descriptor_loader \ No newline at end of file diff --git a/src/common/tests/MockMessageBroker.py b/src/common/tests/MockMessageBroker.py new file mode 100644 index 0000000000000000000000000000000000000000..851c06766fd705bee746840f3d4ce9c4f4ac404d --- /dev/null +++ b/src/common/tests/MockMessageBroker.py @@ -0,0 +1,61 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import json, logging, threading, time +from queue import Queue, Empty +from typing import Dict, Iterator, NamedTuple, Set + +LOGGER = logging.getLogger(__name__) +CONSUME_TIMEOUT = 0.1 # seconds + +class Message(NamedTuple): + topic: str + content: str + +class MockMessageBroker: + def __init__(self): + self._terminate = threading.Event() + self._topic__to__queues : Dict[str, Set[Queue]] = {} + + def publish(self, message : Message) -> None: + queues = self._topic__to__queues.get(message.topic, None) + if queues is None: return + for queue in queues: queue.put_nowait((message.topic, message.content)) + + def consume( + self, topic_names : Set[str], block : bool = True, consume_timeout : float = CONSUME_TIMEOUT + ) -> Iterator[Message]: + queue = Queue() + for topic_name in topic_names: + self._topic__to__queues.setdefault(topic_name, set()).add(queue) + + while not self._terminate.is_set(): + try: + message = queue.get(block=block, timeout=consume_timeout) + except Empty: + continue + if message is None: continue + yield Message(*message) + + for topic_name in topic_names: + self._topic__to__queues.get(topic_name, set()).discard(queue) + + def terminate(self): + self._terminate.set() + +def notify_event(messagebroker, topic_name, event_type, fields) -> None: + event = {'event': {'timestamp': time.time(), 'event_type': event_type}} + for field_name, field_value in fields.items(): + event[field_name] = field_value + messagebroker.publish(Message(topic_name, json.dumps(event))) diff --git a/src/common/tests/MockServicerImpl_Context.py b/src/common/tests/MockServicerImpl_Context.py index 9f80fdbcab0419072a4299f908a7b637038c2a1b..27ff45fc58c675fe28090a186059244e2f1178c1 100644 --- a/src/common/tests/MockServicerImpl_Context.py +++ b/src/common/tests/MockServicerImpl_Context.py @@ -12,22 +12,31 @@ # See the License for the specific language governing permissions and # limitations under the License. -import grpc, logging +import grpc, json, logging from typing import Any, Dict, Iterator, List from common.proto.context_pb2 import ( Connection, ConnectionEvent, ConnectionId, ConnectionIdList, ConnectionList, Context, ContextEvent, ContextId, ContextIdList, ContextList, Device, DeviceEvent, DeviceId, DeviceIdList, DeviceList, - Empty, + Empty, EventTypeEnum, Link, LinkEvent, LinkId, LinkIdList, LinkList, Service, ServiceEvent, ServiceId, ServiceIdList, ServiceList, Slice, SliceEvent, SliceId, SliceIdList, SliceList, Topology, TopologyEvent, TopologyId, TopologyIdList, TopologyList) from common.proto.context_pb2_grpc import ContextServiceServicer -from common.tools.grpc.Tools import grpc_message_to_json_string +from common.tests.MockMessageBroker import MockMessageBroker, notify_event +from common.tools.grpc.Tools import grpc_message_to_json, grpc_message_to_json_string LOGGER = logging.getLogger(__name__) +TOPIC_CONNECTION = 'connection' +TOPIC_CONTEXT = 'context' +TOPIC_TOPOLOGY = 'topology' +TOPIC_DEVICE = 'device' +TOPIC_LINK = 'link' +TOPIC_SERVICE = 'service' +TOPIC_SLICE = 'slice' + def get_container(database : Dict[str, Dict[str, Any]], container_name : str) -> Dict[str, Any]: return database.setdefault(container_name, {}) @@ -35,10 +44,15 @@ def get_entries(database : Dict[str, Dict[str, Any]], container_name : str) -> L container = get_container(database, container_name) return [container[entry_uuid] for entry_uuid in sorted(container.keys())] +def has_entry(database : Dict[str, Dict[str, Any]], container_name : str, entry_uuid : str) -> Any: + LOGGER.debug('[has_entry] BEFORE database={:s}'.format(str(database))) + container = get_container(database, container_name) + return entry_uuid in container + def get_entry( context : grpc.ServicerContext, database : Dict[str, Dict[str, Any]], container_name : str, entry_uuid : str ) -> Any: - LOGGER.debug('[get_entry] AFTER database={:s}'.format(str(database))) + LOGGER.debug('[get_entry] BEFORE database={:s}'.format(str(database))) container = get_container(database, container_name) if entry_uuid not in container: context.abort(grpc.StatusCode.NOT_FOUND, str('{:s}({:s}) not found'.format(container_name, entry_uuid))) @@ -64,8 +78,27 @@ class MockServicerImpl_Context(ContextServiceServicer): def __init__(self): LOGGER.info('[__init__] Creating Servicer...') self.database : Dict[str, Any] = {} + self.msg_broker = MockMessageBroker() LOGGER.info('[__init__] Servicer Created') + # ----- Common ----------------------------------------------------------------------------------------------------- + + def _set(self, request, container_name, entry_uuid, entry_id_field_name, topic_name): + exists = has_entry(self.database, container_name, entry_uuid) + entry = set_entry(self.database, container_name, entry_uuid, request) + event_type = EventTypeEnum.EVENTTYPE_UPDATE if exists else EventTypeEnum.EVENTTYPE_CREATE + entry_id = getattr(entry, entry_id_field_name) + dict_entry_id = grpc_message_to_json(entry_id) + notify_event(self.msg_broker, topic_name, event_type, {entry_id_field_name: dict_entry_id}) + return entry_id + + def _del(self, request, container_name, entry_uuid, entry_id_field_name, topic_name, grpc_context): + empty = del_entry(grpc_context, self.database, container_name, entry_uuid) + event_type = EventTypeEnum.EVENTTYPE_REMOVE + dict_entry_id = grpc_message_to_json(request) + notify_event(self.msg_broker, topic_name, event_type, {entry_id_field_name: dict_entry_id}) + return empty + # ----- Context ---------------------------------------------------------------------------------------------------- def ListContextIds(self, request: Empty, context : grpc.ServicerContext) -> ContextIdList: @@ -82,14 +115,15 @@ class MockServicerImpl_Context(ContextServiceServicer): def SetContext(self, request: Context, context : grpc.ServicerContext) -> ContextId: LOGGER.info('[SetContext] request={:s}'.format(grpc_message_to_json_string(request))) - return set_entry(self.database, 'context', request.context_id.context_uuid.uuid, request).context_id + return self._set(request, 'context', request.context_id.context_uuid.uuid, 'context_id', TOPIC_CONTEXT) def RemoveContext(self, request: ContextId, context : grpc.ServicerContext) -> Empty: LOGGER.info('[RemoveContext] request={:s}'.format(grpc_message_to_json_string(request))) - return del_entry(context, self.database, 'context', request.context_uuid.uuid) + return self._del(request, 'context', request.context_uuid.uuid, 'context_id', TOPIC_CONTEXT, context) def GetContextEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[ContextEvent]: LOGGER.info('[GetContextEvents] request={:s}'.format(grpc_message_to_json_string(request))) + for message in self.msg_broker.consume({TOPIC_CONTEXT}): yield ContextEvent(**json.loads(message.content)) # ----- Topology --------------------------------------------------------------------------------------------------- @@ -112,15 +146,18 @@ class MockServicerImpl_Context(ContextServiceServicer): def SetTopology(self, request: Topology, context : grpc.ServicerContext) -> TopologyId: LOGGER.info('[SetTopology] request={:s}'.format(grpc_message_to_json_string(request))) container_name = 'topology[{:s}]'.format(str(request.topology_id.context_id.context_uuid.uuid)) - return set_entry(self.database, container_name, request.topology_id.topology_uuid.uuid, request).topology_id + topology_uuid = request.topology_id.topology_uuid.uuid + return self._set(request, container_name, topology_uuid, 'topology_id', TOPIC_TOPOLOGY) def RemoveTopology(self, request: TopologyId, context : grpc.ServicerContext) -> Empty: LOGGER.info('[RemoveTopology] request={:s}'.format(grpc_message_to_json_string(request))) container_name = 'topology[{:s}]'.format(str(request.context_id.context_uuid.uuid)) - return del_entry(context, self.database, container_name, request.topology_uuid.uuid) + topology_uuid = request.topology_uuid.uuid + return self._del(request, container_name, topology_uuid, 'topology_id', TOPIC_TOPOLOGY, context) def GetTopologyEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[TopologyEvent]: LOGGER.info('[GetTopologyEvents] request={:s}'.format(grpc_message_to_json_string(request))) + for message in self.msg_broker.consume({TOPIC_TOPOLOGY}): yield TopologyEvent(**json.loads(message.content)) # ----- Device ----------------------------------------------------------------------------------------------------- @@ -139,14 +176,15 @@ class MockServicerImpl_Context(ContextServiceServicer): def SetDevice(self, request: Context, context : grpc.ServicerContext) -> DeviceId: LOGGER.info('[SetDevice] request={:s}'.format(grpc_message_to_json_string(request))) - return set_entry(self.database, 'device', request.device_id.device_uuid.uuid, request).device_id + return self._set(request, 'device', request.device_id.device_uuid.uuid, 'device_id', TOPIC_DEVICE) def RemoveDevice(self, request: DeviceId, context : grpc.ServicerContext) -> Empty: LOGGER.info('[RemoveDevice] request={:s}'.format(grpc_message_to_json_string(request))) - return del_entry(context, self.database, 'device', request.device_uuid.uuid) + return self._del(request, 'device', request.device_uuid.uuid, 'device_id', TOPIC_DEVICE, context) def GetDeviceEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[DeviceEvent]: LOGGER.info('[GetDeviceEvents] request={:s}'.format(grpc_message_to_json_string(request))) + for message in self.msg_broker.consume({TOPIC_DEVICE}): yield DeviceEvent(**json.loads(message.content)) # ----- Link ------------------------------------------------------------------------------------------------------- @@ -165,14 +203,15 @@ class MockServicerImpl_Context(ContextServiceServicer): def SetLink(self, request: Context, context : grpc.ServicerContext) -> LinkId: LOGGER.info('[SetLink] request={:s}'.format(grpc_message_to_json_string(request))) - return set_entry(self.database, 'link', request.link_id.link_uuid.uuid, request).link_id + return self._set(request, 'link', request.link_id.link_uuid.uuid, 'link_id', TOPIC_LINK) def RemoveLink(self, request: LinkId, context : grpc.ServicerContext) -> Empty: LOGGER.info('[RemoveLink] request={:s}'.format(grpc_message_to_json_string(request))) - return del_entry(context, self.database, 'link', request.link_uuid.uuid) + return self._del(request, 'link', request.link_uuid.uuid, 'link_id', TOPIC_LINK, context) def GetLinkEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[LinkEvent]: LOGGER.info('[GetLinkEvents] request={:s}'.format(grpc_message_to_json_string(request))) + for message in self.msg_broker.consume({TOPIC_LINK}): yield LinkEvent(**json.loads(message.content)) # ----- Slice ------------------------------------------------------------------------------------------------------ @@ -194,17 +233,19 @@ class MockServicerImpl_Context(ContextServiceServicer): def SetSlice(self, request: Slice, context : grpc.ServicerContext) -> SliceId: LOGGER.info('[SetSlice] request={:s}'.format(grpc_message_to_json_string(request))) - return set_entry( - self.database, 'slice[{:s}]'.format(str(request.slice_id.context_id.context_uuid.uuid)), - request.slice_id.slice_uuid.uuid, request).slice_id + container_name = 'slice[{:s}]'.format(str(request.slice_id.context_id.context_uuid.uuid)) + slice_uuid = request.slice_id.slice_uuid.uuid + return self._set(request, container_name, slice_uuid, 'slice_id', TOPIC_SLICE) def RemoveSlice(self, request: SliceId, context : grpc.ServicerContext) -> Empty: LOGGER.info('[RemoveSlice] request={:s}'.format(grpc_message_to_json_string(request))) container_name = 'slice[{:s}]'.format(str(request.context_id.context_uuid.uuid)) - return del_entry(context, self.database, container_name, request.slice_uuid.uuid) + slice_uuid = request.slice_uuid.uuid + return self._del(request, container_name, slice_uuid, 'slice_id', TOPIC_SLICE, context) def GetSliceEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[SliceEvent]: LOGGER.info('[GetSliceEvents] request={:s}'.format(grpc_message_to_json_string(request))) + for message in self.msg_broker.consume({TOPIC_SLICE}): yield SliceEvent(**json.loads(message.content)) # ----- Service ---------------------------------------------------------------------------------------------------- @@ -226,17 +267,19 @@ class MockServicerImpl_Context(ContextServiceServicer): def SetService(self, request: Service, context : grpc.ServicerContext) -> ServiceId: LOGGER.info('[SetService] request={:s}'.format(grpc_message_to_json_string(request))) - return set_entry( - self.database, 'service[{:s}]'.format(str(request.service_id.context_id.context_uuid.uuid)), - request.service_id.service_uuid.uuid, request).service_id + container_name = 'service[{:s}]'.format(str(request.service_id.context_id.context_uuid.uuid)) + service_uuid = request.service_id.service_uuid.uuid + return self._set(request, container_name, service_uuid, 'service_id', TOPIC_SERVICE) def RemoveService(self, request: ServiceId, context : grpc.ServicerContext) -> Empty: LOGGER.info('[RemoveService] request={:s}'.format(grpc_message_to_json_string(request))) container_name = 'service[{:s}]'.format(str(request.context_id.context_uuid.uuid)) - return del_entry(context, self.database, container_name, request.service_uuid.uuid) + service_uuid = request.service_uuid.uuid + return self._del(request, container_name, service_uuid, 'service_id', TOPIC_SERVICE, context) def GetServiceEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[ServiceEvent]: LOGGER.info('[GetServiceEvents] request={:s}'.format(grpc_message_to_json_string(request))) + for message in self.msg_broker.consume({TOPIC_SERVICE}): yield ServiceEvent(**json.loads(message.content)) # ----- Connection ------------------------------------------------------------------------------------------------- @@ -259,21 +302,21 @@ class MockServicerImpl_Context(ContextServiceServicer): def SetConnection(self, request: Connection, context : grpc.ServicerContext) -> ConnectionId: LOGGER.info('[SetConnection] request={:s}'.format(grpc_message_to_json_string(request))) - service_connection__container_name = 'service_connection[{:s}/{:s}]'.format( + container_name = 'service_connection[{:s}/{:s}]'.format( str(request.service_id.context_id.context_uuid.uuid), str(request.service_id.service_uuid.uuid)) - set_entry( - self.database, service_connection__container_name, request.connection_id.connection_uuid.uuid, request) - return set_entry( - self.database, 'connection', request.connection_id.connection_uuid.uuid, request).connection_id + connection_uuid = request.connection_id.connection_uuid.uuid + set_entry(self.database, container_name, connection_uuid, request) + return self._set(request, 'connection', connection_uuid, 'connection_id', TOPIC_CONNECTION) def RemoveConnection(self, request: ConnectionId, context : grpc.ServicerContext) -> Empty: LOGGER.info('[RemoveConnection] request={:s}'.format(grpc_message_to_json_string(request))) connection = get_entry(context, self.database, 'connection', request.connection_uuid.uuid) - service_id = connection.service_id - service_connection__container_name = 'service_connection[{:s}/{:s}]'.format( - str(service_id.context_id.context_uuid.uuid), str(service_id.service_uuid.uuid)) - del_entry(context, self.database, service_connection__container_name, request.connection_uuid.uuid) - return del_entry(context, self.database, 'connection', request.connection_uuid.uuid) + container_name = 'service_connection[{:s}/{:s}]'.format( + str(connection.service_id.context_id.context_uuid.uuid), str(connection.service_id.service_uuid.uuid)) + connection_uuid = request.connection_uuid.uuid + del_entry(context, self.database, container_name, connection_uuid) + return self._del(request, 'connection', connection_uuid, 'connection_id', TOPIC_CONNECTION, context) def GetConnectionEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[ConnectionEvent]: LOGGER.info('[GetConnectionEvents] request={:s}'.format(grpc_message_to_json_string(request))) + for message in self.msg_broker.consume({TOPIC_CONNECTION}): yield ConnectionEvent(**json.loads(message.content)) diff --git a/src/common/tests/MockServicerImpl_DltGateway.py b/src/common/tests/MockServicerImpl_DltGateway.py new file mode 100644 index 0000000000000000000000000000000000000000..f106519b2695cda519e95a79e7b559dd24818108 --- /dev/null +++ b/src/common/tests/MockServicerImpl_DltGateway.py @@ -0,0 +1,166 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import grpc, itertools, json, logging, time +from typing import Any, Dict, Iterator, Optional, Tuple +from common.tests.MockMessageBroker import Message, MockMessageBroker +from common.tools.grpc.Tools import grpc_message_to_json_string +from common.proto.context_pb2 import EVENTTYPE_CREATE, EVENTTYPE_REMOVE, EVENTTYPE_UPDATE, Empty, TeraFlowController +from common.proto.dlt_gateway_pb2 import ( + DLTRECORDOPERATION_ADD, DLTRECORDOPERATION_DELETE, DLTRECORDOPERATION_UNDEFINED, DLTRECORDOPERATION_UPDATE, + DLTRECORDSTATUS_FAILED, DLTRECORDSTATUS_SUCCEEDED, DLTRECORDTYPE_CONTEXT, DLTRECORDTYPE_DEVICE, DLTRECORDTYPE_LINK, + DLTRECORDTYPE_SERVICE, DLTRECORDTYPE_SLICE, DLTRECORDTYPE_TOPOLOGY, DLTRECORDTYPE_UNDEFINED, + DltPeerStatus, DltPeerStatusList, DltRecord, DltRecordEvent, DltRecordId, DltRecordOperationEnum, DltRecordStatus, + DltRecordSubscription, DltRecordTypeEnum) +from common.proto.dlt_gateway_pb2_grpc import DltGatewayServiceServicer + +LOGGER = logging.getLogger(__name__) + +DltRecordKey = Tuple[str, Any, str] # domain_uuid, DltRecordOperationEnum, record_uuid +DltRecordDict = Dict[DltRecordKey, DltRecord] # dlt_record_key => dlt_record + +class AlreadyExistsException(Exception): + pass + +class DoesNotExistException(Exception): + pass + +MSG_NOT_EXISTS = 'RecordId({:s}, {:s}, {:s}) Does Not Exist' +MSG_ALREADY_EXISTS = 'RecordId({:s}, {:s}, {:s}) Already Exists' +MSG_OPERATION_NOT_IMPLEMENTED = 'DltRecordOperationEnum({:s}) Not Implemented' + +class MockServicerImpl_DltGateway(DltGatewayServiceServicer): + def __init__(self): + LOGGER.info('[__init__] Creating Servicer...') + self.records : DltRecordDict = {} + self.msg_broker = MockMessageBroker() + LOGGER.info('[__init__] Servicer Created') + + def __get_record(self, record_id : DltRecordId) -> Optional[Dict]: + domain_uuid, record_uuid = record_id.domain_uuid.uuid, record_id.record_uuid.uuid + str_type = DltRecordTypeEnum.Name(record_id.type).upper().replace('DLTRECORDTYPE_', '') + records_domain : Dict[str, Dict] = self.records.setdefault(domain_uuid, {}) + records_type : Dict[str, Dict] = records_domain.setdefault(str_type, {}) + record : Optional[Dict] = records_type.get(record_uuid) + return record + + def __set_record(self, record_id : DltRecordId, should_exist : bool, data_json : str) -> None: + domain_uuid, record_uuid = record_id.domain_uuid.uuid, record_id.record_uuid.uuid + str_type = DltRecordTypeEnum.Name(record_id.type).upper().replace('DLTRECORDTYPE_', '') + records_domain : Dict[str, Dict] = self.records.setdefault(domain_uuid, {}) + records_type : Dict[str, Dict] = records_domain.setdefault(str_type, {}) + record : Optional[Dict] = records_type.get(record_uuid) + if should_exist and record is None: + raise DoesNotExistException(MSG_NOT_EXISTS.format(domain_uuid, str_type, record_uuid)) + elif not should_exist and record is not None: + raise AlreadyExistsException(MSG_ALREADY_EXISTS.format(domain_uuid, str_type, record_uuid)) + records_type[record_uuid] = data_json + + def __del_record(self, record_id : DltRecordId) -> None: + domain_uuid, record_uuid = record_id.domain_uuid.uuid, record_id.record_uuid.uuid + str_type = DltRecordTypeEnum.Name(record_id.type).upper().replace('DLTRECORDTYPE_', '') + records_domain : Dict[str, Dict] = self.records.setdefault(domain_uuid, {}) + records_type : Dict[str, Dict] = records_domain.setdefault(str_type, {}) + record : Optional[Dict] = records_type.get(record_uuid) + if record is None: + raise DoesNotExistException(MSG_NOT_EXISTS.format(domain_uuid, str_type, record_uuid)) + records_type.discard(record_uuid) + + def __publish(self, operation : DltRecordOperationEnum, record_id : DltRecordId) -> None: + str_operation = DltRecordOperationEnum.Name(operation).upper().replace('DLTRECORDOPERATION_', '') + str_type = DltRecordTypeEnum.Name(record_id.type).upper().replace('DLTRECORDTYPE_', '') + topic = '{:s}:{:s}'.format(str_type, str_operation) + event = DltRecordEvent() + event.event.timestamp.timestamp = time.time() # pylint: disable=no-member + event.event.event_type = { # pylint: disable=no-member + DLTRECORDOPERATION_ADD : EVENTTYPE_CREATE, + DLTRECORDOPERATION_UPDATE: EVENTTYPE_UPDATE, + DLTRECORDOPERATION_DELETE: EVENTTYPE_REMOVE, + }.get(operation) + event.record_id.CopyFrom(record_id) # pylint: disable=no-member + self.msg_broker.publish(Message(topic=topic, content=grpc_message_to_json_string(event))) + + def RecordToDlt(self, request : DltRecord, context : grpc.ServicerContext) -> DltRecordStatus: + LOGGER.info('[RecordToDlt] request={:s}'.format(grpc_message_to_json_string(request))) + record_id = request.record_id + response = DltRecordStatus() + response.record_id.CopyFrom(record_id) # pylint: disable=no-member + try: + operation : DltRecordOperationEnum = request.operation + if operation == DLTRECORDOPERATION_ADD: + self.__set_record(record_id, False, json.loads(request.data_json)) + elif operation == DLTRECORDOPERATION_UPDATE: + self.__set_record(record_id, True, json.loads(request.data_json)) + elif operation == DLTRECORDOPERATION_DELETE: + self.__del_record(record_id) + else: + str_operation = DltRecordOperationEnum.Name(operation).upper().replace('DLTRECORDOPERATION_', '') + raise NotImplementedError(MSG_OPERATION_NOT_IMPLEMENTED.format(str_operation)) + self.__publish(operation, record_id) + response.status = DLTRECORDSTATUS_SUCCEEDED + except Exception as e: # pylint: disable=broad-except + response.status = DLTRECORDSTATUS_FAILED + response.error_message = str(e) + LOGGER.info('[RecordToDlt] response={:s}'.format(grpc_message_to_json_string(response))) + return response + + def GetFromDlt(self, request : DltRecordId, context : grpc.ServicerContext) -> DltRecord: + LOGGER.info('[GetFromDlt] request={:s}'.format(grpc_message_to_json_string(request))) + record = self.__get_record(request) + response = DltRecord() + if record is not None: + response.record_id.CopyFrom(request) # pylint: disable=no-member + response.operation = DLTRECORDOPERATION_UNDEFINED + response.data_json = json.dumps(record, sort_keys=True) + LOGGER.info('[GetFromDlt] response={:s}'.format(grpc_message_to_json_string(response))) + return response + + def SubscribeToDlt( + self, request: DltRecordSubscription, context : grpc.ServicerContext + ) -> Iterator[DltRecordEvent]: + LOGGER.info('[SubscribeToDlt] request={:s}'.format(grpc_message_to_json_string(request))) + types = request.type + if len(types) == 0: + types = [ + DLTRECORDTYPE_UNDEFINED, DLTRECORDTYPE_CONTEXT, DLTRECORDTYPE_TOPOLOGY, DLTRECORDTYPE_DEVICE, + DLTRECORDTYPE_LINK, DLTRECORDTYPE_SERVICE, DLTRECORDTYPE_SLICE + ] + str_types = [ + DltRecordTypeEnum.Name(_type).upper().replace('DLTRECORDTYPE_', '') + for _type in types + ] + operations = request.operation + if len(operations) == 0: + operations = [ + DLTRECORDOPERATION_UNDEFINED, DLTRECORDOPERATION_ADD, DLTRECORDOPERATION_UPDATE, + DLTRECORDOPERATION_DELETE + ] + str_operations = [ + DltRecordOperationEnum.Name(_operation).upper().replace('DLTRECORDOPERATION_', '') + for _operation in operations + ] + topics = { + '{:s}:{:s}'.format(*type_operation) + for type_operation in itertools.product(str_types, str_operations) + } + for message in self.msg_broker.consume(topics): + yield DltRecordEvent(**json.loads(message.content)) + + def GetDltStatus(self, request : TeraFlowController, context : grpc.ServicerContext) -> DltPeerStatus: + LOGGER.info('[GetDltStatus] request={:s}'.format(grpc_message_to_json_string(request))) + raise NotImplementedError() + + def GetDltPeers(self, request : Empty, context : grpc.ServicerContext) -> DltPeerStatusList: + LOGGER.info('[GetDltPeers] request={:s}'.format(grpc_message_to_json_string(request))) + raise NotImplementedError() diff --git a/src/common/tools/context_queries/CheckType.py b/src/common/tools/context_queries/CheckType.py new file mode 100644 index 0000000000000000000000000000000000000000..f53ad16906336182311d1d98fec428f1472bf748 --- /dev/null +++ b/src/common/tools/context_queries/CheckType.py @@ -0,0 +1,28 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +from typing import Union +from common.DeviceTypes import DeviceTypeEnum + +def device_type_is_datacenter(device_type : Union[str, DeviceTypeEnum]) -> bool: + return device_type in { + DeviceTypeEnum.DATACENTER, DeviceTypeEnum.DATACENTER.value, + DeviceTypeEnum.EMULATED_DATACENTER, DeviceTypeEnum.EMULATED_DATACENTER.value + } + +def device_type_is_network(device_type : Union[str, DeviceTypeEnum]) -> bool: + return device_type in {DeviceTypeEnum.NETWORK, DeviceTypeEnum.NETWORK.value} + +def endpoint_type_is_border(endpoint_type : str) -> bool: + return str(endpoint_type).endswith('/border') diff --git a/src/common/tools/context_queries/Context.py b/src/common/tools/context_queries/Context.py new file mode 100644 index 0000000000000000000000000000000000000000..cf0d3be2b7c1890e486492ad55add19a17591353 --- /dev/null +++ b/src/common/tools/context_queries/Context.py @@ -0,0 +1,25 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +from common.proto.context_pb2 import Context, Empty +from common.tools.object_factory.Context import json_context +from context.client.ContextClient import ContextClient + +def create_context( + context_client : ContextClient, context_uuid : str +) -> None: + existing_context_ids = context_client.ListContextIds(Empty()) + existing_context_uuids = {context_id.context_uuid.uuid for context_id in existing_context_ids.context_ids} + if context_uuid in existing_context_uuids: return + context_client.SetContext(Context(**json_context(context_uuid))) diff --git a/src/common/tools/context_queries/Device.py b/src/common/tools/context_queries/Device.py new file mode 100644 index 0000000000000000000000000000000000000000..e5b205d46185e12fa51a2cbd8146342abe5bed38 --- /dev/null +++ b/src/common/tools/context_queries/Device.py @@ -0,0 +1,59 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +from typing import List, Set +from common.proto.context_pb2 import ContextId, Device, Empty, Topology, TopologyId +from common.tools.object_factory.Topology import json_topology_id +from context.client.ContextClient import ContextClient + +def get_existing_device_uuids(context_client : ContextClient) -> Set[str]: + existing_device_ids = context_client.ListDeviceIds(Empty()) + existing_device_uuids = {device_id.device_uuid.uuid for device_id in existing_device_ids.device_ids} + return existing_device_uuids + +def add_device_to_topology( + context_client : ContextClient, context_id : ContextId, topology_uuid : str, device_uuid : str +) -> bool: + topology_id = TopologyId(**json_topology_id(topology_uuid, context_id=context_id)) + topology_ro = context_client.GetTopology(topology_id) + device_uuids = {device_id.device_uuid.uuid for device_id in topology_ro.device_ids} + if device_uuid in device_uuids: return False # already existed + + topology_rw = Topology() + topology_rw.CopyFrom(topology_ro) + topology_rw.device_ids.add().device_uuid.uuid = device_uuid # pylint: disable=no-member + context_client.SetTopology(topology_rw) + return True + +def get_uuids_of_devices_in_topology( + context_client : ContextClient, context_id : ContextId, topology_uuid : str +) -> List[str]: + topology_id = TopologyId(**json_topology_id(topology_uuid, context_id=context_id)) + topology = context_client.GetTopology(topology_id) + device_uuids = [device_id.device_uuid.uuid for device_id in topology.device_ids] + return device_uuids + +def get_devices_in_topology( + context_client : ContextClient, context_id : ContextId, topology_uuid : str +) -> List[Device]: + device_uuids = get_uuids_of_devices_in_topology(context_client, context_id, topology_uuid) + + all_devices = context_client.ListDevices(Empty()) + devices_in_topology = list() + for device in all_devices.devices: + device_uuid = device.device_id.device_uuid.uuid + if device_uuid not in device_uuids: continue + devices_in_topology.append(device) + + return devices_in_topology diff --git a/src/common/tools/context_queries/InterDomain.py b/src/common/tools/context_queries/InterDomain.py new file mode 100644 index 0000000000000000000000000000000000000000..0a202ccd810ed50beca4bb9a7b4441305623f1ed --- /dev/null +++ b/src/common/tools/context_queries/InterDomain.py @@ -0,0 +1,256 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import logging +from typing import Dict, List, Set, Tuple +from common.Constants import DEFAULT_CONTEXT_UUID, DEFAULT_TOPOLOGY_UUID, INTERDOMAIN_TOPOLOGY_UUID +from common.DeviceTypes import DeviceTypeEnum +from common.proto.context_pb2 import ContextId, Device, Empty, EndPointId, ServiceTypeEnum, Slice +from common.proto.pathcomp_pb2 import PathCompRequest +from common.tools.context_queries.CheckType import device_type_is_network +from common.tools.context_queries.Device import get_devices_in_topology +from common.tools.context_queries.Topology import get_topology +from common.tools.grpc.Tools import grpc_message_to_json_string +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from pathcomp.frontend.client.PathCompClient import PathCompClient + +LOGGER = logging.getLogger(__name__) + +ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_UUID)) +DATACENTER_DEVICE_TYPES = {DeviceTypeEnum.DATACENTER, DeviceTypeEnum.EMULATED_DATACENTER} + +def get_local_device_uuids(context_client : ContextClient) -> Set[str]: + topologies = context_client.ListTopologies(ADMIN_CONTEXT_ID) + topologies = {topology.topology_id.topology_uuid.uuid : topology for topology in topologies.topologies} + LOGGER.info('[get_local_device_uuids] topologies.keys()={:s}'.format(str(topologies.keys()))) + + local_topology_uuids = set(topologies.keys()) + local_topology_uuids.discard(INTERDOMAIN_TOPOLOGY_UUID) + LOGGER.info('[get_local_device_uuids] local_topology_uuids={:s}'.format(str(local_topology_uuids))) + + local_device_uuids = set() + + # add topology names except DEFAULT_TOPOLOGY_UUID and INTERDOMAIN_TOPOLOGY_UUID; they are abstracted as a + # local device in inter-domain and the name of the topology is used as abstract device name + for local_topology_uuid in local_topology_uuids: + if local_topology_uuid == DEFAULT_TOPOLOGY_UUID: continue + local_device_uuids.add(local_topology_uuid) + + # add physical devices in the local topologies + for local_topology_uuid in local_topology_uuids: + topology_device_ids = topologies[local_topology_uuid].device_ids + topology_device_uuids = {device_id.device_uuid.uuid for device_id in topology_device_ids} + LOGGER.info('[get_local_device_uuids] [loop] local_topology_uuid={:s} topology_device_uuids={:s}'.format( + str(local_topology_uuid), str(topology_device_uuids))) + local_device_uuids.update(topology_device_uuids) + + LOGGER.info('[get_local_device_uuids] local_device_uuids={:s}'.format(str(local_device_uuids))) + return local_device_uuids + +def get_interdomain_device_uuids(context_client : ContextClient) -> Set[str]: + context_uuid = DEFAULT_CONTEXT_UUID + topology_uuid = INTERDOMAIN_TOPOLOGY_UUID + interdomain_topology = get_topology(context_client, topology_uuid, context_uuid=context_uuid) + if interdomain_topology is None: + MSG = '[get_interdomain_device_uuids] {:s}/{:s} topology not found' + LOGGER.warning(MSG.format(context_uuid, topology_uuid)) + return set() + + # add abstracted devices in the interdomain topology + interdomain_device_ids = interdomain_topology.device_ids + interdomain_device_uuids = {device_id.device_uuid.uuid for device_id in interdomain_device_ids} + LOGGER.info('[get_interdomain_device_uuids] interdomain_device_uuids={:s}'.format(str(interdomain_device_uuids))) + return interdomain_device_uuids + +def get_local_domain_devices(context_client : ContextClient) -> List[Device]: + local_device_uuids = get_local_device_uuids(context_client) + all_devices = context_client.ListDevices(Empty()) + local_domain_devices = list() + for device in all_devices.devices: + if not device_type_is_network(device.device_type): continue + device_uuid = device.device_id.device_uuid.uuid + if device_uuid not in local_device_uuids: continue + local_domain_devices.append(device) + return local_domain_devices + +def is_inter_domain(context_client : ContextClient, endpoint_ids : List[EndPointId]) -> bool: + interdomain_device_uuids = get_interdomain_device_uuids(context_client) + LOGGER.info('[is_inter_domain] interdomain_device_uuids={:s}'.format(str(interdomain_device_uuids))) + non_interdomain_endpoint_ids = [ + endpoint_id + for endpoint_id in endpoint_ids + if endpoint_id.device_id.device_uuid.uuid not in interdomain_device_uuids + ] + str_non_interdomain_endpoint_ids = [ + (endpoint_id.device_id.device_uuid.uuid, endpoint_id.endpoint_uuid.uuid) + for endpoint_id in non_interdomain_endpoint_ids + ] + LOGGER.info('[is_inter_domain] non_interdomain_endpoint_ids={:s}'.format(str(str_non_interdomain_endpoint_ids))) + is_inter_domain_ = len(non_interdomain_endpoint_ids) == 0 + LOGGER.info('[is_inter_domain] is_inter_domain={:s}'.format(str(is_inter_domain_))) + return is_inter_domain_ + +def is_multi_domain(context_client : ContextClient, endpoint_ids : List[EndPointId]) -> bool: + local_device_uuids = get_local_device_uuids(context_client) + LOGGER.info('[is_multi_domain] local_device_uuids={:s}'.format(str(local_device_uuids))) + remote_endpoint_ids = [ + endpoint_id + for endpoint_id in endpoint_ids + if endpoint_id.device_id.device_uuid.uuid not in local_device_uuids + ] + str_remote_endpoint_ids = [ + (endpoint_id.device_id.device_uuid.uuid, endpoint_id.endpoint_uuid.uuid) + for endpoint_id in remote_endpoint_ids + ] + LOGGER.info('[is_multi_domain] remote_endpoint_ids={:s}'.format(str(str_remote_endpoint_ids))) + is_multi_domain_ = len(remote_endpoint_ids) > 0 + LOGGER.info('[is_multi_domain] is_multi_domain={:s}'.format(str(is_multi_domain_))) + return is_multi_domain_ + +def compute_interdomain_path( + pathcomp_client : PathCompClient, slice_ : Slice +) -> List[Tuple[str, List[EndPointId]]]: + context_uuid = slice_.slice_id.context_id.context_uuid.uuid + slice_uuid = slice_.slice_id.slice_uuid.uuid + + pathcomp_req = PathCompRequest() + pathcomp_req.shortest_path.Clear() # pylint: disable=no-member + pathcomp_req_svc = pathcomp_req.services.add() # pylint: disable=no-member + pathcomp_req_svc.service_id.context_id.context_uuid.uuid = context_uuid + pathcomp_req_svc.service_id.service_uuid.uuid = slice_uuid + pathcomp_req_svc.service_type = ServiceTypeEnum.SERVICETYPE_L2NM + + for endpoint_id in slice_.slice_endpoint_ids: + service_endpoint_id = pathcomp_req_svc.service_endpoint_ids.add() + service_endpoint_id.CopyFrom(endpoint_id) + + constraint_bw = pathcomp_req_svc.service_constraints.add() + constraint_bw.custom.constraint_type = 'bandwidth[gbps]' + constraint_bw.custom.constraint_value = '10.0' + + constraint_lat = pathcomp_req_svc.service_constraints.add() + constraint_lat.custom.constraint_type = 'latency[ms]' + constraint_lat.custom.constraint_value = '100.0' + + LOGGER.info('pathcomp_req = {:s}'.format(grpc_message_to_json_string(pathcomp_req))) + pathcomp_rep = pathcomp_client.Compute(pathcomp_req) + LOGGER.info('pathcomp_rep = {:s}'.format(grpc_message_to_json_string(pathcomp_rep))) + + service = next(iter([ + service + for service in pathcomp_rep.services + if service.service_id == pathcomp_req_svc.service_id + ]), None) + if service is None: + str_service_id = grpc_message_to_json_string(pathcomp_req_svc.service_id) + raise Exception('Service({:s}) not found'.format(str_service_id)) + + connection = next(iter([ + connection + for connection in pathcomp_rep.connections + if connection.service_id == pathcomp_req_svc.service_id + ]), None) + if connection is None: + str_service_id = grpc_message_to_json_string(pathcomp_req_svc.service_id) + raise Exception('Connection for Service({:s}) not found'.format(str_service_id)) + + domain_list : List[str] = list() + domain_to_endpoint_ids : Dict[str, List[EndPointId]] = dict() + for endpoint_id in connection.path_hops_endpoint_ids: + device_uuid = endpoint_id.device_id.device_uuid.uuid + #endpoint_uuid = endpoint_id.endpoint_uuid.uuid + if device_uuid not in domain_to_endpoint_ids: domain_list.append(device_uuid) + domain_to_endpoint_ids.setdefault(device_uuid, []).append(endpoint_id) + + return [ + (domain_uuid, domain_to_endpoint_ids.get(domain_uuid)) + for domain_uuid in domain_list + ] + +def get_device_to_domain_map(context_client : ContextClient) -> Dict[str, str]: + devices_to_domains : Dict[str, str] = dict() + contexts = context_client.ListContexts(Empty()) + for context in contexts.contexts: + context_id = context.context_id + context_uuid = context_id.context_uuid.uuid + topologies = context_client.ListTopologies(context_id) + if context_uuid == DEFAULT_CONTEXT_UUID: + for topology in topologies.topologies: + topology_id = topology.topology_id + topology_uuid = topology_id.topology_uuid.uuid + if topology_uuid in {DEFAULT_TOPOLOGY_UUID, INTERDOMAIN_TOPOLOGY_UUID}: continue + + # add topology names except DEFAULT_TOPOLOGY_UUID and INTERDOMAIN_TOPOLOGY_UUID; they are + # abstracted as a local device in inter-domain and the name of the topology is used as + # abstract device name + devices_to_domains[topology_uuid] = topology_uuid + + # add physical devices in the local topology + for device_id in topology.device_ids: + device_uuid = device_id.device_uuid.uuid + devices_to_domains[device_uuid] = topology_uuid + else: + # for each topology in a remote context + for topology in topologies.topologies: + topology_id = topology.topology_id + topology_uuid = topology_id.topology_uuid.uuid + + # if topology is not interdomain + if topology_uuid in {INTERDOMAIN_TOPOLOGY_UUID}: continue + + # add devices to the remote domain list + for device_id in topology.device_ids: + device_uuid = device_id.device_uuid.uuid + devices_to_domains[device_uuid] = context_uuid + + return devices_to_domains + +def compute_traversed_domains( + context_client : ContextClient, interdomain_path : List[Tuple[str, List[EndPointId]]] +) -> List[Tuple[str, bool, List[EndPointId]]]: + + local_device_uuids = get_local_device_uuids(context_client) + LOGGER.info('[compute_traversed_domains] local_device_uuids={:s}'.format(str(local_device_uuids))) + + interdomain_devices = get_devices_in_topology(context_client, ADMIN_CONTEXT_ID, INTERDOMAIN_TOPOLOGY_UUID) + interdomain_devices = { + device.device_id.device_uuid.uuid : device + for device in interdomain_devices + } + + devices_to_domains = get_device_to_domain_map(context_client) + LOGGER.info('[compute_traversed_domains] devices_to_domains={:s}'.format(str(devices_to_domains))) + + traversed_domains : List[Tuple[str, bool, List[EndPointId]]] = list() + domains_dict : Dict[str, Tuple[str, bool, List[EndPointId]]] = dict() + for device_uuid, endpoint_ids in interdomain_path: + domain_uuid = devices_to_domains.get(device_uuid, '---') + domain = domains_dict.get(domain_uuid) + if domain is None: + is_local_domain = domain_uuid in local_device_uuids + domain = (domain_uuid, is_local_domain, []) + traversed_domains.append(domain) + domains_dict[domain_uuid] = domain + domain[2].extend(endpoint_ids) + + str_traversed_domains = [ + (domain_uuid, is_local_domain, [ + (endpoint_id.device_id.device_uuid.uuid, endpoint_id.endpoint_uuid.uuid) + for endpoint_id in endpoint_ids + ]) + for domain_uuid,is_local_domain,endpoint_ids in traversed_domains + ] + LOGGER.info('[compute_traversed_domains] devices_to_domains={:s}'.format(str(str_traversed_domains))) + return traversed_domains diff --git a/src/common/tools/context_queries/Link.py b/src/common/tools/context_queries/Link.py new file mode 100644 index 0000000000000000000000000000000000000000..abc5fa91af8d24c8a3cdf18fda0e7680da9143a7 --- /dev/null +++ b/src/common/tools/context_queries/Link.py @@ -0,0 +1,59 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +from typing import List, Set +from common.proto.context_pb2 import ContextId, Empty, Link, Topology, TopologyId +from common.tools.object_factory.Topology import json_topology_id +from context.client.ContextClient import ContextClient + +def get_existing_link_uuids(context_client : ContextClient) -> Set[str]: + existing_link_ids = context_client.ListLinkIds(Empty()) + existing_link_uuids = {link_id.link_uuid.uuid for link_id in existing_link_ids.link_ids} + return existing_link_uuids + +def add_link_to_topology( + context_client : ContextClient, context_id : ContextId, topology_uuid : str, link_uuid : str +) -> bool: + topology_id = TopologyId(**json_topology_id(topology_uuid, context_id=context_id)) + topology_ro = context_client.GetTopology(topology_id) + link_uuids = {link_id.link_uuid.uuid for link_id in topology_ro.link_ids} + if link_uuid in link_uuids: return False # already existed + + topology_rw = Topology() + topology_rw.CopyFrom(topology_ro) + topology_rw.link_ids.add().link_uuid.uuid = link_uuid # pylint: disable=no-member + context_client.SetTopology(topology_rw) + return True + +def get_uuids_of_links_in_topology( + context_client : ContextClient, context_id : ContextId, topology_uuid : str +) -> List[str]: + topology_id = TopologyId(**json_topology_id(topology_uuid, context_id=context_id)) + topology = context_client.GetTopology(topology_id) + link_uuids = [link_id.link_uuid.uuid for link_id in topology.link_ids] + return link_uuids + +def get_links_in_topology( + context_client : ContextClient, context_id : ContextId, topology_uuid : str +) -> List[Link]: + link_uuids = get_uuids_of_links_in_topology(context_client, context_id, topology_uuid) + + all_links = context_client.ListLinks(Empty()) + links_in_topology = list() + for link in all_links.links: + link_uuid = link.link_id.link_uuid.uuid + if link_uuid not in link_uuids: continue + links_in_topology.append(link) + + return links_in_topology diff --git a/src/common/tools/context_queries/Service.py b/src/common/tools/context_queries/Service.py new file mode 100644 index 0000000000000000000000000000000000000000..15b201e731760068457683d9e30f79ab12d231d7 --- /dev/null +++ b/src/common/tools/context_queries/Service.py @@ -0,0 +1,39 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import grpc, logging +from typing import Optional +from common.Constants import DEFAULT_CONTEXT_UUID +from common.proto.context_pb2 import Service, ServiceId +from context.client.ContextClient import ContextClient + +LOGGER = logging.getLogger(__name__) + +def get_service( + context_client : ContextClient, service_uuid : str, context_uuid : str = DEFAULT_CONTEXT_UUID, + rw_copy : bool = False + ) -> Optional[Service]: + try: + # pylint: disable=no-member + service_id = ServiceId() + service_id.context_id.context_uuid.uuid = context_uuid + service_id.service_uuid.uuid = service_uuid + ro_service = context_client.GetService(service_id) + if not rw_copy: return ro_service + rw_service = Service() + rw_service.CopyFrom(ro_service) + return rw_service + except grpc.RpcError: + #LOGGER.exception('Unable to get service({:s} / {:s})'.format(str(context_uuid), str(service_uuid))) + return None diff --git a/src/common/tools/context_queries/Slice.py b/src/common/tools/context_queries/Slice.py new file mode 100644 index 0000000000000000000000000000000000000000..9f884aa94990c28ad786b3243aed948ddc7f9f34 --- /dev/null +++ b/src/common/tools/context_queries/Slice.py @@ -0,0 +1,39 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import grpc, logging +from typing import Optional +from common.Constants import DEFAULT_CONTEXT_UUID +from common.proto.context_pb2 import Slice, SliceId +from context.client.ContextClient import ContextClient + +LOGGER = logging.getLogger(__name__) + +def get_slice( + context_client : ContextClient, slice_uuid : str, context_uuid : str = DEFAULT_CONTEXT_UUID, + rw_copy : bool = False + ) -> Optional[Slice]: + try: + # pylint: disable=no-member + slice_id = SliceId() + slice_id.context_id.context_uuid.uuid = context_uuid + slice_id.slice_uuid.uuid = slice_uuid + ro_slice = context_client.GetSlice(slice_id) + if not rw_copy: return ro_slice + rw_slice = Slice() + rw_slice.CopyFrom(ro_slice) + return rw_slice + except grpc.RpcError: + #LOGGER.exception('Unable to get slice({:s} / {:s})'.format(str(context_uuid), str(slice_uuid))) + return None diff --git a/src/common/tools/context_queries/Topology.py b/src/common/tools/context_queries/Topology.py new file mode 100644 index 0000000000000000000000000000000000000000..3d2077e965efb3e78ad9febbe54b4f0aaea5aef6 --- /dev/null +++ b/src/common/tools/context_queries/Topology.py @@ -0,0 +1,63 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import grpc, logging +from typing import List, Optional +from common.Constants import DEFAULT_CONTEXT_UUID +from common.proto.context_pb2 import ContextId, Topology, TopologyId +from common.tools.object_factory.Context import json_context_id +from common.tools.object_factory.Topology import json_topology +from context.client.ContextClient import ContextClient + +LOGGER = logging.getLogger(__name__) + +def create_topology( + context_client : ContextClient, context_uuid : str, topology_uuid : str +) -> None: + context_id = ContextId(**json_context_id(context_uuid)) + existing_topology_ids = context_client.ListTopologyIds(context_id) + existing_topology_uuids = {topology_id.topology_uuid.uuid for topology_id in existing_topology_ids.topology_ids} + if topology_uuid in existing_topology_uuids: return + context_client.SetTopology(Topology(**json_topology(topology_uuid, context_id=context_id))) + +def create_missing_topologies( + context_client : ContextClient, context_id : ContextId, topology_uuids : List[str] +) -> None: + # Find existing topologies within own context + existing_topology_ids = context_client.ListTopologyIds(context_id) + existing_topology_uuids = {topology_id.topology_uuid.uuid for topology_id in existing_topology_ids.topology_ids} + + # Create topologies within provided context + for topology_uuid in topology_uuids: + if topology_uuid in existing_topology_uuids: continue + grpc_topology = Topology(**json_topology(topology_uuid, context_id=context_id)) + context_client.SetTopology(grpc_topology) + +def get_topology( + context_client : ContextClient, topology_uuid : str, context_uuid : str = DEFAULT_CONTEXT_UUID, + rw_copy : bool = False + ) -> Optional[Topology]: + try: + # pylint: disable=no-member + topology_id = TopologyId() + topology_id.context_id.context_uuid.uuid = context_uuid + topology_id.topology_uuid.uuid = topology_uuid + ro_topology = context_client.GetTopology(topology_id) + if not rw_copy: return ro_topology + rw_topology = Topology() + rw_topology.CopyFrom(ro_topology) + return rw_topology + except grpc.RpcError: + #LOGGER.exception('Unable to get topology({:s} / {:s})'.format(str(context_uuid), str(topology_uuid))) + return None diff --git a/src/pathcomp/tests/__init__.py b/src/common/tools/context_queries/__init__.py similarity index 100% rename from src/pathcomp/tests/__init__.py rename to src/common/tools/context_queries/__init__.py diff --git a/src/common/tools/descriptor/Loader.py b/src/common/tools/descriptor/Loader.py new file mode 100644 index 0000000000000000000000000000000000000000..e3fc86c0538ae71008c15fd41e70f4f0f3c23763 --- /dev/null +++ b/src/common/tools/descriptor/Loader.py @@ -0,0 +1,253 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +# SDN controller descriptor loader + +# Usage example (WebUI): +# descriptors = json.loads(descriptors_data_from_client) +# descriptor_loader = DescriptorLoader(descriptors) +# results = descriptor_loader.process() +# for message,level in compose_notifications(results): +# flash(message, level) + +# Usage example (pytest): +# with open('path/to/descriptor.json', 'r', encoding='UTF-8') as f: +# descriptors = json.loads(f.read()) +# descriptor_loader = DescriptorLoader( +# descriptors, context_client=..., device_client=..., service_client=..., slice_client=...) +# results = descriptor_loader.process() +# loggers = {'success': LOGGER.info, 'danger': LOGGER.error, 'error': LOGGER.error} +# for message,level in compose_notifications(results): +# loggers.get(level)(message) + +import json +from typing import Dict, List, Optional, Tuple, Union +from common.proto.context_pb2 import Connection, Context, Device, Link, Service, Slice, Topology +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from service.client.ServiceClient import ServiceClient +from slice.client.SliceClient import SliceClient +from .Tools import ( + format_device_custom_config_rules, format_service_custom_config_rules, format_slice_custom_config_rules, + get_descriptors_add_contexts, get_descriptors_add_services, get_descriptors_add_slices, + get_descriptors_add_topologies, split_devices_by_rules) + +ENTITY_TO_TEXT = { + # name => singular, plural + 'context' : ('Context', 'Contexts' ), + 'topology' : ('Topology', 'Topologies' ), + 'device' : ('Device', 'Devices' ), + 'link' : ('Link', 'Links' ), + 'service' : ('Service', 'Services' ), + 'slice' : ('Slice', 'Slices' ), + 'connection': ('Connection', 'Connections'), +} + +ACTION_TO_TEXT = { + # action => infinitive, past + 'add' : ('Add', 'Added'), + 'update' : ('Update', 'Updated'), + 'config' : ('Configure', 'Configured'), +} + +TypeResults = List[Tuple[str, str, int, List[str]]] # entity_name, action, num_ok, list[error] +TypeNotification = Tuple[str, str] # message, level +TypeNotificationList = List[TypeNotification] + +def compose_notifications(results : TypeResults) -> TypeNotificationList: + notifications = [] + for entity_name, action_name, num_ok, error_list in results: + entity_name_singluar,entity_name_plural = ENTITY_TO_TEXT[entity_name] + action_infinitive, action_past = ACTION_TO_TEXT[action_name] + num_err = len(error_list) + for error in error_list: + notifications.append((f'Unable to {action_infinitive} {entity_name_singluar} {error}', 'error')) + if num_ok : notifications.append((f'{str(num_ok)} {entity_name_plural} {action_past}', 'success')) + if num_err: notifications.append((f'{str(num_err)} {entity_name_plural} failed', 'danger')) + return notifications + +class DescriptorLoader: + def __init__( + self, descriptors : Union[str, Dict], + context_client : Optional[ContextClient] = None, device_client : Optional[DeviceClient] = None, + service_client : Optional[ServiceClient] = None, slice_client : Optional[SliceClient] = None + ) -> None: + self.__descriptors = json.loads(descriptors) if isinstance(descriptors, str) else descriptors + self.__dummy_mode = self.__descriptors.get('dummy_mode' , False) + self.__contexts = self.__descriptors.get('contexts' , []) + self.__topologies = self.__descriptors.get('topologies' , []) + self.__devices = self.__descriptors.get('devices' , []) + self.__links = self.__descriptors.get('links' , []) + self.__services = self.__descriptors.get('services' , []) + self.__slices = self.__descriptors.get('slices' , []) + self.__connections = self.__descriptors.get('connections', []) + + self.__contexts_add = None + self.__topologies_add = None + self.__devices_add = None + self.__devices_config = None + self.__services_add = None + self.__slices_add = None + + self.__ctx_cli = ContextClient() if context_client is None else context_client + self.__dev_cli = DeviceClient() if device_client is None else device_client + self.__svc_cli = ServiceClient() if service_client is None else service_client + self.__slc_cli = SliceClient() if slice_client is None else slice_client + + self.__results : TypeResults = list() + + @property + def contexts(self) -> List[Dict]: return self.__contexts + + @property + def num_contexts(self) -> int: return len(self.__contexts) + + @property + def topologies(self) -> Dict[str, List[Dict]]: + _topologies = {} + for topology in self.__topologies: + context_uuid = topology['topology_id']['context_id']['context_uuid']['uuid'] + _topologies.setdefault(context_uuid, []).append(topology) + return _topologies + + @property + def num_topologies(self) -> Dict[str, int]: + _num_topologies = {} + for topology in self.__topologies: + context_uuid = topology['topology_id']['context_id']['context_uuid']['uuid'] + _num_topologies[context_uuid] = _num_topologies.get(context_uuid, 0) + 1 + return _num_topologies + + @property + def devices(self) -> List[Dict]: return self.__devices + + @property + def num_devices(self) -> int: return len(self.__devices) + + @property + def links(self) -> List[Dict]: return self.__links + + @property + def num_links(self) -> int: return len(self.__links) + + @property + def services(self) -> Dict[str, List[Dict]]: + _services = {} + for service in self.__services: + context_uuid = service['service_id']['context_id']['context_uuid']['uuid'] + _services.setdefault(context_uuid, []).append(service) + return _services + + @property + def num_services(self) -> Dict[str, int]: + _num_services = {} + for service in self.__services: + context_uuid = service['service_id']['context_id']['context_uuid']['uuid'] + _num_services[context_uuid] = _num_services.get(context_uuid, 0) + 1 + return _num_services + + @property + def slices(self) -> Dict[str, List[Dict]]: + _slices = {} + for slice_ in self.__slices: + context_uuid = slice_['slice_id']['context_id']['context_uuid']['uuid'] + _slices.setdefault(context_uuid, []).append(slice_) + return _slices + + @property + def num_slices(self) -> Dict[str, int]: + _num_slices = {} + for slice_ in self.__slices: + context_uuid = slice_['slice_id']['context_id']['context_uuid']['uuid'] + _num_slices[context_uuid] = _num_slices.get(context_uuid, 0) + 1 + return _num_slices + + @property + def connections(self) -> List[Dict]: return self.__connections + + @property + def num_connections(self) -> int: return len(self.__connections) + + def process(self) -> TypeResults: + # Format CustomConfigRules in Devices, Services and Slices provided in JSON format + self.__devices = [format_device_custom_config_rules (device ) for device in self.__devices ] + self.__services = [format_service_custom_config_rules(service) for service in self.__services] + self.__slices = [format_slice_custom_config_rules (slice_ ) for slice_ in self.__slices ] + + # Context and Topology require to create the entity first, and add devices, links, services, + # slices, etc. in a second stage. + self.__contexts_add = get_descriptors_add_contexts(self.__contexts) + self.__topologies_add = get_descriptors_add_topologies(self.__topologies) + + if self.__dummy_mode: + self._dummy_mode() + else: + self._normal_mode() + + return self.__results + + def _dummy_mode(self) -> None: + # Dummy Mode: used to pre-load databases (WebUI debugging purposes) with no smart or automated tasks. + self.__ctx_cli.connect() + self._process_descr('context', 'add', self.__ctx_cli.SetContext, Context, self.__contexts_add ) + self._process_descr('topology', 'add', self.__ctx_cli.SetTopology, Topology, self.__topologies_add) + self._process_descr('device', 'add', self.__ctx_cli.SetDevice, Device, self.__devices ) + self._process_descr('link', 'add', self.__ctx_cli.SetLink, Link, self.__links ) + self._process_descr('service', 'add', self.__ctx_cli.SetService, Service, self.__services ) + self._process_descr('slice', 'add', self.__ctx_cli.SetSlice, Slice, self.__slices ) + self._process_descr('connection', 'add', self.__ctx_cli.SetConnection, Connection, self.__connections ) + self._process_descr('context', 'update', self.__ctx_cli.SetContext, Context, self.__contexts ) + self._process_descr('topology', 'update', self.__ctx_cli.SetTopology, Topology, self.__topologies ) + #self.__ctx_cli.close() + + def _normal_mode(self) -> None: + # Normal mode: follows the automated workflows in the different components + assert len(self.__connections) == 0, 'in normal mode, connections should not be set' + + # Device, Service and Slice require to first create the entity and the configure it + self.__devices_add, self.__devices_config = split_devices_by_rules(self.__devices) + self.__services_add = get_descriptors_add_services(self.__services) + self.__slices_add = get_descriptors_add_slices(self.__slices) + + self.__ctx_cli.connect() + self.__dev_cli.connect() + self.__svc_cli.connect() + self.__slc_cli.connect() + + self._process_descr('context', 'add', self.__ctx_cli.SetContext, Context, self.__contexts_add ) + self._process_descr('topology', 'add', self.__ctx_cli.SetTopology, Topology, self.__topologies_add) + self._process_descr('device', 'add', self.__dev_cli.AddDevice, Device, self.__devices_add ) + self._process_descr('device', 'config', self.__dev_cli.ConfigureDevice, Device, self.__devices_config) + self._process_descr('link', 'add', self.__ctx_cli.SetLink, Link, self.__links ) + self._process_descr('service', 'add', self.__svc_cli.CreateService, Service, self.__services_add ) + self._process_descr('service', 'update', self.__svc_cli.UpdateService, Service, self.__services ) + self._process_descr('slice', 'add', self.__slc_cli.CreateSlice, Slice, self.__slices_add ) + self._process_descr('slice', 'update', self.__slc_cli.UpdateSlice, Slice, self.__slices ) + self._process_descr('context', 'update', self.__ctx_cli.SetContext, Context, self.__contexts ) + self._process_descr('topology', 'update', self.__ctx_cli.SetTopology, Topology, self.__topologies ) + + #self.__slc_cli.close() + #self.__svc_cli.close() + #self.__dev_cli.close() + #self.__ctx_cli.close() + + def _process_descr(self, entity_name, action_name, grpc_method, grpc_class, entities) -> None: + num_ok, error_list = 0, [] + for entity in entities: + try: + grpc_method(grpc_class(**entity)) + num_ok += 1 + except Exception as e: # pylint: disable=broad-except + error_list.append(f'{str(entity)}: {str(e)}') + self.__results.append((entity_name, action_name, num_ok, error_list)) diff --git a/src/common/tools/descriptor/Tools.py b/src/common/tools/descriptor/Tools.py new file mode 100644 index 0000000000000000000000000000000000000000..cc7fa37577ec7b490756078a90aff959658274b4 --- /dev/null +++ b/src/common/tools/descriptor/Tools.py @@ -0,0 +1,103 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import copy, json +from typing import Dict, List, Optional, Tuple, Union + +def get_descriptors_add_contexts(contexts : List[Dict]) -> List[Dict]: + contexts_add = copy.deepcopy(contexts) + for context in contexts_add: + context['topology_ids'] = [] + context['service_ids'] = [] + return contexts_add + +def get_descriptors_add_topologies(topologies : List[Dict]) -> List[Dict]: + topologies_add = copy.deepcopy(topologies) + for topology in topologies_add: + topology['device_ids'] = [] + topology['link_ids'] = [] + return topologies_add + +def get_descriptors_add_services(services : List[Dict]) -> List[Dict]: + services_add = [] + for service in services: + service_copy = copy.deepcopy(service) + service_copy['service_endpoint_ids'] = [] + service_copy['service_constraints'] = [] + service_copy['service_config'] = {'config_rules': []} + services_add.append(service_copy) + return services_add + +def get_descriptors_add_slices(slices : List[Dict]) -> List[Dict]: + slices_add = [] + for slice_ in slices: + slice_copy = copy.deepcopy(slice_) + slice_copy['slice_endpoint_ids'] = [] + slice_copy['slice_constraints'] = [] + slice_copy['slice_config'] = {'config_rules': []} + slices_add.append(slice_copy) + return slices_add + +TypeResourceValue = Union[str, int, bool, float, dict, list] +def format_custom_config_rules(config_rules : List[Dict]) -> List[Dict]: + for config_rule in config_rules: + if 'custom' not in config_rule: continue + custom_resource_value : TypeResourceValue = config_rule['custom']['resource_value'] + if isinstance(custom_resource_value, (dict, list)): + custom_resource_value = json.dumps(custom_resource_value, sort_keys=True, indent=0) + config_rule['custom']['resource_value'] = custom_resource_value + return config_rules + +def format_device_custom_config_rules(device : Dict) -> Dict: + config_rules = device.get('device_config', {}).get('config_rules', []) + config_rules = format_custom_config_rules(config_rules) + device['device_config']['config_rules'] = config_rules + return device + +def format_service_custom_config_rules(service : Dict) -> Dict: + config_rules = service.get('service_config', {}).get('config_rules', []) + config_rules = format_custom_config_rules(config_rules) + service['service_config']['config_rules'] = config_rules + return service + +def format_slice_custom_config_rules(slice_ : Dict) -> Dict: + config_rules = slice_.get('service_config', {}).get('config_rules', []) + config_rules = format_custom_config_rules(config_rules) + slice_['slice_config']['config_rules'] = config_rules + return slice_ + +def split_devices_by_rules(devices : List[Dict]) -> Tuple[List[Dict], List[Dict]]: + devices_add = [] + devices_config = [] + for device in devices: + connect_rules = [] + config_rules = [] + for config_rule in device.get('device_config', {}).get('config_rules', []): + custom_resource_key : Optional[str] = config_rule.get('custom', {}).get('resource_key') + if custom_resource_key is not None and custom_resource_key.startswith('_connect/'): + connect_rules.append(config_rule) + else: + config_rules.append(config_rule) + + if len(connect_rules) > 0: + device_add = copy.deepcopy(device) + device_add['device_endpoints'] = [] + device_add['device_config'] = {'config_rules': connect_rules} + devices_add.append(device_add) + + if len(config_rules) > 0: + device['device_config'] = {'config_rules': config_rules} + devices_config.append(device) + + return devices_add, devices_config diff --git a/src/service/service/path_computation_element/__init__.py b/src/common/tools/descriptor/__init__.py similarity index 100% rename from src/service/service/path_computation_element/__init__.py rename to src/common/tools/descriptor/__init__.py diff --git a/src/common/tools/descriptor/old/BuildDescriptors.py b/src/common/tools/descriptor/old/BuildDescriptors.py new file mode 100644 index 0000000000000000000000000000000000000000..5c5419190487eb5089e4a30f523dca43fa3870f2 --- /dev/null +++ b/src/common/tools/descriptor/old/BuildDescriptors.py @@ -0,0 +1,35 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import copy, json, sys +from .Objects import CONTEXTS, DEVICES, LINKS, TOPOLOGIES + +def main(): + with open('tests/ofc22/descriptors_emulated.json', 'w', encoding='UTF-8') as f: + devices = [] + for device,connect_rules in DEVICES: + device = copy.deepcopy(device) + device['device_config']['config_rules'].extend(connect_rules) + devices.append(device) + + f.write(json.dumps({ + 'contexts': CONTEXTS, + 'topologies': TOPOLOGIES, + 'devices': devices, + 'links': LINKS + })) + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/common/tools/descriptor/old/LoadDescriptors.py b/src/common/tools/descriptor/old/LoadDescriptors.py new file mode 100644 index 0000000000000000000000000000000000000000..f0b19196afbcd67c1f20263791d20820489b9cf5 --- /dev/null +++ b/src/common/tools/descriptor/old/LoadDescriptors.py @@ -0,0 +1,40 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import json, logging, sys +from common.Settings import get_setting +from common.proto.context_pb2 import Context, Device, Link, Topology +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +def main(): + context_client = ContextClient( + get_setting('CONTEXTSERVICE_SERVICE_HOST'), get_setting('CONTEXTSERVICE_SERVICE_PORT_GRPC')) + device_client = DeviceClient( + get_setting('DEVICESERVICE_SERVICE_HOST'), get_setting('DEVICESERVICE_SERVICE_PORT_GRPC')) + + with open('tests/ofc22/descriptors.json', 'r', encoding='UTF-8') as f: + descriptors = json.loads(f.read()) + + for context in descriptors['contexts' ]: context_client.SetContext (Context (**context )) + for topology in descriptors['topologies']: context_client.SetTopology(Topology(**topology)) + for device in descriptors['devices' ]: device_client .AddDevice (Device (**device )) + for link in descriptors['links' ]: context_client.SetLink (Link (**link )) + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/common/tools/grpc/Constraints.py b/src/common/tools/grpc/Constraints.py index a9dd4f40cbd823752b8cc09936ac48ebe32ec1a5..aa95767ab2807e4ac7ac331c47622a8ece0e88ff 100644 --- a/src/common/tools/grpc/Constraints.py +++ b/src/common/tools/grpc/Constraints.py @@ -21,7 +21,33 @@ from typing import Any, Dict, Optional, Tuple from common.proto.context_pb2 import Constraint, EndPointId from common.tools.grpc.Tools import grpc_message_to_json_string -def update_constraint_custom(constraints, constraint_type : str, fields : Dict[str, Tuple[Any, bool]]) -> Constraint: +def update_constraint_custom_scalar( + constraints, constraint_type : str, value : Any, raise_if_differs : bool = False +) -> Constraint: + + for constraint in constraints: + if constraint.WhichOneof('constraint') != 'custom': continue + if constraint.custom.constraint_type != constraint_type: continue + json_constraint_value = json.loads(constraint.custom.constraint_value) + break # found, end loop + else: + # not found, add it + constraint = constraints.add() # pylint: disable=no-member + constraint.custom.constraint_type = constraint_type + json_constraint_value = None + + if (json_constraint_value is None) or not raise_if_differs: + # missing or raise_if_differs=False, add/update it + json_constraint_value = value + elif json_constraint_value != value: + # exists, differs, and raise_if_differs=True + msg = 'Specified value({:s}) differs existing value({:s})' + raise Exception(msg.format(str(value), str(json_constraint_value))) + + constraint.custom.constraint_value = json.dumps(json_constraint_value, sort_keys=True) + return constraint + +def update_constraint_custom_dict(constraints, constraint_type : str, fields : Dict[str, Tuple[Any, bool]]) -> Constraint: # fields: Dict[field_name : str, Tuple[field_value : Any, raise_if_differs : bool]] for constraint in constraints: @@ -45,6 +71,7 @@ def update_constraint_custom(constraints, constraint_type : str, fields : Dict[s raise Exception(msg.format(str(field_name), str(field_value), str(json_constraint_value[field_name]))) constraint.custom.constraint_value = json.dumps(json_constraint_value, sort_keys=True) + return constraint def update_constraint_endpoint_location( constraints, endpoint_id : EndPointId, @@ -129,10 +156,18 @@ def copy_constraints(source_constraints, target_constraints): if constraint_kind == 'custom': custom = source_constraint.custom constraint_type = custom.constraint_type - constraint_value = json.loads(custom.constraint_value) - raise_if_differs = True - fields = {name:(value, raise_if_differs) for name,value in constraint_value.items()} - update_constraint_custom(target_constraints, constraint_type, fields) + try: + constraint_value = json.loads(custom.constraint_value) + except: # pylint: disable=bare-except + constraint_value = custom.constraint_value + if isinstance(constraint_value, dict): + raise_if_differs = True + fields = {name:(value, raise_if_differs) for name,value in constraint_value.items()} + update_constraint_custom_dict(target_constraints, constraint_type, fields) + else: + raise_if_differs = True + update_constraint_custom_scalar( + target_constraints, constraint_type, constraint_value, raise_if_differs=raise_if_differs) elif constraint_kind == 'endpoint_location': endpoint_id = source_constraint.endpoint_location.endpoint_id diff --git a/src/common/tools/mutex_queues/MutexQueues.py b/src/common/tools/mutex_queues/MutexQueues.py new file mode 100644 index 0000000000000000000000000000000000000000..c3ab760f281c73ae2f308044d67b2d2b81aef142 --- /dev/null +++ b/src/common/tools/mutex_queues/MutexQueues.py @@ -0,0 +1,78 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +# MutexQueues: +# ------------ +# This class enables to schedule and serialize operations concurrently issued +# over a number of resources. For instance, when multiple components want to +# configure devices through the Device component, configuration operations +# have to be serialized to prevent data corruptions, and race conditions, etc. +# Usage Example: +# class Servicer(): +# def __init__(self): +# # init other stuff +# self.drivers = dict() +# self.mutex_queues = MutexQueues() +# +# def configure_device(self, device_uuid, settings): +# self.mutex_queues.wait_my_turn(device_uuid) +# driver = self.drivers.get(device_uuid) +# if driver is None: +# driver = Driver(device_uuid) +# self.drivers[device_uuid] = driver +# driver.configure(settings) +# self.mutex_queues.signal_done(device_uuid) + +import threading +from queue import Queue +from typing import Dict + +class MutexQueues: + def __init__(self) -> None: + # lock to protect dictionary updates + self.lock = threading.Lock() + + # dictionaty of queues of mutexes: queue_name => queue[mutex] + # first mutex is the running one + self.mutex_queues : Dict[str, Queue[threading.Event]] = dict() + + def wait_my_turn(self, queue_name : str) -> None: + # create my mutex and enqueue it + mutex = threading.Event() + with self.lock: + queue : Queue = self.mutex_queues.setdefault(queue_name, Queue()) + first_in_queue = (queue.qsize() == 0) + queue.put_nowait(mutex) + + # if I'm the first in the queue upon addition, means there are no running tasks + # directly return without waiting + if first_in_queue: return + + # otherwise, wait for my turn in the queue + mutex.wait() + + def signal_done(self, queue_name : str) -> None: + # I'm done with my work + with self.lock: + queue : Queue = self.mutex_queues.setdefault(queue_name, Queue()) + + # remove muself from the queue + queue.get_nowait() + + # if there are no other tasks queued, return + if queue.qsize() == 0: return + + # otherwise, signal the next task in the queue to start + next_mutex : threading.Event = queue.queue[0] + next_mutex.set() diff --git a/src/service/service/database/__init__.py b/src/common/tools/mutex_queues/__init__.py similarity index 76% rename from src/service/service/database/__init__.py rename to src/common/tools/mutex_queues/__init__.py index 926623031b92b7dc7ad545b5f5da369b7ab79856..70a33251242c51f49140e596b8208a19dd5245f7 100644 --- a/src/service/service/database/__init__.py +++ b/src/common/tools/mutex_queues/__init__.py @@ -12,5 +12,3 @@ # See the License for the specific language governing permissions and # limitations under the License. -# In-Memory database with a simplified representation of Context Database focused on the Service model. -# Used as an internal data cache, for message validation, and message formatting purposes. diff --git a/src/common/tools/object_factory/Constraint.py b/src/common/tools/object_factory/Constraint.py index df290d4285330f1965608d710d9d48ca49131521..757531daf65b60c5f5b6c90ee67ef00488f91590 100644 --- a/src/common/tools/object_factory/Constraint.py +++ b/src/common/tools/object_factory/Constraint.py @@ -15,6 +15,19 @@ import json from typing import Any, Dict, Union -def json_constraint(constraint_type : str, constraint_value : Union[str, Dict[str, Any]]): +def json_constraint_custom(constraint_type : str, constraint_value : Union[str, Dict[str, Any]]) -> Dict: if not isinstance(constraint_value, str): constraint_value = json.dumps(constraint_value, sort_keys=True) return {'custom': {'constraint_type': constraint_type, 'constraint_value': constraint_value}} + +def json_constraint_endpoint_location_region(endpoint_id : Dict, region : str) -> Dict: + return {'endpoint_location': {'endpoint_id': endpoint_id, 'location': {'region': region}}} + +def json_constraint_endpoint_location_gps(endpoint_id : Dict, latitude : float, longitude : float) -> Dict: + gps_position = {'latitude': latitude, 'longitude': longitude} + return {'endpoint_location': {'endpoint_id': endpoint_id, 'location': {'gps_position': gps_position}}} + +def json_constraint_endpoint_priority(endpoint_id : Dict, priority : int) -> Dict: + return {'endpoint_priority': {'endpoint_id': endpoint_id, 'priority': priority}} + +def json_constraint_sla_availability(num_disjoint_paths : int, all_active : bool) -> Dict: + return {'sla_availability': {'num_disjoint_paths': num_disjoint_paths, 'all_active': all_active}} diff --git a/src/common/tools/object_factory/Device.py b/src/common/tools/object_factory/Device.py index 32baff9ae5cfb9a9a41d1d06bfec7df5fd5c0e4a..666d65f1e739b4cca8b665846f1775dcd6130e1c 100644 --- a/src/common/tools/object_factory/Device.py +++ b/src/common/tools/object_factory/Device.py @@ -20,7 +20,8 @@ from common.tools.object_factory.ConfigRule import json_config_rule_set DEVICE_DISABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_DISABLED -DEVICE_EMUOLS_TYPE = DeviceTypeEnum.EMULATED_OPTICAL_LINE_SYSTEM.value +DEVICE_EMUDC_TYPE = DeviceTypeEnum.EMULATED_DATACENTER.value +DEVICE_EMUOLS_TYPE = DeviceTypeEnum.EMULATED_OPEN_LINE_SYSTEM.value DEVICE_EMUPR_TYPE = DeviceTypeEnum.EMULATED_PACKET_ROUTER.value DEVICE_EMU_DRIVERS = [DeviceDriverEnum.DEVICEDRIVER_UNDEFINED] DEVICE_EMU_ADDRESS = '127.0.0.1' @@ -29,11 +30,14 @@ DEVICE_EMU_PORT = '0' DEVICE_PR_TYPE = DeviceTypeEnum.PACKET_ROUTER.value DEVICE_PR_DRIVERS = [DeviceDriverEnum.DEVICEDRIVER_OPENCONFIG] -DEVICE_TAPI_TYPE = DeviceTypeEnum.OPTICAL_LINE_SYSTEM.value +DEVICE_TAPI_TYPE = DeviceTypeEnum.OPEN_LINE_SYSTEM.value DEVICE_TAPI_DRIVERS = [DeviceDriverEnum.DEVICEDRIVER_TRANSPORT_API] +DEVICE_XR_CONSTELLATION_TYPE = DeviceTypeEnum.XR_CONSTELLATION.value +DEVICE_XR_CONSTELLATION_DRIVERS = [DeviceDriverEnum.DEVICEDRIVER_XR] + # check which enum type and value assign to microwave device -DEVICE_MICROWAVE_TYPE = DeviceTypeEnum.MICROVAWE_RADIO_SYSTEM.value +DEVICE_MICROWAVE_TYPE = DeviceTypeEnum.MICROWAVE_RADIO_SYSTEM.value DEVICE_MICROWAVE_DRIVERS = [DeviceDriverEnum.DEVICEDRIVER_IETF_NETWORK_TOPOLOGY] DEVICE_P4_TYPE = DeviceTypeEnum.P4_SWITCH.value @@ -71,6 +75,14 @@ def json_device_emulated_tapi_disabled( device_uuid, DEVICE_EMUOLS_TYPE, DEVICE_DISABLED, endpoints=endpoints, config_rules=config_rules, drivers=drivers) +def json_device_emulated_datacenter_disabled( + device_uuid : str, endpoints : List[Dict] = [], config_rules : List[Dict] = [], + drivers : List[Dict] = DEVICE_EMU_DRIVERS + ): + return json_device( + device_uuid, DEVICE_EMUDC_TYPE, DEVICE_DISABLED, endpoints=endpoints, config_rules=config_rules, + drivers=drivers) + def json_device_packetrouter_disabled( device_uuid : str, endpoints : List[Dict] = [], config_rules : List[Dict] = [], drivers : List[Dict] = DEVICE_PR_DRIVERS @@ -85,6 +97,14 @@ def json_device_tapi_disabled( return json_device( device_uuid, DEVICE_TAPI_TYPE, DEVICE_DISABLED, endpoints=endpoints, config_rules=config_rules, drivers=drivers) +def json_device_xr_constellation_disabled( + device_uuid : str, endpoints : List[Dict] = [], config_rules : List[Dict] = [], + drivers : List[Dict] = DEVICE_XR_CONSTELLATION_DRIVERS + ): + return json_device( + device_uuid, DEVICE_XR_CONSTELLATION_TYPE, DEVICE_DISABLED, endpoints=endpoints, config_rules=config_rules, + drivers=drivers) + def json_device_microwave_disabled( device_uuid : str, endpoints : List[Dict] = [], config_rules : List[Dict] = [], drivers : List[Dict] = DEVICE_MICROWAVE_DRIVERS diff --git a/src/common/tools/object_factory/Link.py b/src/common/tools/object_factory/Link.py index 922a39dbe24f4f4b635f378180ab13c80322801b..12c233464f575fefdaa13afe457ca1ae500f15b6 100644 --- a/src/common/tools/object_factory/Link.py +++ b/src/common/tools/object_factory/Link.py @@ -13,15 +13,21 @@ # limitations under the License. import copy -from typing import Dict, List +from typing import Dict, List, Tuple def get_link_uuid(a_endpoint_id : Dict, z_endpoint_id : Dict) -> str: return '{:s}/{:s}=={:s}/{:s}'.format( a_endpoint_id['device_id']['device_uuid']['uuid'], a_endpoint_id['endpoint_uuid']['uuid'], z_endpoint_id['device_id']['device_uuid']['uuid'], z_endpoint_id['endpoint_uuid']['uuid']) -def json_link_id(link_uuid : str): +def json_link_id(link_uuid : str) -> Dict: return {'link_uuid': {'uuid': link_uuid}} -def json_link(link_uuid : str, endpoint_ids : List[Dict]): +def json_link(link_uuid : str, endpoint_ids : List[Dict]) -> Dict: return {'link_id': json_link_id(link_uuid), 'link_endpoint_ids': copy.deepcopy(endpoint_ids)} + +def compose_link(endpoint_a, endpoint_z) -> Tuple[Dict, Dict]: + link_uuid = get_link_uuid(endpoint_a['endpoint_id'], endpoint_z['endpoint_id']) + link_id = json_link_id(link_uuid) + link = json_link(link_uuid, [endpoint_a['endpoint_id'], endpoint_z['endpoint_id']]) + return link_id, link diff --git a/src/common/tools/object_factory/PolicyRule.py b/src/common/tools/object_factory/PolicyRule.py new file mode 100644 index 0000000000000000000000000000000000000000..8702f931dfffef175ce6c25de24a10de8286effc --- /dev/null +++ b/src/common/tools/object_factory/PolicyRule.py @@ -0,0 +1,48 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import logging +from typing import Dict, List, Optional +from common.proto.policy_condition_pb2 import BooleanOperator + +LOGGER = logging.getLogger(__name__) + +def json_policy_rule_id(policy_rule_uuid : str) -> Dict: + return {'uuid': {'uuid': policy_rule_uuid}} + +def json_policy_rule( + policy_rule_uuid : str, policy_priority : int = 1, + boolean_operator : BooleanOperator = BooleanOperator.POLICYRULE_CONDITION_BOOLEAN_AND, + condition_list : List[Dict] = [], action_list : List[Dict] = [], + service_id : Optional[Dict] = None, device_id_list : List[Dict] = [] +) -> Dict: + basic = { + 'policyRuleId': json_policy_rule_id(policy_rule_uuid), + 'priority': policy_priority, + 'conditionList': condition_list, + 'booleanOperator': boolean_operator, + 'actionList': action_list, + } + + result = {} + if service_id is not None: + policy_rule_type = 'service' + result[policy_rule_type] = {'policyRuleBasic': basic} + result[policy_rule_type]['serviceId'] = service_id + else: + policy_rule_type = 'device' + result[policy_rule_type] = {'policyRuleBasic': basic} + + result[policy_rule_type]['deviceList'] = device_id_list + return result diff --git a/src/common/tools/object_factory/Service.py b/src/common/tools/object_factory/Service.py index 51f75e6dbe5e430330e697da772d65703f7568c7..0b5ad820c565c50607180e0933795774fd5c2035 100644 --- a/src/common/tools/object_factory/Service.py +++ b/src/common/tools/object_factory/Service.py @@ -42,12 +42,42 @@ def json_service( 'service_config' : {'config_rules': copy.deepcopy(config_rules)}, } +def json_service_l2nm_planned( + service_uuid : str, endpoint_ids : List[Dict] = [], constraints : List[Dict] = [], + config_rules : List[Dict] = [], context_uuid : str = DEFAULT_CONTEXT_UUID + ): + + return json_service( + service_uuid, ServiceTypeEnum.SERVICETYPE_L2NM, context_id=json_context_id(context_uuid), + status=ServiceStatusEnum.SERVICESTATUS_PLANNED, endpoint_ids=endpoint_ids, constraints=constraints, + config_rules=config_rules) + def json_service_l3nm_planned( service_uuid : str, endpoint_ids : List[Dict] = [], constraints : List[Dict] = [], - config_rules : List[Dict] = [] + config_rules : List[Dict] = [], context_uuid : str = DEFAULT_CONTEXT_UUID + ): + + return json_service( + service_uuid, ServiceTypeEnum.SERVICETYPE_L3NM, context_id=json_context_id(context_uuid), + status=ServiceStatusEnum.SERVICESTATUS_PLANNED, endpoint_ids=endpoint_ids, constraints=constraints, + config_rules=config_rules) + +def json_service_tapi_planned( + service_uuid : str, endpoint_ids : List[Dict] = [], constraints : List[Dict] = [], + config_rules : List[Dict] = [], context_uuid : str = DEFAULT_CONTEXT_UUID ): return json_service( - service_uuid, ServiceTypeEnum.SERVICETYPE_L3NM, context_id=json_context_id(DEFAULT_CONTEXT_UUID), + service_uuid, ServiceTypeEnum.SERVICETYPE_TAPI_CONNECTIVITY_SERVICE, context_id=json_context_id(context_uuid), status=ServiceStatusEnum.SERVICESTATUS_PLANNED, endpoint_ids=endpoint_ids, constraints=constraints, config_rules=config_rules) + +def json_service_p4_planned( + service_uuid : str, endpoint_ids : List[Dict] = [], constraints : List[Dict] = [], + config_rules : List[Dict] = [], context_uuid : str = DEFAULT_CONTEXT_UUID + ): + + return json_service( + service_uuid, ServiceTypeEnum.SERVICETYPE_L2NM, context_id=json_context_id(context_uuid), + status=ServiceStatusEnum.SERVICESTATUS_PLANNED, endpoint_ids=endpoint_ids, constraints=constraints, + config_rules=config_rules) \ No newline at end of file diff --git a/src/common/tools/object_factory/Slice.py b/src/common/tools/object_factory/Slice.py new file mode 100644 index 0000000000000000000000000000000000000000..2376784e3237992ab3d18d9d70db41b3a3f23560 --- /dev/null +++ b/src/common/tools/object_factory/Slice.py @@ -0,0 +1,50 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +import copy +from typing import Dict, List, Optional +from common.Constants import DEFAULT_CONTEXT_UUID +from common.proto.context_pb2 import SliceStatusEnum +from common.tools.object_factory.Context import json_context_id + +def get_slice_uuid(a_endpoint_id : Dict, z_endpoint_id : Dict) -> str: + return 'slc:{:s}/{:s}=={:s}/{:s}'.format( + a_endpoint_id['device_id']['device_uuid']['uuid'], a_endpoint_id['endpoint_uuid']['uuid'], + z_endpoint_id['device_id']['device_uuid']['uuid'], z_endpoint_id['endpoint_uuid']['uuid']) + +def json_slice_id(slice_uuid : str, context_id : Optional[Dict] = None) -> Dict: + result = {'slice_uuid': {'uuid': slice_uuid}} + if context_id is not None: result['context_id'] = copy.deepcopy(context_id) + return result + +def json_slice_owner(owner_uuid : str, owner_string : str) -> Dict: + return {'owner_uuid': {'uuid': owner_uuid}, 'owner_string': owner_string} + +def json_slice( + slice_uuid : str, context_uuid : str = DEFAULT_CONTEXT_UUID, + status : SliceStatusEnum = SliceStatusEnum.SLICESTATUS_PLANNED, endpoint_ids : List[Dict] = [], + constraints : List[Dict] = [], config_rules : List[Dict] = [], service_ids : List[Dict] = [], + subslice_ids : List[Dict] = [], owner : Optional[Dict] = None): + + result = { + 'slice_id' : json_slice_id(slice_uuid, context_id=json_context_id(context_uuid)), + 'slice_status' : {'slice_status': status}, + 'slice_endpoint_ids': copy.deepcopy(endpoint_ids), + 'slice_constraints' : copy.deepcopy(constraints), + 'slice_config' : {'config_rules': copy.deepcopy(config_rules)}, + 'slice_service_ids' : copy.deepcopy(service_ids), + 'slice_subslice_ids': copy.deepcopy(subslice_ids), + } + if owner is not None: result['slice_owner'] = owner + return result diff --git a/src/common/tools/service/ConstraintsChecker.py b/src/common/tools/service/ConstraintsChecker.py new file mode 100644 index 0000000000000000000000000000000000000000..864cf3ed1b45c68a4628c1196b86de6e9df0edfd --- /dev/null +++ b/src/common/tools/service/ConstraintsChecker.py @@ -0,0 +1,38 @@ +import grpc, logging +from typing import Dict, List, Set, Tuple +from common.Checkers import chk_string +from common.exceptions.ServiceException import ServiceException +from service.proto.context_pb2 import Constraint + +def check_constraint( + logger : logging.Logger, constraint_number : int, parent_name : str, constraint : Constraint, + add_constraints : Dict[str, Dict[str, Set[str]]]) -> Tuple[str, str]: + + try: + constraint_type = chk_string('constraint[#{}].constraint_type'.format(constraint_number), + constraint.constraint_type, + allow_empty=False) + constraint_value = chk_string('constraint[#{}].constraint_value'.format(constraint_number), + constraint.constraint_value, + allow_empty=False) + except Exception as e: + logger.exception('Invalid arguments:') + raise ServiceException(grpc.StatusCode.INVALID_ARGUMENT, str(e)) + + if constraint_type in add_constraints: + msg = 'Duplicated ConstraintType({}) in {}.' + msg = msg.format(constraint_type, parent_name) + raise ServiceException(grpc.StatusCode.INVALID_ARGUMENT, msg) + + add_constraints[constraint_type] = constraint_value + return constraint_type, constraint_value + +def check_constraints(logger : logging.Logger, parent_name : str, constraints): + add_constraints : Dict[str, str] = {} + constraint_tuples : List[Tuple[str, str]] = [] + for constraint_number,constraint in enumerate(constraints): + _parent_name = 'Constraint(#{}) of {}'.format(constraint_number, parent_name) + constraint_type, constraint_value = check_constraint( + logger, constraint_number, _parent_name, constraint, add_constraints) + constraint_tuples.append((constraint_type, constraint_value)) + return constraint_tuples diff --git a/src/common/tools/service/SliceCheckers.py b/src/common/tools/service/SliceCheckers.py new file mode 100644 index 0000000000000000000000000000000000000000..bac9766b8595c64f9f8d68954707cc5f1efc68e0 --- /dev/null +++ b/src/common/tools/service/SliceCheckers.py @@ -0,0 +1,18 @@ +import grpc +from common.database.api.Database import Database +from common.database.api.context.slice.Slice import Slice +from common.exceptions.ServiceException import ServiceException + +def check_slice_exists(database : Database, context_id : str, slice_id : str) -> Slice: + db_context = database.context(context_id).create() + if db_context.slices.contains(slice_id): return db_context.slice(slice_id) + msg = 'Context({})/Slice({}) does not exist in the database.' + msg = msg.format(context_id, slice_id) + raise ServiceException(grpc.StatusCode.NOT_FOUND, msg) + +def check_slice_not_exists(database : Database, context_id : str, slice_id : str): + db_context = database.context(context_id).create() + if not db_context.slices.contains(slice_id): return + msg = 'Context({})/Slice({}) already exists in the database.' + msg = msg.format(context_id, slice_id) + raise ServiceException(grpc.StatusCode.ALREADY_EXISTS, msg) diff --git a/src/common/type_checkers/Assertions.py b/src/common/type_checkers/Assertions.py index 20ffa9ad619a40d6da4f3830c202d1a545545b51..aa9ede33303fca73d033ee2a40dec587882a5bb1 100644 --- a/src/common/type_checkers/Assertions.py +++ b/src/common/type_checkers/Assertions.py @@ -32,6 +32,7 @@ def validate_device_driver_enum(message): 'DEVICEDRIVER_P4', 'DEVICEDRIVER_IETF_NETWORK_TOPOLOGY', 'DEVICEDRIVER_ONF_TR_352', + 'DEVICEDRIVER_XR', ] def validate_device_operational_status_enum(message): diff --git a/src/compute/Dockerfile b/src/compute/Dockerfile index bdc07584c5bd8f08fdef6f997cc18dcfd9eeb3e6..90a69c0f503724fd1098608d85ad5eca874e3f8b 100644 --- a/src/compute/Dockerfile +++ b/src/compute/Dockerfile @@ -66,6 +66,8 @@ COPY src/compute/. compute/ COPY src/context/. context/ COPY src/service/. service/ COPY src/slice/. slice/ +RUN mkdir -p /var/teraflow/tests/tools +COPY src/tests/tools/mock_osm/. tests/tools/mock_osm/ # Start the service ENTRYPOINT ["python", "-m", "compute.service"] diff --git a/src/compute/service/ComputeServiceServicerImpl.py b/src/compute/service/ComputeServiceServicerImpl.py index f8ffd912f065ddc11829f8e9e85559b13576a222..a47a1db6c6fd7ffea16ab23be2997e3c929fb68b 100644 --- a/src/compute/service/ComputeServiceServicerImpl.py +++ b/src/compute/service/ComputeServiceServicerImpl.py @@ -13,56 +13,51 @@ # limitations under the License. import grpc, logging +from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from common.proto.context_pb2 import ( AuthenticationResult, Empty, Service, ServiceId, ServiceIdList, ServiceStatus, TeraFlowController) from common.proto.compute_pb2_grpc import ComputeServiceServicer -from common.rpc_method_wrapper.Decorator import create_metrics, safe_and_metered_rpc_method LOGGER = logging.getLogger(__name__) -SERVICE_NAME = 'Compute' -METHOD_NAMES = [ - 'CheckCredentials', 'GetConnectivityServiceStatus', 'CreateConnectivityService', 'EditConnectivityService', - 'DeleteConnectivityService', 'GetAllActiveConnectivityServices', 'ClearAllConnectivityServices' -] -METRICS = create_metrics(SERVICE_NAME, METHOD_NAMES) +METRICS_POOL = MetricsPool('Compute', 'RPC') class ComputeServiceServicerImpl(ComputeServiceServicer): def __init__(self): LOGGER.info('Creating Servicer...') LOGGER.info('Servicer Created') - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def CheckCredentials(self, request : TeraFlowController, context : grpc.ServicerContext) -> AuthenticationResult: LOGGER.warning('NOT IMPLEMENTED') return AuthenticationResult() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetConnectivityServiceStatus(self, request : ServiceId, context : grpc.ServicerContext) -> ServiceStatus: LOGGER.warning('NOT IMPLEMENTED') return ServiceStatus() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def CreateConnectivityService(self, request : Service, context : grpc.ServicerContext) -> ServiceId: LOGGER.warning('NOT IMPLEMENTED') return ServiceId() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def EditConnectivityService(self, request : Service, context : grpc.ServicerContext) -> ServiceId: LOGGER.warning('NOT IMPLEMENTED') return ServiceId() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def DeleteConnectivityService(self, request : Service, context : grpc.ServicerContext) -> Empty: LOGGER.warning('NOT IMPLEMENTED') return Empty() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetAllActiveConnectivityServices(self, request : Empty, context : grpc.ServicerContext) -> ServiceIdList: LOGGER.warning('NOT IMPLEMENTED') return ServiceIdList() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ClearAllConnectivityServices(self, request : Empty, context : grpc.ServicerContext) -> Empty: LOGGER.warning('NOT IMPLEMENTED') return Empty() diff --git a/src/compute/service/__main__.py b/src/compute/service/__main__.py index 345b2fdd6950ecda802e8bd1c86e1421b5c60d84..e80681e177f0f0def3dbe75d76e7e65ceaca1e87 100644 --- a/src/compute/service/__main__.py +++ b/src/compute/service/__main__.py @@ -39,6 +39,8 @@ def main(): wait_for_environment_variables([ get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST ), get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + get_env_var_name(ServiceNameEnum.SLICE, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.SLICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), ]) signal.signal(signal.SIGINT, signal_handler) diff --git a/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/Constants.py b/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/Constants.py index d432e5605cfebaa01c2a8faf0cbffcff110d7dbe..a6c8f27720bee0286995a9104f9599dbe99405e7 100644 --- a/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/Constants.py +++ b/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/Constants.py @@ -17,38 +17,61 @@ DEFAULT_ADDRESS_FAMILIES = ['IPV4'] DEFAULT_BGP_AS = 65000 DEFAULT_BGP_ROUTE_TARGET = '{:d}:{:d}'.format(DEFAULT_BGP_AS, 333) +# TODO: improve definition of bearer mappings + # Bearer mappings: # device_uuid:endpoint_uuid => ( -# device_uuid, endpoint_uuid, router_id, route_distinguisher, sub_if_index, address_ip, address_prefix) +# device_uuid, endpoint_uuid, router_id, route_dist, sub_if_index, +# address_ip, address_prefix, remote_router, circuit_id) + BEARER_MAPPINGS = { - 'R1-EMU:13/1/2': ('R1-EMU', '13/1/2', '10.10.10.1', '65000:100', 400, '3.3.2.1', 24), - 'R2-EMU:13/1/2': ('R2-EMU', '13/1/2', '12.12.12.1', '65000:120', 450, '3.4.2.1', 24), - 'R3-EMU:13/1/2': ('R3-EMU', '13/1/2', '20.20.20.1', '65000:200', 500, '3.3.1.1', 24), - 'R4-EMU:13/1/2': ('R4-EMU', '13/1/2', '22.22.22.1', '65000:220', 550, '3.4.1.1', 24), - - 'R1@D1:3/1': ('R1@D1', '3/1', '10.0.1.1', '65001:101', 100, '1.1.3.1', 24), - 'R1@D1:3/2': ('R1@D1', '3/2', '10.0.1.1', '65001:101', 100, '1.1.3.2', 24), - 'R1@D1:3/3': ('R1@D1', '3/3', '10.0.1.1', '65001:101', 100, '1.1.3.3', 24), - 'R2@D1:3/1': ('R2@D1', '3/1', '10.0.1.2', '65001:102', 100, '1.2.3.1', 24), - 'R2@D1:3/2': ('R2@D1', '3/2', '10.0.1.2', '65001:102', 100, '1.2.3.2', 24), - 'R2@D1:3/3': ('R2@D1', '3/3', '10.0.1.2', '65001:102', 100, '1.2.3.3', 24), - 'R3@D1:3/1': ('R3@D1', '3/1', '10.0.1.3', '65001:103', 100, '1.3.3.1', 24), - 'R3@D1:3/2': ('R3@D1', '3/2', '10.0.1.3', '65001:103', 100, '1.3.3.2', 24), - 'R3@D1:3/3': ('R3@D1', '3/3', '10.0.1.3', '65001:103', 100, '1.3.3.3', 24), - 'R4@D1:3/1': ('R4@D1', '3/1', '10.0.1.4', '65001:104', 100, '1.4.3.1', 24), - 'R4@D1:3/2': ('R4@D1', '3/2', '10.0.1.4', '65001:104', 100, '1.4.3.2', 24), - 'R4@D1:3/3': ('R4@D1', '3/3', '10.0.1.4', '65001:104', 100, '1.4.3.3', 24), - - 'R1@D2:3/1': ('R1@D2', '3/1', '10.0.2.1', '65002:101', 100, '2.1.3.1', 24), - 'R1@D2:3/2': ('R1@D2', '3/2', '10.0.2.1', '65002:101', 100, '2.1.3.2', 24), - 'R1@D2:3/3': ('R1@D2', '3/3', '10.0.2.1', '65002:101', 100, '2.1.3.3', 24), - 'R2@D2:3/1': ('R2@D2', '3/1', '10.0.2.2', '65002:102', 100, '2.2.3.1', 24), - 'R2@D2:3/2': ('R2@D2', '3/2', '10.0.2.2', '65002:102', 100, '2.2.3.2', 24), - 'R2@D2:3/3': ('R2@D2', '3/3', '10.0.2.2', '65002:102', 100, '2.2.3.3', 24), - 'R3@D2:3/1': ('R3@D2', '3/1', '10.0.2.3', '65002:103', 100, '2.3.3.1', 24), - 'R3@D2:3/2': ('R3@D2', '3/2', '10.0.2.3', '65002:103', 100, '2.3.3.2', 24), - 'R3@D2:3/3': ('R3@D2', '3/3', '10.0.2.3', '65002:103', 100, '2.3.3.3', 24), - 'R4@D2:3/1': ('R4@D2', '3/1', '10.0.2.4', '65002:104', 100, '2.4.3.1', 24), - 'R4@D2:3/2': ('R4@D2', '3/2', '10.0.2.4', '65002:104', 100, '2.4.3.2', 24), - 'R4@D2:3/3': ('R4@D2', '3/3', '10.0.2.4', '65002:104', 100, '2.4.3.3', 24), + # OFC'22 + 'R1-EMU:13/1/2': ('R1-EMU', '13/1/2', '10.10.10.1', '65000:100', 400, '3.3.2.1', 24, None, None), + 'R2-EMU:13/1/2': ('R2-EMU', '13/1/2', '12.12.12.1', '65000:120', 450, '3.4.2.1', 24, None, None), + 'R3-EMU:13/1/2': ('R3-EMU', '13/1/2', '20.20.20.1', '65000:200', 500, '3.3.1.1', 24, None, None), + 'R4-EMU:13/1/2': ('R4-EMU', '13/1/2', '22.22.22.1', '65000:220', 550, '3.4.1.1', 24, None, None), + + # OECC/PSC'22 - domain 1 + 'R1@D1:3/1' : ('R1@D1', '3/1', '10.0.1.1', '65001:101', 100, '1.1.3.1', 24, None, None), + 'R1@D1:3/2' : ('R1@D1', '3/2', '10.0.1.1', '65001:101', 100, '1.1.3.2', 24, None, None), + 'R1@D1:3/3' : ('R1@D1', '3/3', '10.0.1.1', '65001:101', 100, '1.1.3.3', 24, None, None), + 'R2@D1:3/1' : ('R2@D1', '3/1', '10.0.1.2', '65001:102', 100, '1.2.3.1', 24, None, None), + 'R2@D1:3/2' : ('R2@D1', '3/2', '10.0.1.2', '65001:102', 100, '1.2.3.2', 24, None, None), + 'R2@D1:3/3' : ('R2@D1', '3/3', '10.0.1.2', '65001:102', 100, '1.2.3.3', 24, None, None), + 'R3@D1:3/1' : ('R3@D1', '3/1', '10.0.1.3', '65001:103', 100, '1.3.3.1', 24, None, None), + 'R3@D1:3/2' : ('R3@D1', '3/2', '10.0.1.3', '65001:103', 100, '1.3.3.2', 24, None, None), + 'R3@D1:3/3' : ('R3@D1', '3/3', '10.0.1.3', '65001:103', 100, '1.3.3.3', 24, None, None), + 'R4@D1:3/1' : ('R4@D1', '3/1', '10.0.1.4', '65001:104', 100, '1.4.3.1', 24, None, None), + 'R4@D1:3/2' : ('R4@D1', '3/2', '10.0.1.4', '65001:104', 100, '1.4.3.2', 24, None, None), + 'R4@D1:3/3' : ('R4@D1', '3/3', '10.0.1.4', '65001:104', 100, '1.4.3.3', 24, None, None), + + # OECC/PSC'22 - domain 2 + 'R1@D2:3/1' : ('R1@D2', '3/1', '10.0.2.1', '65002:101', 100, '2.1.3.1', 24, None, None), + 'R1@D2:3/2' : ('R1@D2', '3/2', '10.0.2.1', '65002:101', 100, '2.1.3.2', 24, None, None), + 'R1@D2:3/3' : ('R1@D2', '3/3', '10.0.2.1', '65002:101', 100, '2.1.3.3', 24, None, None), + 'R2@D2:3/1' : ('R2@D2', '3/1', '10.0.2.2', '65002:102', 100, '2.2.3.1', 24, None, None), + 'R2@D2:3/2' : ('R2@D2', '3/2', '10.0.2.2', '65002:102', 100, '2.2.3.2', 24, None, None), + 'R2@D2:3/3' : ('R2@D2', '3/3', '10.0.2.2', '65002:102', 100, '2.2.3.3', 24, None, None), + 'R3@D2:3/1' : ('R3@D2', '3/1', '10.0.2.3', '65002:103', 100, '2.3.3.1', 24, None, None), + 'R3@D2:3/2' : ('R3@D2', '3/2', '10.0.2.3', '65002:103', 100, '2.3.3.2', 24, None, None), + 'R3@D2:3/3' : ('R3@D2', '3/3', '10.0.2.3', '65002:103', 100, '2.3.3.3', 24, None, None), + 'R4@D2:3/1' : ('R4@D2', '3/1', '10.0.2.4', '65002:104', 100, '2.4.3.1', 24, None, None), + 'R4@D2:3/2' : ('R4@D2', '3/2', '10.0.2.4', '65002:104', 100, '2.4.3.2', 24, None, None), + 'R4@D2:3/3' : ('R4@D2', '3/3', '10.0.2.4', '65002:104', 100, '2.4.3.3', 24, None, None), + + # ECOC'22 + 'DC1-GW:CS1-GW1': ('CS1-GW1', '10/1', '5.5.1.1', None, 0, None, None, '5.5.2.1', 111), + 'DC1-GW:CS1-GW2': ('CS1-GW2', '10/1', '5.5.1.2', None, 0, None, None, '5.5.2.2', 222), + 'DC2-GW:CS2-GW1': ('CS2-GW1', '10/1', '5.5.2.1', None, 0, None, None, '5.5.1.1', 111), + 'DC2-GW:CS2-GW2': ('CS2-GW2', '10/1', '5.5.2.2', None, 0, None, None, '5.5.1.2', 222), + + # NetworkX'22 + 'R1:1/2': ('R1', '1/2', '5.1.1.2', None, 0, None, None, None, None), + 'R1:1/3': ('R1', '1/3', '5.1.1.3', None, 0, None, None, None, None), + 'R2:1/2': ('R2', '1/2', '5.2.1.2', None, 0, None, None, None, None), + 'R2:1/3': ('R2', '1/3', '5.2.1.3', None, 0, None, None, None, None), + 'R3:1/2': ('R3', '1/2', '5.3.1.2', None, 0, None, None, None, None), + 'R3:1/3': ('R3', '1/3', '5.3.1.3', None, 0, None, None, None, None), + 'R4:1/2': ('R4', '1/2', '5.4.1.2', None, 0, None, None, None, None), + 'R4:1/3': ('R4', '1/3', '5.4.1.3', None, 0, None, None, None, None), } diff --git a/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_Service.py b/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_Service.py index c77d714a94fa8d2d4ee9cd2c3db06949665a489c..e3d12088147a59c3fd9e0179d3a3d957483fcc22 100644 --- a/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_Service.py +++ b/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_Service.py @@ -16,12 +16,11 @@ import logging from flask import request from flask.json import jsonify from flask_restful import Resource -from common.Constants import DEFAULT_CONTEXT_UUID -from common.proto.context_pb2 import ServiceId, ServiceStatusEnum, SliceStatusEnum +from common.proto.context_pb2 import SliceStatusEnum +from common.tools.context_queries.Slice import get_slice from context.client.ContextClient import ContextClient -from service.client.ServiceClient import ServiceClient +from slice.client.SliceClient import SliceClient from .tools.Authentication import HTTP_AUTH -from .tools.ContextMethods import get_service, get_slice from .tools.HttpStatusCodes import HTTP_GATEWAYTIMEOUT, HTTP_NOCONTENT, HTTP_OK, HTTP_SERVERERROR LOGGER = logging.getLogger(__name__) @@ -32,31 +31,22 @@ class L2VPN_Service(Resource): LOGGER.debug('VPN_Id: {:s}'.format(str(vpn_id))) LOGGER.debug('Request: {:s}'.format(str(request))) - response = jsonify({}) try: context_client = ContextClient() - target = get_service(context_client, vpn_id) - if target is not None: - if target.service_id.service_uuid.uuid != vpn_id: # pylint: disable=no-member - raise Exception('Service retrieval failed. Wrong Service Id was returned') - service_ready_status = ServiceStatusEnum.SERVICESTATUS_ACTIVE - service_status = target.service_status.service_status # pylint: disable=no-member - response.status_code = HTTP_OK if service_status == service_ready_status else HTTP_GATEWAYTIMEOUT - return response + target = get_slice(context_client, vpn_id, rw_copy=True) + if target is None: + raise Exception('VPN({:s}) not found in database'.format(str(vpn_id))) - target = get_slice(context_client, vpn_id) - if target is not None: - if target.slice_id.slice_uuid.uuid != vpn_id: # pylint: disable=no-member - raise Exception('Slice retrieval failed. Wrong Slice Id was returned') - slice_ready_status = SliceStatusEnum.SLICESTATUS_ACTIVE - slice_status = target.slice_status.slice_status # pylint: disable=no-member - response.status_code = HTTP_OK if slice_status == slice_ready_status else HTTP_GATEWAYTIMEOUT - return response + if target.slice_id.slice_uuid.uuid != vpn_id: # pylint: disable=no-member + raise Exception('Slice retrieval failed. Wrong Slice Id was returned') - raise Exception('VPN({:s}) not found in database'.format(str(vpn_id))) + slice_ready_status = SliceStatusEnum.SLICESTATUS_ACTIVE + slice_status = target.slice_status.slice_status # pylint: disable=no-member + response = jsonify({}) + response.status_code = HTTP_OK if slice_status == slice_ready_status else HTTP_GATEWAYTIMEOUT except Exception as e: # pylint: disable=broad-except - LOGGER.exception('Something went wrong Retrieving VPN({:s})'.format(str(request))) + LOGGER.exception('Something went wrong Retrieving VPN({:s})'.format(str(vpn_id))) response = jsonify({'error': str(e)}) response.status_code = HTTP_SERVERERROR return response @@ -66,18 +56,21 @@ class L2VPN_Service(Resource): LOGGER.debug('VPN_Id: {:s}'.format(str(vpn_id))) LOGGER.debug('Request: {:s}'.format(str(request))) - # pylint: disable=no-member - service_id_request = ServiceId() - service_id_request.context_id.context_uuid.uuid = DEFAULT_CONTEXT_UUID - service_id_request.service_uuid.uuid = vpn_id - try: - service_client = ServiceClient() - service_client.DeleteService(service_id_request) + context_client = ContextClient() + + target = get_slice(context_client, vpn_id) + if target is None: + LOGGER.warning('VPN({:s}) not found in database. Nothing done.'.format(str(vpn_id))) + else: + if target.slice_id.slice_uuid.uuid != vpn_id: # pylint: disable=no-member + raise Exception('Slice retrieval failed. Wrong Slice Id was returned') + slice_client = SliceClient() + slice_client.DeleteSlice(target.slice_id) response = jsonify({}) response.status_code = HTTP_NOCONTENT except Exception as e: # pylint: disable=broad-except - LOGGER.exception('Something went wrong Deleting Service {:s}'.format(str(request))) + LOGGER.exception('Something went wrong Deleting VPN({:s})'.format(str(vpn_id))) response = jsonify({'error': str(e)}) response.status_code = HTTP_SERVERERROR return response diff --git a/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_Services.py b/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_Services.py index 7b959b2895d0f0acd27058fcb5e9a571cf6553d2..f27d852f017a08cb8b854cc19568280b9de14470 100644 --- a/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_Services.py +++ b/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_Services.py @@ -19,8 +19,7 @@ from flask.json import jsonify from flask_restful import Resource from werkzeug.exceptions import UnsupportedMediaType from common.Constants import DEFAULT_CONTEXT_UUID -from common.proto.context_pb2 import Service, ServiceStatusEnum, ServiceTypeEnum, SliceStatusEnum, Slice -from service.client.ServiceClient import ServiceClient +from common.proto.context_pb2 import SliceStatusEnum, Slice from slice.client.SliceClient import SliceClient from .schemas.vpn_service import SCHEMA_VPN_SERVICE from .tools.Authentication import HTTP_AUTH @@ -44,30 +43,16 @@ class L2VPN_Services(Resource): vpn_services : List[Dict] = request_data['ietf-l2vpn-svc:vpn-service'] for vpn_service in vpn_services: try: - vpn_service_type = vpn_service['vpn-svc-type'] - if vpn_service_type == 'vpws': - # pylint: disable=no-member - service_request = Service() - service_request.service_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_UUID - service_request.service_id.service_uuid.uuid = vpn_service['vpn-id'] - service_request.service_type = ServiceTypeEnum.SERVICETYPE_L3NM - service_request.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED - - service_client = ServiceClient() - service_reply = service_client.CreateService(service_request) - if service_reply != service_request.service_id: # pylint: disable=no-member - raise Exception('Service creation failed. Wrong Service Id was returned') - elif vpn_service_type == 'vpls': - # pylint: disable=no-member - slice_request = Slice() - slice_request.slice_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_UUID - slice_request.slice_id.slice_uuid.uuid = vpn_service['vpn-id'] - slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED - - slice_client = SliceClient() - slice_reply = slice_client.CreateSlice(slice_request) - if slice_reply != slice_request.slice_id: # pylint: disable=no-member - raise Exception('Slice creation failed. Wrong Slice Id was returned') + # pylint: disable=no-member + slice_request = Slice() + slice_request.slice_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_UUID + slice_request.slice_id.slice_uuid.uuid = vpn_service['vpn-id'] + slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED + + slice_client = SliceClient() + slice_reply = slice_client.CreateSlice(slice_request) + if slice_reply != slice_request.slice_id: # pylint: disable=no-member + raise Exception('Slice creation failed. Wrong Slice Id was returned') response = jsonify({}) response.status_code = HTTP_CREATED diff --git a/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_SiteNetworkAccesses.py b/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_SiteNetworkAccesses.py index 8be63895b813d7411b76ddeb33902babbf4c9743..819d8995da6ffc3a7913c8781e4021ce83665e29 100644 --- a/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_SiteNetworkAccesses.py +++ b/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/L2VPN_SiteNetworkAccesses.py @@ -12,169 +12,113 @@ # See the License for the specific language governing permissions and # limitations under the License. -from ctypes import Union -import json, logging -from typing import Dict +import logging +from typing import Dict, Optional from flask import request from flask.json import jsonify from flask.wrappers import Response from flask_restful import Resource from werkzeug.exceptions import UnsupportedMediaType -from common.proto.context_pb2 import ConfigActionEnum, Service, Slice +from common.proto.context_pb2 import Slice +from common.tools.context_queries.Slice import get_slice +from common.tools.grpc.ConfigRules import update_config_rule_custom +from common.tools.grpc.Constraints import ( + update_constraint_custom_dict, update_constraint_endpoint_location, update_constraint_endpoint_priority, + update_constraint_sla_availability) +from common.tools.grpc.EndPointIds import update_endpoint_ids from common.tools.grpc.Tools import grpc_message_to_json_string from context.client.ContextClient import ContextClient -from service.client.ServiceClient import ServiceClient from slice.client.SliceClient import SliceClient from .schemas.site_network_access import SCHEMA_SITE_NETWORK_ACCESS from .tools.Authentication import HTTP_AUTH -from .tools.ContextMethods import get_service, get_slice from .tools.HttpStatusCodes import HTTP_NOCONTENT, HTTP_SERVERERROR from .tools.Validator import validate_message -from .Constants import BEARER_MAPPINGS, DEFAULT_ADDRESS_FAMILIES, DEFAULT_BGP_AS, DEFAULT_BGP_ROUTE_TARGET, DEFAULT_MTU +from .Constants import ( + BEARER_MAPPINGS, DEFAULT_ADDRESS_FAMILIES, DEFAULT_BGP_AS, DEFAULT_BGP_ROUTE_TARGET, DEFAULT_MTU) LOGGER = logging.getLogger(__name__) -def process_site_network_access(context_client : ContextClient, site_network_access : Dict) -> Service: +def process_site_network_access(context_client : ContextClient, site_id : str, site_network_access : Dict) -> Slice: vpn_id = site_network_access['vpn-attachment']['vpn-id'] - cvlan_id = site_network_access['connection']['tagged-interface']['dot1q-vlan-tagged']['cvlan-id'] + encapsulation_type = site_network_access['connection']['encapsulation-type'] + cvlan_id = site_network_access['connection']['tagged-interface'][encapsulation_type]['cvlan-id'] + bearer_reference = site_network_access['bearer']['bearer-reference'] + access_priority : Optional[int] = site_network_access.get('availability', {}).get('access-priority') + single_active : bool = len(site_network_access.get('availability', {}).get('single-active', [])) > 0 + all_active : bool = len(site_network_access.get('availability', {}).get('all-active', [])) > 0 + + diversity_constraints = site_network_access.get('access-diversity', {}).get('constraints', {}).get('constraint', []) + raise_if_differs = True + diversity_constraints = { + constraint['constraint-type']:([ + target[0] + for target in constraint['target'].items() + if len(target[1]) == 1 + ][0], raise_if_differs) + for constraint in diversity_constraints + } + mapping = BEARER_MAPPINGS.get(bearer_reference) if mapping is None: msg = 'Specified Bearer({:s}) is not configured.' raise Exception(msg.format(str(bearer_reference))) - device_uuid,endpoint_uuid,router_id,route_distinguisher,sub_if_index,address_ip,address_prefix = mapping + ( + device_uuid, endpoint_uuid, router_id, route_dist, sub_if_index, + address_ip, address_prefix, remote_router, circuit_id + ) = mapping - target : Union[Service, Slice, None] = None - if target is None: target = get_service(context_client, vpn_id) - if target is None: target = get_slice (context_client, vpn_id) + target = get_slice(context_client, vpn_id, rw_copy=True) if target is None: raise Exception('VPN({:s}) not found in database'.format(str(vpn_id))) - # pylint: disable=no-member - endpoint_ids = target.service_endpoint_ids if isinstance(target, Service) else target.slice_endpoint_ids - - for endpoint_id in endpoint_ids: - if endpoint_id.device_id.device_uuid.uuid != device_uuid: continue - if endpoint_id.endpoint_uuid.uuid != endpoint_uuid: continue - break # found, do nothing - else: - # not found, add it - endpoint_id = endpoint_ids.add() - endpoint_id.device_id.device_uuid.uuid = device_uuid - endpoint_id.endpoint_uuid.uuid = endpoint_uuid - - if isinstance(target, Slice): return target - - for config_rule in target.service_config.config_rules: # pylint: disable=no-member - if config_rule.WhichOneof('config_rule') != 'custom': continue - if config_rule.custom.resource_key != '/settings': continue - json_settings = json.loads(config_rule.custom.resource_value) - - if 'mtu' not in json_settings: # missing, add it - json_settings['mtu'] = DEFAULT_MTU - elif json_settings['mtu'] != DEFAULT_MTU: # differs, raise exception - msg = 'Specified MTU({:s}) differs from Service MTU({:s})' - raise Exception(msg.format(str(json_settings['mtu']), str(DEFAULT_MTU))) - - if 'address_families' not in json_settings: # missing, add it - json_settings['address_families'] = DEFAULT_ADDRESS_FAMILIES - elif json_settings['address_families'] != DEFAULT_ADDRESS_FAMILIES: # differs, raise exception - msg = 'Specified AddressFamilies({:s}) differs from Service AddressFamilies({:s})' - raise Exception(msg.format(str(json_settings['address_families']), str(DEFAULT_ADDRESS_FAMILIES))) - - if 'bgp_as' not in json_settings: # missing, add it - json_settings['bgp_as'] = DEFAULT_BGP_AS - elif json_settings['bgp_as'] != DEFAULT_BGP_AS: # differs, raise exception - msg = 'Specified BgpAs({:s}) differs from Service BgpAs({:s})' - raise Exception(msg.format(str(json_settings['bgp_as']), str(DEFAULT_BGP_AS))) - - if 'bgp_route_target' not in json_settings: # missing, add it - json_settings['bgp_route_target'] = DEFAULT_BGP_ROUTE_TARGET - elif json_settings['bgp_route_target'] != DEFAULT_BGP_ROUTE_TARGET: # differs, raise exception - msg = 'Specified BgpRouteTarget({:s}) differs from Service BgpRouteTarget({:s})' - raise Exception(msg.format(str(json_settings['bgp_route_target']), str(DEFAULT_BGP_ROUTE_TARGET))) - - config_rule.custom.resource_value = json.dumps(json_settings, sort_keys=True) - break - else: - # not found, add it - config_rule = target.service_config.config_rules.add() # pylint: disable=no-member - config_rule.action = ConfigActionEnum.CONFIGACTION_SET - config_rule.custom.resource_key = '/settings' - config_rule.custom.resource_value = json.dumps({ - 'mtu' : DEFAULT_MTU, - 'address_families': DEFAULT_ADDRESS_FAMILIES, - 'bgp_as' : DEFAULT_BGP_AS, - 'bgp_route_target': DEFAULT_BGP_ROUTE_TARGET, - }, sort_keys=True) + endpoint_ids = target.slice_endpoint_ids # pylint: disable=no-member + config_rules = target.slice_config.config_rules # pylint: disable=no-member + constraints = target.slice_constraints # pylint: disable=no-member + + endpoint_id = update_endpoint_ids(endpoint_ids, device_uuid, endpoint_uuid) + + service_settings_key = '/settings' + update_config_rule_custom(config_rules, service_settings_key, { + 'mtu' : (DEFAULT_MTU, True), + 'address_families': (DEFAULT_ADDRESS_FAMILIES, True), + 'bgp_as' : (DEFAULT_BGP_AS, True), + 'bgp_route_target': (DEFAULT_BGP_ROUTE_TARGET, True), + }) endpoint_settings_key = '/device[{:s}]/endpoint[{:s}]/settings'.format(device_uuid, endpoint_uuid) - for config_rule in target.service_config.config_rules: # pylint: disable=no-member - if config_rule.WhichOneof('config_rule') != 'custom': continue - if config_rule.custom.resource_key != endpoint_settings_key: continue - json_settings = json.loads(config_rule.custom.resource_value) - - if 'router_id' not in json_settings: # missing, add it - json_settings['router_id'] = router_id - elif json_settings['router_id'] != router_id: # differs, raise exception - msg = 'Specified RouterId({:s}) differs from Service RouterId({:s})' - raise Exception(msg.format(str(json_settings['router_id']), str(router_id))) - - if 'route_distinguisher' not in json_settings: # missing, add it - json_settings['route_distinguisher'] = route_distinguisher - elif json_settings['route_distinguisher'] != route_distinguisher: # differs, raise exception - msg = 'Specified RouteDistinguisher({:s}) differs from Service RouteDistinguisher({:s})' - raise Exception(msg.format(str(json_settings['route_distinguisher']), str(route_distinguisher))) - - if 'sub_interface_index' not in json_settings: # missing, add it - json_settings['sub_interface_index'] = sub_if_index - elif json_settings['sub_interface_index'] != sub_if_index: # differs, raise exception - msg = 'Specified SubInterfaceIndex({:s}) differs from Service SubInterfaceIndex({:s})' - raise Exception(msg.format( - str(json_settings['sub_interface_index']), str(sub_if_index))) - - if 'vlan_id' not in json_settings: # missing, add it - json_settings['vlan_id'] = cvlan_id - elif json_settings['vlan_id'] != cvlan_id: # differs, raise exception - msg = 'Specified VLANId({:s}) differs from Service VLANId({:s})' - raise Exception(msg.format( - str(json_settings['vlan_id']), str(cvlan_id))) - - if 'address_ip' not in json_settings: # missing, add it - json_settings['address_ip'] = address_ip - elif json_settings['address_ip'] != address_ip: # differs, raise exception - msg = 'Specified AddressIP({:s}) differs from Service AddressIP({:s})' - raise Exception(msg.format( - str(json_settings['address_ip']), str(address_ip))) - - if 'address_prefix' not in json_settings: # missing, add it - json_settings['address_prefix'] = address_prefix - elif json_settings['address_prefix'] != address_prefix: # differs, raise exception - msg = 'Specified AddressPrefix({:s}) differs from Service AddressPrefix({:s})' - raise Exception(msg.format( - str(json_settings['address_prefix']), str(address_prefix))) - - config_rule.custom.resource_value = json.dumps(json_settings, sort_keys=True) - break - else: - # not found, add it - config_rule = target.service_config.config_rules.add() # pylint: disable=no-member - config_rule.action = ConfigActionEnum.CONFIGACTION_SET - config_rule.custom.resource_key = endpoint_settings_key - config_rule.custom.resource_value = json.dumps({ - 'router_id': router_id, - 'route_distinguisher': route_distinguisher, - 'sub_interface_index': sub_if_index, - 'vlan_id': cvlan_id, - 'address_ip': address_ip, - 'address_prefix': address_prefix, - }, sort_keys=True) + field_updates = {} + if router_id is not None: field_updates['router_id' ] = (router_id, True) + if route_dist is not None: field_updates['route_distinguisher'] = (route_dist, True) + if sub_if_index is not None: field_updates['sub_interface_index'] = (sub_if_index, True) + if cvlan_id is not None: field_updates['vlan_id' ] = (cvlan_id, True) + if address_ip is not None: field_updates['address_ip' ] = (address_ip, True) + if address_prefix is not None: field_updates['address_prefix' ] = (address_prefix, True) + if remote_router is not None: field_updates['remote_router' ] = (remote_router, True) + if circuit_id is not None: field_updates['circuit_id' ] = (circuit_id, True) + update_config_rule_custom(config_rules, endpoint_settings_key, field_updates) + + if len(diversity_constraints) > 0: + update_constraint_custom_dict(constraints, 'diversity', diversity_constraints) + + update_constraint_endpoint_location(constraints, endpoint_id, region=site_id) + if access_priority is not None: update_constraint_endpoint_priority(constraints, endpoint_id, access_priority) + if single_active or all_active: + # assume 1 disjoint path per endpoint/location included in service/slice + location_endpoints = {} + for constraint in constraints: + if constraint.WhichOneof('constraint') != 'endpoint_location': continue + str_endpoint_id = grpc_message_to_json_string(constraint.endpoint_location.endpoint_id) + str_location_id = grpc_message_to_json_string(constraint.endpoint_location.location) + location_endpoints.setdefault(str_location_id, set()).add(str_endpoint_id) + num_endpoints_per_location = {len(endpoints) for endpoints in location_endpoints.values()} + num_disjoint_paths = min(num_endpoints_per_location) + update_constraint_sla_availability(constraints, num_disjoint_paths, all_active) return target def process_list_site_network_access( - context_client : ContextClient, service_client : ServiceClient, slice_client : SliceClient, - request_data : Dict + context_client : ContextClient, slice_client : SliceClient, site_id : str, request_data : Dict ) -> Response: LOGGER.debug('Request: {:s}'.format(str(request_data))) @@ -182,21 +126,14 @@ def process_list_site_network_access( errors = [] for site_network_access in request_data['ietf-l2vpn-svc:site-network-access']: - sna_request = process_site_network_access(context_client, site_network_access) + sna_request = process_site_network_access(context_client, site_id, site_network_access) LOGGER.debug('sna_request = {:s}'.format(grpc_message_to_json_string(sna_request))) try: - if isinstance(sna_request, Service): - sna_reply = service_client.UpdateService(sna_request) - if sna_reply != sna_request.service_id: # pylint: disable=no-member - raise Exception('Service update failed. Wrong Service Id was returned') - elif isinstance(sna_request, Slice): - sna_reply = slice_client.UpdateSlice(sna_request) - if sna_reply != sna_request.slice_id: # pylint: disable=no-member - raise Exception('Slice update failed. Wrong Slice Id was returned') - else: - raise NotImplementedError('Support for Class({:s}) not implemented'.format(str(type(sna_request)))) + sna_reply = slice_client.UpdateSlice(sna_request) + if sna_reply != sna_request.slice_id: # pylint: disable=no-member + raise Exception('Slice update failed. Wrong Slice Id was returned') except Exception as e: # pylint: disable=broad-except - msg = 'Something went wrong Updating Service {:s}' + msg = 'Something went wrong Updating VPN {:s}' LOGGER.exception(msg.format(grpc_message_to_json_string(sna_request))) errors.append({'error': str(e)}) @@ -210,15 +147,13 @@ class L2VPN_SiteNetworkAccesses(Resource): if not request.is_json: raise UnsupportedMediaType('JSON payload is required') LOGGER.debug('Site_Id: {:s}'.format(str(site_id))) context_client = ContextClient() - service_client = ServiceClient() slice_client = SliceClient() - return process_list_site_network_access(context_client, service_client, slice_client, request.json) + return process_list_site_network_access(context_client, slice_client, site_id, request.json) @HTTP_AUTH.login_required def put(self, site_id : str): if not request.is_json: raise UnsupportedMediaType('JSON payload is required') LOGGER.debug('Site_Id: {:s}'.format(str(site_id))) context_client = ContextClient() - service_client = ServiceClient() slice_client = SliceClient() - return process_list_site_network_access(context_client, service_client, slice_client, request.json) + return process_list_site_network_access(context_client, slice_client, site_id, request.json) diff --git a/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/tools/ContextMethods.py b/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/tools/ContextMethods.py deleted file mode 100644 index ac9e6fe4a5c138d00bc80fd953de2cc21d4677b5..0000000000000000000000000000000000000000 --- a/src/compute/service/rest_server/nbi_plugins/ietf_l2vpn/tools/ContextMethods.py +++ /dev/null @@ -1,39 +0,0 @@ -import grpc, logging -from typing import Optional -from common.Constants import DEFAULT_CONTEXT_UUID -from common.proto.context_pb2 import Service, ServiceId, Slice, SliceId -from context.client.ContextClient import ContextClient - -LOGGER = logging.getLogger(__name__) - -def get_service( - context_client : ContextClient, service_uuid : str, context_uuid : str = DEFAULT_CONTEXT_UUID - ) -> Optional[Service]: - try: - # pylint: disable=no-member - service_id = ServiceId() - service_id.context_id.context_uuid.uuid = context_uuid - service_id.service_uuid.uuid = service_uuid - service_readonly = context_client.GetService(service_id) - service = Service() - service.CopyFrom(service_readonly) - return service - except grpc.RpcError: - #LOGGER.exception('Unable to get service({:s} / {:s})'.format(str(context_uuid), str(service_uuid))) - return None - -def get_slice( - context_client : ContextClient, slice_uuid : str, context_uuid : str = DEFAULT_CONTEXT_UUID - ) -> Optional[Slice]: - try: - # pylint: disable=no-member - slice_id = SliceId() - slice_id.context_id.context_uuid.uuid = context_uuid - slice_id.slice_uuid.uuid = slice_uuid - slice_readonly = context_client.GetSlice(slice_id) - slice_ = Slice() - slice_.CopyFrom(slice_readonly) - return slice_ - except grpc.RpcError: - #LOGGER.exception('Unable to get slice({:s} / {:s})'.format(str(context_uuid), str(slice_uuid))) - return None diff --git a/src/compute/tests/Constants.py b/src/compute/tests/Constants.py index 640124b07fd8e5dc0dff0635175b1499544f1b2d..cb1331c7445888070c6c3d5ecef6136f9f149916 100644 --- a/src/compute/tests/Constants.py +++ b/src/compute/tests/Constants.py @@ -82,4 +82,4 @@ SERVICE_CONNECTION_POINTS_2 = [ {'service_endpoint_id': 'ep-3', 'service_endpoint_encapsulation_type': 'dot1q', 'service_endpoint_encapsulation_info': {'vlan': 1234}}, -] +] \ No newline at end of file diff --git a/src/compute/tests/PrepareTestScenario.py b/src/compute/tests/PrepareTestScenario.py index d534a4a28280c80964096a9cb7291c498ebe6b93..06fb34f9ee7508f4bd6fa769da78c50eb78c3bb8 100644 --- a/src/compute/tests/PrepareTestScenario.py +++ b/src/compute/tests/PrepareTestScenario.py @@ -19,7 +19,7 @@ from common.Settings import ( from compute.service.rest_server.RestServer import RestServer from compute.service.rest_server.nbi_plugins.ietf_l2vpn import register_ietf_l2vpn from compute.tests.MockService_Dependencies import MockService_Dependencies -from .mock_osm.MockOSM import MockOSM +from tests.tools.mock_osm.MockOSM import MockOSM from .Constants import WIM_MAPPING, WIM_USERNAME, WIM_PASSWORD LOCAL_HOST = '127.0.0.1' diff --git a/src/compute/tests/test_unitary.py b/src/compute/tests/test_unitary.py index 05c45c1b3554d21084a4a20cac6856b049fe7ca3..acef6d4a68cb1e89df2fa567d437412c8805b35f 100644 --- a/src/compute/tests/test_unitary.py +++ b/src/compute/tests/test_unitary.py @@ -13,7 +13,7 @@ # limitations under the License. import logging -from .mock_osm.MockOSM import MockOSM +from tests.tools.mock_osm.MockOSM import MockOSM from .Constants import SERVICE_CONNECTION_POINTS_1, SERVICE_CONNECTION_POINTS_2, SERVICE_TYPE from .PrepareTestScenario import ( # pylint: disable=unused-import # be careful, order of symbols is important here! diff --git a/src/context/client/ContextClient.py b/src/context/client/ContextClient.py index 6e8cbac6a28c1b24d1999b0d8db1240905b10f2c..f91f36cf5bf73669e4010c8c65d9c4cabd9c6e2e 100644 --- a/src/context/client/ContextClient.py +++ b/src/context/client/ContextClient.py @@ -28,6 +28,8 @@ from common.proto.context_pb2 import ( Slice, SliceEvent, SliceId, SliceIdList, SliceList, Topology, TopologyEvent, TopologyId, TopologyIdList, TopologyList) from common.proto.context_pb2_grpc import ContextServiceStub +from common.proto.context_policy_pb2_grpc import ContextPolicyServiceStub +from common.proto.policy_pb2 import PolicyRuleIdList, PolicyRuleId, PolicyRuleList, PolicyRule LOGGER = logging.getLogger(__name__) MAX_RETRIES = 15 @@ -42,17 +44,20 @@ class ContextClient: LOGGER.debug('Creating channel to {:s}...'.format(str(self.endpoint))) self.channel = None self.stub = None + self.policy_stub = None self.connect() LOGGER.debug('Channel created') def connect(self): self.channel = grpc.insecure_channel(self.endpoint) self.stub = ContextServiceStub(self.channel) + self.policy_stub = ContextPolicyServiceStub(self.channel) def close(self): if self.channel is not None: self.channel.close() self.channel = None self.stub = None + self.policy_stub = None @RETRY_DECORATOR def ListContextIds(self, request: Empty) -> ContextIdList: @@ -250,6 +255,13 @@ class ContextClient: LOGGER.debug('SetService result: {:s}'.format(grpc_message_to_json_string(response))) return response + @RETRY_DECORATOR + def UnsetService(self, request: Service) -> ServiceId: + LOGGER.debug('UnsetService request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.UnsetService(request) + LOGGER.debug('UnsetService result: {:s}'.format(grpc_message_to_json_string(response))) + return response + @RETRY_DECORATOR def RemoveService(self, request: ServiceId) -> Empty: LOGGER.debug('RemoveService request: {:s}'.format(grpc_message_to_json_string(request))) @@ -292,6 +304,13 @@ class ContextClient: LOGGER.debug('SetSlice result: {:s}'.format(grpc_message_to_json_string(response))) return response + @RETRY_DECORATOR + def UnsetSlice(self, request: Slice) -> SliceId: + LOGGER.debug('UnsetSlice request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.stub.UnsetSlice(request) + LOGGER.debug('UnsetSlice result: {:s}'.format(grpc_message_to_json_string(response))) + return response + @RETRY_DECORATOR def RemoveSlice(self, request: SliceId) -> Empty: LOGGER.debug('RemoveSlice request: {:s}'.format(grpc_message_to_json_string(request))) @@ -347,3 +366,38 @@ class ContextClient: response = self.stub.GetConnectionEvents(request) LOGGER.debug('GetConnectionEvents result: {:s}'.format(grpc_message_to_json_string(response))) return response + + @RETRY_DECORATOR + def ListPolicyRuleIds(self, request: Empty) -> PolicyRuleIdList: + LOGGER.debug('ListPolicyRuleIds request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.policy_stub.ListPolicyRuleIds(request) + LOGGER.debug('ListPolicyRuleIds result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def ListPolicyRules(self, request: Empty) -> PolicyRuleList: + LOGGER.debug('ListPolicyRules request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.policy_stub.ListPolicyRules(request) + LOGGER.debug('ListPolicyRules result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def GetPolicyRule(self, request: PolicyRuleId) -> PolicyRule: + LOGGER.info('GetPolicyRule request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.policy_stub.GetPolicyRule(request) + LOGGER.info('GetPolicyRule result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def SetPolicyRule(self, request: PolicyRule) -> PolicyRuleId: + LOGGER.debug('SetPolicyRule request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.policy_stub.SetPolicyRule(request) + LOGGER.debug('SetPolicyRule result: {:s}'.format(grpc_message_to_json_string(response))) + return response + + @RETRY_DECORATOR + def RemovePolicyRule(self, request: PolicyRuleId) -> Empty: + LOGGER.debug('RemovePolicyRule request: {:s}'.format(grpc_message_to_json_string(request))) + response = self.policy_stub.RemovePolicyRule(request) + LOGGER.debug('RemovePolicyRule result: {:s}'.format(grpc_message_to_json_string(response))) + return response diff --git a/src/context/client/EventsCollector.py b/src/context/client/EventsCollector.py index 14a297231f757771beb2c01bc557e5e3de0defb0..f5fc3fbc735c2f62b39223b9ed20aa3730ecd11d 100644 --- a/src/context/client/EventsCollector.py +++ b/src/context/client/EventsCollector.py @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import grpc, logging, queue, threading +from typing import Callable +import grpc, logging, queue, threading, time from common.proto.context_pb2 import Empty from common.tools.grpc.Tools import grpc_message_to_json_string from context.client.ContextClient import ContextClient @@ -20,47 +21,102 @@ from context.client.ContextClient import ContextClient LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) +class _Collector(threading.Thread): + def __init__( + self, subscription_func : Callable, events_queue = queue.Queue, + terminate = threading.Event, log_events_received: bool = False + ) -> None: + super().__init__(daemon=False) + self._subscription_func = subscription_func + self._events_queue = events_queue + self._terminate = terminate + self._log_events_received = log_events_received + self._stream = None + + def cancel(self) -> None: + if self._stream is None: return + self._stream.cancel() + + def run(self) -> None: + while not self._terminate.is_set(): + self._stream = self._subscription_func() + try: + for event in self._stream: + if self._log_events_received: + str_event = grpc_message_to_json_string(event) + LOGGER.info('[_collect] event: {:s}'.format(str_event)) + self._events_queue.put_nowait(event) + except grpc.RpcError as e: + if e.code() == grpc.StatusCode.UNAVAILABLE: + LOGGER.info('[_collect] UNAVAILABLE... retrying...') + time.sleep(0.5) + continue + elif e.code() == grpc.StatusCode.CANCELLED: + break + else: + raise # pragma: no cover + class EventsCollector: def __init__( - self, context_client_grpc : ContextClient, log_events_received=False + self, context_client : ContextClient, + log_events_received : bool = False, + activate_context_collector : bool = True, + activate_topology_collector : bool = True, + activate_device_collector : bool = True, + activate_link_collector : bool = True, + activate_service_collector : bool = True, + activate_slice_collector : bool = True, + activate_connection_collector : bool = True, ) -> None: self._events_queue = queue.Queue() + self._terminate = threading.Event() self._log_events_received = log_events_received - self._context_stream = context_client_grpc.GetContextEvents(Empty()) - self._topology_stream = context_client_grpc.GetTopologyEvents(Empty()) - self._device_stream = context_client_grpc.GetDeviceEvents(Empty()) - self._link_stream = context_client_grpc.GetLinkEvents(Empty()) - self._service_stream = context_client_grpc.GetServiceEvents(Empty()) - self._slice_stream = context_client_grpc.GetSliceEvents(Empty()) - self._connection_stream = context_client_grpc.GetConnectionEvents(Empty()) - - self._context_thread = threading.Thread(target=self._collect, args=(self._context_stream ,), daemon=False) - self._topology_thread = threading.Thread(target=self._collect, args=(self._topology_stream ,), daemon=False) - self._device_thread = threading.Thread(target=self._collect, args=(self._device_stream ,), daemon=False) - self._link_thread = threading.Thread(target=self._collect, args=(self._link_stream ,), daemon=False) - self._service_thread = threading.Thread(target=self._collect, args=(self._service_stream ,), daemon=False) - self._slice_thread = threading.Thread(target=self._collect, args=(self._slice_stream ,), daemon=False) - self._connection_thread = threading.Thread(target=self._collect, args=(self._connection_stream,), daemon=False) - - def _collect(self, events_stream) -> None: - try: - for event in events_stream: - if self._log_events_received: - LOGGER.info('[_collect] event: {:s}'.format(grpc_message_to_json_string(event))) - self._events_queue.put_nowait(event) - except grpc.RpcError as e: - if e.code() != grpc.StatusCode.CANCELLED: # pylint: disable=no-member - raise # pragma: no cover + self._context_thread = _Collector( + lambda: context_client.GetContextEvents(Empty()), + self._events_queue, self._terminate, self._log_events_received + ) if activate_context_collector else None + + self._topology_thread = _Collector( + lambda: context_client.GetTopologyEvents(Empty()), + self._events_queue, self._terminate, self._log_events_received + ) if activate_topology_collector else None + + self._device_thread = _Collector( + lambda: context_client.GetDeviceEvents(Empty()), + self._events_queue, self._terminate, self._log_events_received + ) if activate_device_collector else None + + self._link_thread = _Collector( + lambda: context_client.GetLinkEvents(Empty()), + self._events_queue, self._terminate, self._log_events_received + ) if activate_link_collector else None + + self._service_thread = _Collector( + lambda: context_client.GetServiceEvents(Empty()), + self._events_queue, self._terminate, self._log_events_received + ) if activate_service_collector else None + + self._slice_thread = _Collector( + lambda: context_client.GetSliceEvents(Empty()), + self._events_queue, self._terminate, self._log_events_received + ) if activate_slice_collector else None + + self._connection_thread = _Collector( + lambda: context_client.GetConnectionEvents(Empty()), + self._events_queue, self._terminate, self._log_events_received + ) if activate_connection_collector else None def start(self): - self._context_thread.start() - self._topology_thread.start() - self._device_thread.start() - self._link_thread.start() - self._service_thread.start() - self._slice_thread.start() - self._connection_thread.start() + self._terminate.clear() + + if self._context_thread is not None: self._context_thread.start() + if self._topology_thread is not None: self._topology_thread.start() + if self._device_thread is not None: self._device_thread.start() + if self._link_thread is not None: self._link_thread.start() + if self._service_thread is not None: self._service_thread.start() + if self._slice_thread is not None: self._slice_thread.start() + if self._connection_thread is not None: self._connection_thread.start() def get_event(self, block : bool = True, timeout : float = 0.1): try: @@ -71,30 +127,33 @@ class EventsCollector: def get_events(self, block : bool = True, timeout : float = 0.1, count : int = None): events = [] if count is None: - while True: + while not self._terminate.is_set(): event = self.get_event(block=block, timeout=timeout) if event is None: break events.append(event) else: for _ in range(count): + if self._terminate.is_set(): break event = self.get_event(block=block, timeout=timeout) if event is None: continue events.append(event) return sorted(events, key=lambda e: e.event.timestamp.timestamp) def stop(self): - self._context_stream.cancel() - self._topology_stream.cancel() - self._device_stream.cancel() - self._link_stream.cancel() - self._service_stream.cancel() - self._slice_stream.cancel() - self._connection_stream.cancel() - - self._context_thread.join() - self._topology_thread.join() - self._device_thread.join() - self._link_thread.join() - self._service_thread.join() - self._slice_thread.join() - self._connection_thread.join() + self._terminate.set() + + if self._context_thread is not None: self._context_thread.cancel() + if self._topology_thread is not None: self._topology_thread.cancel() + if self._device_thread is not None: self._device_thread.cancel() + if self._link_thread is not None: self._link_thread.cancel() + if self._service_thread is not None: self._service_thread.cancel() + if self._slice_thread is not None: self._slice_thread.cancel() + if self._connection_thread is not None: self._connection_thread.cancel() + + if self._context_thread is not None: self._context_thread.join() + if self._topology_thread is not None: self._topology_thread.join() + if self._device_thread is not None: self._device_thread.join() + if self._link_thread is not None: self._link_thread.join() + if self._service_thread is not None: self._service_thread.join() + if self._slice_thread is not None: self._slice_thread.join() + if self._connection_thread is not None: self._connection_thread.join() diff --git a/src/context/service/__main__.py b/src/context/service/__main__.py index 53754caf4f9d2621ed8a6fdfd325d42f77f44a4f..dfd0c8773b6a7d2dea7bafa12c12018d62b7cdb8 100644 --- a/src/context/service/__main__.py +++ b/src/context/service/__main__.py @@ -36,7 +36,7 @@ def main(): global LOGGER # pylint: disable=global-statement log_level = get_log_level() - logging.basicConfig(level=log_level) + logging.basicConfig(level=log_level, format="[%(asctime)s] %(levelname)s:%(name)s:%(message)s") LOGGER = logging.getLogger(__name__) signal.signal(signal.SIGINT, signal_handler) diff --git a/src/context/service/database/ConfigModel.py b/src/context/service/database/ConfigModel.py index bb2a37467ce3ad451bd29f824a5092ec1ad43cee..5c6ef0079a03116d4f67519440d93185b94f2969 100644 --- a/src/context/service/database/ConfigModel.py +++ b/src/context/service/database/ConfigModel.py @@ -12,9 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -import functools, logging, operator +import functools, json, logging, operator from enum import Enum -from typing import Dict, List, Optional, Tuple, Union +from typing import Dict, List, Optional, Tuple, Type, Union from common.orm.Database import Database from common.orm.HighLevel import get_object, get_or_create_object, update_or_create_object from common.orm.backend.Tools import key_to_str @@ -24,8 +24,9 @@ from common.orm.fields.IntegerField import IntegerField from common.orm.fields.PrimaryKeyField import PrimaryKeyField from common.orm.fields.StringField import StringField from common.orm.model.Model import Model -from common.proto.context_pb2 import ConfigActionEnum +from common.proto.context_pb2 import ConfigActionEnum, ConfigRule from common.tools.grpc.Tools import grpc_message_to_json_string +#from .EndPointModel import EndPointModel, get_endpoint from .Tools import fast_hasher, grpc_to_enum, remove_dict_key LOGGER = logging.getLogger(__name__) @@ -52,86 +53,176 @@ class ConfigModel(Model): # pylint: disable=abstract-method config_rules = sorted(config_rules, key=operator.itemgetter('position')) return [remove_dict_key(config_rule, 'position') for config_rule in config_rules] +class ConfigRuleCustomModel(Model): # pylint: disable=abstract-method + key = StringField(required=True, allow_empty=False) + value = StringField(required=True, allow_empty=False) + + def dump(self) -> Dict: # pylint: disable=arguments-differ + return {'custom': {'resource_key': self.key, 'resource_value': self.value}} + +class ConfigRuleAclModel(Model): # pylint: disable=abstract-method + # TODO: improve definition of fields in ConfigRuleAclModel + # To simplify, endpoint encoded as JSON-string directly; otherwise causes circular dependencies + #endpoint_fk = ForeignKeyField(EndPointModel) + endpoint_id = StringField(required=True, allow_empty=False) + # To simplify, ACL rule is encoded as a JSON-string directly + acl_data = StringField(required=True, allow_empty=False) + + def dump(self) -> Dict: # pylint: disable=arguments-differ + #json_endpoint_id = EndPointModel(self.database, self.endpoint_fk).dump_id() + json_endpoint_id = json.loads(self.endpoint_id) + json_acl_rule_set = json.loads(self.acl_data) + return {'acl': {'endpoint_id': json_endpoint_id, 'rule_set': json_acl_rule_set}} + +# enum values should match name of field in ConfigRuleModel +class ConfigRuleKindEnum(Enum): + CUSTOM = 'custom' + ACL = 'acl' + +Union_SpecificConfigRule = Union[ + ConfigRuleCustomModel, ConfigRuleAclModel +] + class ConfigRuleModel(Model): # pylint: disable=abstract-method pk = PrimaryKeyField() config_fk = ForeignKeyField(ConfigModel) + kind = EnumeratedField(ConfigRuleKindEnum) position = IntegerField(min_value=0, required=True) action = EnumeratedField(ORM_ConfigActionEnum, required=True) - key = StringField(required=True, allow_empty=False) - value = StringField(required=True, allow_empty=False) + config_rule_custom_fk = ForeignKeyField(ConfigRuleCustomModel, required=False) + config_rule_acl_fk = ForeignKeyField(ConfigRuleAclModel, required=False) + + def delete(self) -> None: + field_name = 'config_rule_{:s}_fk'.format(str(self.kind.value)) + specific_fk_value : Optional[ForeignKeyField] = getattr(self, field_name, None) + if specific_fk_value is None: + raise Exception('Unable to find config_rule key for field_name({:s})'.format(field_name)) + specific_fk_class = getattr(ConfigRuleModel, field_name, None) + foreign_model_class : Model = specific_fk_class.foreign_model + super().delete() + get_object(self.database, foreign_model_class, str(specific_fk_value)).delete() def dump(self, include_position=True) -> Dict: # pylint: disable=arguments-differ - result = { - 'action': self.action.value, - 'custom': { - 'resource_key': self.key, - 'resource_value': self.value, - }, - } + field_name = 'config_rule_{:s}_fk'.format(str(self.kind.value)) + specific_fk_value : Optional[ForeignKeyField] = getattr(self, field_name, None) + if specific_fk_value is None: + raise Exception('Unable to find config_rule key for field_name({:s})'.format(field_name)) + specific_fk_class = getattr(ConfigRuleModel, field_name, None) + foreign_model_class : Model = specific_fk_class.foreign_model + config_rule : Union_SpecificConfigRule = get_object(self.database, foreign_model_class, str(specific_fk_value)) + result = config_rule.dump() + result['action'] = self.action.value if include_position: result['position'] = self.position return result +Tuple_ConfigRuleSpecs = Tuple[Type, str, Dict, ConfigRuleKindEnum] + +def parse_config_rule_custom(database : Database, grpc_config_rule) -> Tuple_ConfigRuleSpecs: + config_rule_class = ConfigRuleCustomModel + str_config_rule_id = grpc_config_rule.custom.resource_key + config_rule_data = { + 'key' : grpc_config_rule.custom.resource_key, + 'value': grpc_config_rule.custom.resource_value, + } + return config_rule_class, str_config_rule_id, config_rule_data, ConfigRuleKindEnum.CUSTOM + +def parse_config_rule_acl(database : Database, grpc_config_rule) -> Tuple_ConfigRuleSpecs: + config_rule_class = ConfigRuleAclModel + grpc_endpoint_id = grpc_config_rule.acl.endpoint_id + grpc_rule_set = grpc_config_rule.acl.rule_set + device_uuid = grpc_endpoint_id.device_id.device_uuid.uuid + endpoint_uuid = grpc_endpoint_id.endpoint_uuid.uuid + str_endpoint_key = '/'.join([device_uuid, endpoint_uuid]) + #str_endpoint_key, db_endpoint = get_endpoint(database, grpc_endpoint_id) + str_config_rule_id = ':'.join([str_endpoint_key, grpc_rule_set.name]) + config_rule_data = { + #'endpoint_fk': db_endpoint, + 'endpoint_id': grpc_message_to_json_string(grpc_endpoint_id), + 'acl_data': grpc_message_to_json_string(grpc_rule_set), + } + return config_rule_class, str_config_rule_id, config_rule_data, ConfigRuleKindEnum.ACL + +CONFIGRULE_PARSERS = { + 'custom': parse_config_rule_custom, + 'acl' : parse_config_rule_acl, +} + +Union_ConfigRuleModel = Union[ + ConfigRuleCustomModel, ConfigRuleAclModel, +] + def set_config_rule( - database : Database, db_config : ConfigModel, position : int, resource_key : str, resource_value : str -) -> Tuple[ConfigRuleModel, bool]: - - str_rule_key_hash = fast_hasher(resource_key) - str_config_rule_key = key_to_str([db_config.pk, str_rule_key_hash], separator=':') - result : Tuple[ConfigRuleModel, bool] = update_or_create_object(database, ConfigRuleModel, str_config_rule_key, { - 'config_fk': db_config, 'position': position, 'action': ORM_ConfigActionEnum.SET, - 'key': resource_key, 'value': resource_value}) + database : Database, db_config : ConfigModel, grpc_config_rule : ConfigRule, position : int +) -> Tuple[Union_ConfigRuleModel, bool]: + grpc_config_rule_kind = str(grpc_config_rule.WhichOneof('config_rule')) + parser = CONFIGRULE_PARSERS.get(grpc_config_rule_kind) + if parser is None: + raise NotImplementedError('ConfigRule of kind {:s} is not implemented: {:s}'.format( + grpc_config_rule_kind, grpc_message_to_json_string(grpc_config_rule))) + + # create specific ConfigRule + config_rule_class, str_config_rule_id, config_rule_data, config_rule_kind = parser(database, grpc_config_rule) + str_config_rule_key_hash = fast_hasher(':'.join([config_rule_kind.value, str_config_rule_id])) + str_config_rule_key = key_to_str([db_config.pk, str_config_rule_key_hash], separator=':') + result : Tuple[Union_ConfigRuleModel, bool] = update_or_create_object( + database, config_rule_class, str_config_rule_key, config_rule_data) + db_specific_config_rule, updated = result + + # create generic ConfigRule + config_rule_fk_field_name = 'config_rule_{:s}_fk'.format(config_rule_kind.value) + config_rule_data = { + 'config_fk': db_config, 'kind': config_rule_kind, 'position': position, + 'action': ORM_ConfigActionEnum.SET, + config_rule_fk_field_name: db_specific_config_rule + } + result : Tuple[ConfigRuleModel, bool] = update_or_create_object( + database, ConfigRuleModel, str_config_rule_key, config_rule_data) db_config_rule, updated = result + return db_config_rule, updated def delete_config_rule( - database : Database, db_config : ConfigModel, resource_key : str + database : Database, db_config : ConfigModel, grpc_config_rule : ConfigRule ) -> None: - - str_rule_key_hash = fast_hasher(resource_key) - str_config_rule_key = key_to_str([db_config.pk, str_rule_key_hash], separator=':') + grpc_config_rule_kind = str(grpc_config_rule.WhichOneof('config_rule')) + parser = CONFIGRULE_PARSERS.get(grpc_config_rule_kind) + if parser is None: + raise NotImplementedError('ConfigRule of kind {:s} is not implemented: {:s}'.format( + grpc_config_rule_kind, grpc_message_to_json_string(grpc_config_rule))) + + # delete generic config rules; self deletes specific config rule + _, str_config_rule_id, _, config_rule_kind = parser(database, grpc_config_rule) + str_config_rule_key_hash = fast_hasher(':'.join([config_rule_kind.value, str_config_rule_id])) + str_config_rule_key = key_to_str([db_config.pk, str_config_rule_key_hash], separator=':') db_config_rule : Optional[ConfigRuleModel] = get_object( database, ConfigRuleModel, str_config_rule_key, raise_if_not_found=False) if db_config_rule is None: return db_config_rule.delete() -def delete_all_config_rules( - database : Database, db_config : ConfigModel -) -> None: - - db_config_rule_pks = db_config.references(ConfigRuleModel) - for pk,_ in db_config_rule_pks: ConfigRuleModel(database, pk).delete() - -def grpc_config_rules_to_raw(grpc_config_rules) -> List[Tuple[ORM_ConfigActionEnum, str, str]]: - def translate(grpc_config_rule): - action = grpc_to_enum__config_action(grpc_config_rule.action) - config_rule_type = str(grpc_config_rule.WhichOneof('config_rule')) - if config_rule_type != 'custom': - raise NotImplementedError('ConfigRule of type {:s} is not implemented: {:s}'.format( - config_rule_type, grpc_message_to_json_string(grpc_config_rule))) - return action, grpc_config_rule.custom.resource_key, grpc_config_rule.custom.resource_value - return [translate(grpc_config_rule) for grpc_config_rule in grpc_config_rules] - def update_config( - database : Database, db_parent_pk : str, config_name : str, - raw_config_rules : List[Tuple[ORM_ConfigActionEnum, str, str]] + database : Database, db_parent_pk : str, config_name : str, grpc_config_rules ) -> List[Tuple[Union[ConfigModel, ConfigRuleModel], bool]]: - str_config_key = key_to_str([db_parent_pk, config_name], separator=':') + str_config_key = key_to_str([config_name, db_parent_pk], separator=':') result : Tuple[ConfigModel, bool] = get_or_create_object(database, ConfigModel, str_config_key) db_config, created = result - db_objects : List[Tuple[Union[ConfigModel, ConfigRuleModel], bool]] = [(db_config, created)] + db_objects = [(db_config, created)] + + for position,grpc_config_rule in enumerate(grpc_config_rules): + action = grpc_to_enum__config_action(grpc_config_rule.action) - for position,(action, resource_key, resource_value) in enumerate(raw_config_rules): if action == ORM_ConfigActionEnum.SET: result : Tuple[ConfigRuleModel, bool] = set_config_rule( - database, db_config, position, resource_key, resource_value) + database, db_config, grpc_config_rule, position) db_config_rule, updated = result db_objects.append((db_config_rule, updated)) elif action == ORM_ConfigActionEnum.DELETE: - delete_config_rule(database, db_config, resource_key) + delete_config_rule(database, db_config, grpc_config_rule) else: - msg = 'Unsupported action({:s}) for resource_key({:s})/resource_value({:s})' - raise AttributeError(msg.format(str(ConfigActionEnum.Name(action)), str(resource_key), str(resource_value))) + msg = 'Unsupported Action({:s}) for ConfigRule({:s})' + str_action = str(ConfigActionEnum.Name(action)) + str_config_rule = grpc_message_to_json_string(grpc_config_rule) + raise AttributeError(msg.format(str_action, str_config_rule)) return db_objects diff --git a/src/context/service/database/ConstraintModel.py b/src/context/service/database/ConstraintModel.py index a35ec250d8a62a8a2534e9f27ddecac801db6eff..449dcedeeaf10686ece58607d3a5fa4f4bf6a070 100644 --- a/src/context/service/database/ConstraintModel.py +++ b/src/context/service/database/ConstraintModel.py @@ -54,24 +54,13 @@ class ConstraintCustomModel(Model): # pylint: disable=abstract-method def dump(self) -> Dict: # pylint: disable=arguments-differ return {'custom': {'constraint_type': self.constraint_type, 'constraint_value': self.constraint_value}} -Union_ConstraintEndpoint = Union[ - 'ConstraintEndpointLocationGpsPositionModel', 'ConstraintEndpointLocationRegionModel', - 'ConstraintEndpointPriorityModel' -] -def dump_endpoint_id(endpoint_constraint : Union_ConstraintEndpoint): - db_endpoints_pks = list(endpoint_constraint.references(EndPointModel)) - num_endpoints = len(db_endpoints_pks) - if num_endpoints != 1: - raise Exception('Wrong number({:d}) of associated Endpoints with constraint'.format(num_endpoints)) - db_endpoint = EndPointModel(endpoint_constraint.database, db_endpoints_pks[0]) - return db_endpoint.dump_id() - class ConstraintEndpointLocationRegionModel(Model): # pylint: disable=abstract-method endpoint_fk = ForeignKeyField(EndPointModel) region = StringField(required=True, allow_empty=False) def dump(self) -> Dict: # pylint: disable=arguments-differ - return {'endpoint_location': {'endpoint_id': dump_endpoint_id(self), 'region': self.region}} + json_endpoint_id = EndPointModel(self.database, self.endpoint_fk).dump_id() + return {'endpoint_location': {'endpoint_id': json_endpoint_id, 'location': {'region': self.region}}} class ConstraintEndpointLocationGpsPositionModel(Model): # pylint: disable=abstract-method endpoint_fk = ForeignKeyField(EndPointModel) @@ -80,14 +69,16 @@ class ConstraintEndpointLocationGpsPositionModel(Model): # pylint: disable=abstr def dump(self) -> Dict: # pylint: disable=arguments-differ gps_position = {'latitude': self.latitude, 'longitude': self.longitude} - return {'endpoint_location': {'endpoint_id': dump_endpoint_id(self), 'gps_position': gps_position}} + json_endpoint_id = EndPointModel(self.database, self.endpoint_fk).dump_id() + return {'endpoint_location': {'endpoint_id': json_endpoint_id, 'location': {'gps_position': gps_position}}} class ConstraintEndpointPriorityModel(Model): # pylint: disable=abstract-method endpoint_fk = ForeignKeyField(EndPointModel) - priority = FloatField(required=True) + priority = IntegerField(required=True, min_value=0) def dump(self) -> Dict: # pylint: disable=arguments-differ - return {'endpoint_priority': {'endpoint_id': dump_endpoint_id(self), 'priority': self.priority}} + json_endpoint_id = EndPointModel(self.database, self.endpoint_fk).dump_id() + return {'endpoint_priority': {'endpoint_id': json_endpoint_id, 'priority': self.priority}} class ConstraintSlaAvailabilityModel(Model): # pylint: disable=abstract-method num_disjoint_paths = IntegerField(required=True, min_value=1) @@ -240,7 +231,7 @@ def set_constraints( database : Database, db_parent_pk : str, constraints_name : str, grpc_constraints ) -> List[Tuple[Union[ConstraintsModel, ConstraintModel], bool]]: - str_constraints_key = key_to_str([db_parent_pk, constraints_name], separator=':') + str_constraints_key = key_to_str([constraints_name, db_parent_pk], separator=':') result : Tuple[ConstraintsModel, bool] = get_or_create_object(database, ConstraintsModel, str_constraints_key) db_constraints, created = result diff --git a/src/context/service/database/DeviceModel.py b/src/context/service/database/DeviceModel.py index 0d42326793b44473d8aef3da2c3e9ce8464bd1c4..0ffb97fee51da62802a1f7eb730380ba7a89dc0f 100644 --- a/src/context/service/database/DeviceModel.py +++ b/src/context/service/database/DeviceModel.py @@ -35,6 +35,7 @@ class ORM_DeviceDriverEnum(Enum): P4 = DeviceDriverEnum.DEVICEDRIVER_P4 IETF_NETWORK_TOPOLOGY = DeviceDriverEnum.DEVICEDRIVER_IETF_NETWORK_TOPOLOGY ONF_TR_352 = DeviceDriverEnum.DEVICEDRIVER_ONF_TR_352 + XR = DeviceDriverEnum.DEVICEDRIVER_XR grpc_to_enum__device_driver = functools.partial( grpc_to_enum, DeviceDriverEnum, ORM_DeviceDriverEnum) diff --git a/src/service/service/database/LinkModel.py b/src/context/service/database/PolicyRuleModel.py similarity index 55% rename from src/service/service/database/LinkModel.py rename to src/context/service/database/PolicyRuleModel.py index 742044b9758df297413ad2d0318520c825e8b738..7c84ea940482091a5667b2f11272748c7b444b6f 100644 --- a/src/service/service/database/LinkModel.py +++ b/src/context/service/database/PolicyRuleModel.py @@ -12,29 +12,21 @@ # See the License for the specific language governing permissions and # limitations under the License. -import logging, operator -from typing import Dict, List +import logging +import json +from typing import Dict from common.orm.fields.PrimaryKeyField import PrimaryKeyField from common.orm.fields.StringField import StringField from common.orm.model.Model import Model -from common.orm.HighLevel import get_related_objects LOGGER = logging.getLogger(__name__) -class LinkModel(Model): +class PolicyRuleModel(Model): pk = PrimaryKeyField() - link_uuid = StringField(required=True, allow_empty=False) + value = StringField(required=True, allow_empty=False) def dump_id(self) -> Dict: - return {'link_uuid': {'uuid': self.link_uuid}} - - def dump_endpoint_ids(self) -> List[Dict]: - from .RelationModels import LinkEndPointModel # pylint: disable=import-outside-toplevel - db_endpoints = get_related_objects(self, LinkEndPointModel, 'endpoint_fk') - return [db_endpoint.dump_id() for db_endpoint in sorted(db_endpoints, key=operator.attrgetter('pk'))] + return {'uuid': {'uuid': self.pk}} def dump(self) -> Dict: - return { - 'link_id': self.dump_id(), - 'link_endpoint_ids': self.dump_endpoint_ids(), - } + return json.loads(self.value) diff --git a/src/context/service/database/SliceModel.py b/src/context/service/database/SliceModel.py index bc00ada43758c9c5ffefbb88a87134aa46fbd73a..74bb60b401f656fdcfec8b0466019f87a8f1b41e 100644 --- a/src/context/service/database/SliceModel.py +++ b/src/context/service/database/SliceModel.py @@ -46,6 +46,8 @@ class SliceModel(Model): slice_constraints_fk = ForeignKeyField(ConstraintsModel) slice_status = EnumeratedField(ORM_SliceStatusEnum, required=True) slice_config_fk = ForeignKeyField(ConfigModel) + slice_owner_uuid = StringField(required=False, allow_empty=True) + slice_owner_string = StringField(required=False, allow_empty=True) def delete(self) -> None: # pylint: disable=import-outside-toplevel @@ -91,7 +93,11 @@ class SliceModel(Model): def dump_subslice_ids(self) -> List[Dict]: from .RelationModels import SliceSubSliceModel # pylint: disable=import-outside-toplevel db_subslices = get_related_objects(self, SliceSubSliceModel, 'sub_slice_fk') - return [db_subslice.dump_id() for db_subslice in sorted(db_subslices, key=operator.attrgetter('pk'))] + return [ + db_subslice.dump_id() + for db_subslice in sorted(db_subslices, key=operator.attrgetter('pk')) + if db_subslice.pk != self.pk # if I'm subslice of other slice, I will appear as subslice of myself + ] def dump( # pylint: disable=arguments-differ self, include_endpoint_ids=True, include_constraints=True, include_config_rules=True, @@ -106,4 +112,11 @@ class SliceModel(Model): if include_config_rules: result.setdefault('slice_config', {})['config_rules'] = self.dump_config() if include_service_ids: result['slice_service_ids'] = self.dump_service_ids() if include_subslice_ids: result['slice_subslice_ids'] = self.dump_subslice_ids() + + if len(self.slice_owner_uuid) > 0: + result.setdefault('slice_owner', {}).setdefault('owner_uuid', {})['uuid'] = self.slice_owner_uuid + + if len(self.slice_owner_string) > 0: + result.setdefault('slice_owner', {})['owner_string'] = self.slice_owner_string + return result diff --git a/src/context/service/grpc_server/ContextService.py b/src/context/service/grpc_server/ContextService.py index 1b54ec5400c93cba3882dccb197479b75bb699af..5d4dd8bb991ed64a970f9815bb302fd33d51cf34 100644 --- a/src/context/service/grpc_server/ContextService.py +++ b/src/context/service/grpc_server/ContextService.py @@ -17,6 +17,7 @@ from common.Settings import get_service_port_grpc from common.message_broker.MessageBroker import MessageBroker from common.orm.Database import Database from common.proto.context_pb2_grpc import add_ContextServiceServicer_to_server +from common.proto.context_policy_pb2_grpc import add_ContextPolicyServiceServicer_to_server from common.tools.service.GenericGrpcService import GenericGrpcService from .ContextServiceServicerImpl import ContextServiceServicerImpl @@ -31,3 +32,4 @@ class ContextService(GenericGrpcService): def install_servicers(self): add_ContextServiceServicer_to_server(self.context_servicer, self.server) + add_ContextPolicyServiceServicer_to_server(self.context_servicer, self.server) diff --git a/src/context/service/grpc_server/ContextServiceServicerImpl.py b/src/context/service/grpc_server/ContextServiceServicerImpl.py index 4c8f957ecb70765cbd36032fca7bfacc27f9b5ae..b7130c7000663791b162bc15d5046d80ed71463d 100644 --- a/src/context/service/grpc_server/ContextServiceServicerImpl.py +++ b/src/context/service/grpc_server/ContextServiceServicerImpl.py @@ -15,6 +15,8 @@ import grpc, json, logging, operator, threading from typing import Iterator, List, Set, Tuple from common.message_broker.MessageBroker import MessageBroker +from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method +from common.method_wrappers.ServiceExceptions import InvalidArgumentException from common.orm.Database import Database from common.orm.HighLevel import ( get_all_objects, get_object, get_or_create_object, get_related_objects, update_or_create_object) @@ -28,13 +30,15 @@ from common.proto.context_pb2 import ( Service, ServiceEvent, ServiceId, ServiceIdList, ServiceList, Slice, SliceEvent, SliceId, SliceIdList, SliceList, Topology, TopologyEvent, TopologyId, TopologyIdList, TopologyList) +from common.proto.policy_pb2 import (PolicyRuleIdList, PolicyRuleId, PolicyRuleList, PolicyRule) from common.proto.context_pb2_grpc import ContextServiceServicer -from common.rpc_method_wrapper.Decorator import create_metrics, safe_and_metered_rpc_method -from common.rpc_method_wrapper.ServiceExceptions import InvalidArgumentException -from context.service.database.ConfigModel import grpc_config_rules_to_raw, update_config +from common.proto.context_policy_pb2_grpc import ContextPolicyServiceServicer +from common.tools.grpc.Tools import grpc_message_to_json +from context.service.database.ConfigModel import update_config from context.service.database.ConnectionModel import ConnectionModel, set_path from context.service.database.ConstraintModel import set_constraints from context.service.database.ContextModel import ContextModel +from context.service.database.PolicyRuleModel import PolicyRuleModel from context.service.database.DeviceModel import DeviceModel, grpc_to_enum__device_operational_status, set_drivers from context.service.database.EndPointModel import EndPointModel, set_kpi_sample_types from context.service.database.Events import notify_event @@ -52,19 +56,9 @@ from .Constants import ( LOGGER = logging.getLogger(__name__) -SERVICE_NAME = 'Context' -METHOD_NAMES = [ - 'ListConnectionIds', 'ListConnections', 'GetConnection', 'SetConnection', 'RemoveConnection', 'GetConnectionEvents', - 'ListContextIds', 'ListContexts', 'GetContext', 'SetContext', 'RemoveContext', 'GetContextEvents', - 'ListTopologyIds', 'ListTopologies', 'GetTopology', 'SetTopology', 'RemoveTopology', 'GetTopologyEvents', - 'ListDeviceIds', 'ListDevices', 'GetDevice', 'SetDevice', 'RemoveDevice', 'GetDeviceEvents', - 'ListLinkIds', 'ListLinks', 'GetLink', 'SetLink', 'RemoveLink', 'GetLinkEvents', - 'ListServiceIds', 'ListServices', 'GetService', 'SetService', 'RemoveService', 'GetServiceEvents', - 'ListSliceIds', 'ListSlices', 'GetSlice', 'SetSlice', 'RemoveSlice', 'GetSliceEvents', -] -METRICS = create_metrics(SERVICE_NAME, METHOD_NAMES) - -class ContextServiceServicerImpl(ContextServiceServicer): +METRICS_POOL = MetricsPool('Context', 'RPC') + +class ContextServiceServicerImpl(ContextServiceServicer, ContextPolicyServiceServicer): def __init__(self, database : Database, messagebroker : MessageBroker): LOGGER.debug('Creating Servicer...') self.lock = threading.Lock() @@ -75,28 +69,28 @@ class ContextServiceServicerImpl(ContextServiceServicer): # ----- Context ---------------------------------------------------------------------------------------------------- - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListContextIds(self, request: Empty, context : grpc.ServicerContext) -> ContextIdList: with self.lock: db_contexts : List[ContextModel] = get_all_objects(self.database, ContextModel) db_contexts = sorted(db_contexts, key=operator.attrgetter('pk')) return ContextIdList(context_ids=[db_context.dump_id() for db_context in db_contexts]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListContexts(self, request: Empty, context : grpc.ServicerContext) -> ContextList: with self.lock: db_contexts : List[ContextModel] = get_all_objects(self.database, ContextModel) db_contexts = sorted(db_contexts, key=operator.attrgetter('pk')) return ContextList(contexts=[db_context.dump() for db_context in db_contexts]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetContext(self, request: ContextId, context : grpc.ServicerContext) -> Context: with self.lock: context_uuid = request.context_uuid.uuid db_context : ContextModel = get_object(self.database, ContextModel, context_uuid) return Context(**db_context.dump(include_services=True, include_topologies=True)) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def SetContext(self, request: Context, context : grpc.ServicerContext) -> ContextId: with self.lock: context_uuid = request.context_id.context_uuid.uuid @@ -134,7 +128,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_CONTEXT, event_type, {'context_id': dict_context_id}) return ContextId(**dict_context_id) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def RemoveContext(self, request: ContextId, context : grpc.ServicerContext) -> Empty: with self.lock: context_uuid = request.context_uuid.uuid @@ -148,7 +142,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_CONTEXT, event_type, {'context_id': dict_context_id}) return Empty() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetContextEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[ContextEvent]: for message in self.messagebroker.consume({TOPIC_CONTEXT}, consume_timeout=CONSUME_TIMEOUT): yield ContextEvent(**json.loads(message.content)) @@ -156,7 +150,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): # ----- Topology --------------------------------------------------------------------------------------------------- - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListTopologyIds(self, request: ContextId, context : grpc.ServicerContext) -> TopologyIdList: with self.lock: context_uuid = request.context_uuid.uuid @@ -165,7 +159,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): db_topologies = sorted(db_topologies, key=operator.attrgetter('pk')) return TopologyIdList(topology_ids=[db_topology.dump_id() for db_topology in db_topologies]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListTopologies(self, request: ContextId, context : grpc.ServicerContext) -> TopologyList: with self.lock: context_uuid = request.context_uuid.uuid @@ -174,14 +168,14 @@ class ContextServiceServicerImpl(ContextServiceServicer): db_topologies = sorted(db_topologies, key=operator.attrgetter('pk')) return TopologyList(topologies=[db_topology.dump() for db_topology in db_topologies]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetTopology(self, request: TopologyId, context : grpc.ServicerContext) -> Topology: with self.lock: str_key = key_to_str([request.context_id.context_uuid.uuid, request.topology_uuid.uuid]) db_topology : TopologyModel = get_object(self.database, TopologyModel, str_key) return Topology(**db_topology.dump(include_devices=True, include_links=True)) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def SetTopology(self, request: Topology, context : grpc.ServicerContext) -> TopologyId: with self.lock: context_uuid = request.topology_id.context_id.context_uuid.uuid @@ -218,7 +212,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_TOPOLOGY, event_type, {'topology_id': dict_topology_id}) return TopologyId(**dict_topology_id) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def RemoveTopology(self, request: TopologyId, context : grpc.ServicerContext) -> Empty: with self.lock: context_uuid = request.context_id.context_uuid.uuid @@ -233,7 +227,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_TOPOLOGY, event_type, {'topology_id': dict_topology_id}) return Empty() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetTopologyEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[TopologyEvent]: for message in self.messagebroker.consume({TOPIC_TOPOLOGY}, consume_timeout=CONSUME_TIMEOUT): yield TopologyEvent(**json.loads(message.content)) @@ -241,21 +235,21 @@ class ContextServiceServicerImpl(ContextServiceServicer): # ----- Device ----------------------------------------------------------------------------------------------------- - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListDeviceIds(self, request: Empty, context : grpc.ServicerContext) -> DeviceIdList: with self.lock: db_devices : List[DeviceModel] = get_all_objects(self.database, DeviceModel) db_devices = sorted(db_devices, key=operator.attrgetter('pk')) return DeviceIdList(device_ids=[db_device.dump_id() for db_device in db_devices]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListDevices(self, request: Empty, context : grpc.ServicerContext) -> DeviceList: with self.lock: db_devices : List[DeviceModel] = get_all_objects(self.database, DeviceModel) db_devices = sorted(db_devices, key=operator.attrgetter('pk')) return DeviceList(devices=[db_device.dump() for db_device in db_devices]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetDevice(self, request: DeviceId, context : grpc.ServicerContext) -> Device: with self.lock: device_uuid = request.device_uuid.uuid @@ -263,7 +257,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): return Device(**db_device.dump( include_config_rules=True, include_drivers=True, include_endpoints=True)) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def SetDevice(self, request: Device, context : grpc.ServicerContext) -> DeviceId: with self.lock: device_uuid = request.device_id.device_uuid.uuid @@ -276,9 +270,9 @@ class ContextServiceServicerImpl(ContextServiceServicer): 'request.device_endpoints[{:d}].device_id.device_uuid.uuid'.format(i), endpoint_device_uuid, ['should be == {:s}({:s})'.format('request.device_id.device_uuid.uuid', device_uuid)]) - config_rules = grpc_config_rules_to_raw(request.device_config.config_rules) - running_config_result = update_config(self.database, device_uuid, 'running', config_rules) - db_running_config = running_config_result[0][0] + running_config_rules = update_config( + self.database, device_uuid, 'device', request.device_config.config_rules) + db_running_config = running_config_rules[0][0] result : Tuple[DeviceModel, bool] = update_or_create_object(self.database, DeviceModel, device_uuid, { 'device_uuid' : device_uuid, @@ -319,7 +313,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): result : Tuple[EndPointModel, bool] = update_or_create_object( self.database, EndPointModel, str_endpoint_key, endpoint_attributes) - db_endpoint, endpoint_updated = result + db_endpoint, endpoint_updated = result # pylint: disable=unused-variable set_kpi_sample_types(self.database, db_endpoint, endpoint.kpi_sample_types) @@ -328,7 +322,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_DEVICE, event_type, {'device_id': dict_device_id}) return DeviceId(**dict_device_id) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def RemoveDevice(self, request: DeviceId, context : grpc.ServicerContext) -> Empty: with self.lock: device_uuid = request.device_uuid.uuid @@ -343,7 +337,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_DEVICE, event_type, {'device_id': dict_device_id}) return Empty() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetDeviceEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[DeviceEvent]: for message in self.messagebroker.consume({TOPIC_DEVICE}, consume_timeout=CONSUME_TIMEOUT): yield DeviceEvent(**json.loads(message.content)) @@ -351,28 +345,28 @@ class ContextServiceServicerImpl(ContextServiceServicer): # ----- Link ------------------------------------------------------------------------------------------------------- - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListLinkIds(self, request: Empty, context : grpc.ServicerContext) -> LinkIdList: with self.lock: db_links : List[LinkModel] = get_all_objects(self.database, LinkModel) db_links = sorted(db_links, key=operator.attrgetter('pk')) return LinkIdList(link_ids=[db_link.dump_id() for db_link in db_links]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListLinks(self, request: Empty, context : grpc.ServicerContext) -> LinkList: with self.lock: db_links : List[LinkModel] = get_all_objects(self.database, LinkModel) db_links = sorted(db_links, key=operator.attrgetter('pk')) return LinkList(links=[db_link.dump() for db_link in db_links]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetLink(self, request: LinkId, context : grpc.ServicerContext) -> Link: with self.lock: link_uuid = request.link_uuid.uuid db_link : LinkModel = get_object(self.database, LinkModel, link_uuid) return Link(**db_link.dump()) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def SetLink(self, request: Link, context : grpc.ServicerContext) -> LinkId: with self.lock: link_uuid = request.link_id.link_uuid.uuid @@ -417,7 +411,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_LINK, event_type, {'link_id': dict_link_id}) return LinkId(**dict_link_id) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def RemoveLink(self, request: LinkId, context : grpc.ServicerContext) -> Empty: with self.lock: link_uuid = request.link_uuid.uuid @@ -432,7 +426,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_LINK, event_type, {'link_id': dict_link_id}) return Empty() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetLinkEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[LinkEvent]: for message in self.messagebroker.consume({TOPIC_LINK}, consume_timeout=CONSUME_TIMEOUT): yield LinkEvent(**json.loads(message.content)) @@ -440,7 +434,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): # ----- Service ---------------------------------------------------------------------------------------------------- - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListServiceIds(self, request: ContextId, context : grpc.ServicerContext) -> ServiceIdList: with self.lock: db_context : ContextModel = get_object(self.database, ContextModel, request.context_uuid.uuid) @@ -448,7 +442,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): db_services = sorted(db_services, key=operator.attrgetter('pk')) return ServiceIdList(service_ids=[db_service.dump_id() for db_service in db_services]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListServices(self, request: ContextId, context : grpc.ServicerContext) -> ServiceList: with self.lock: db_context : ContextModel = get_object(self.database, ContextModel, request.context_uuid.uuid) @@ -456,7 +450,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): db_services = sorted(db_services, key=operator.attrgetter('pk')) return ServiceList(services=[db_service.dump() for db_service in db_services]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetService(self, request: ServiceId, context : grpc.ServicerContext) -> Service: with self.lock: str_key = key_to_str([request.context_id.context_uuid.uuid, request.service_uuid.uuid]) @@ -464,7 +458,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): return Service(**db_service.dump( include_endpoint_ids=True, include_constraints=True, include_config_rules=True)) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def SetService(self, request: Service, context : grpc.ServicerContext) -> ServiceId: with self.lock: context_uuid = request.service_id.context_id.context_uuid.uuid @@ -483,12 +477,12 @@ class ContextServiceServicerImpl(ContextServiceServicer): str_service_key = key_to_str([context_uuid, service_uuid]) constraints_result = set_constraints( - self.database, str_service_key, 'constraints', request.service_constraints) + self.database, str_service_key, 'service', request.service_constraints) db_constraints = constraints_result[0][0] - config_rules = grpc_config_rules_to_raw(request.service_config.config_rules) - running_config_result = update_config(self.database, str_service_key, 'running', config_rules) - db_running_config = running_config_result[0][0] + running_config_rules = update_config( + self.database, str_service_key, 'service', request.service_config.config_rules) + db_running_config = running_config_rules[0][0] result : Tuple[ServiceModel, bool] = update_or_create_object(self.database, ServiceModel, str_service_key, { 'context_fk' : db_context, @@ -524,7 +518,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_SERVICE, event_type, {'service_id': dict_service_id}) return ServiceId(**dict_service_id) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def RemoveService(self, request: ServiceId, context : grpc.ServicerContext) -> Empty: with self.lock: context_uuid = request.context_id.context_uuid.uuid @@ -540,7 +534,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_SERVICE, event_type, {'service_id': dict_service_id}) return Empty() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetServiceEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[ServiceEvent]: for message in self.messagebroker.consume({TOPIC_SERVICE}, consume_timeout=CONSUME_TIMEOUT): yield ServiceEvent(**json.loads(message.content)) @@ -548,7 +542,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): # ----- Slice ---------------------------------------------------------------------------------------------------- - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListSliceIds(self, request: ContextId, context : grpc.ServicerContext) -> SliceIdList: with self.lock: db_context : ContextModel = get_object(self.database, ContextModel, request.context_uuid.uuid) @@ -556,7 +550,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): db_slices = sorted(db_slices, key=operator.attrgetter('pk')) return SliceIdList(slice_ids=[db_slice.dump_id() for db_slice in db_slices]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListSlices(self, request: ContextId, context : grpc.ServicerContext) -> SliceList: with self.lock: db_context : ContextModel = get_object(self.database, ContextModel, request.context_uuid.uuid) @@ -564,7 +558,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): db_slices = sorted(db_slices, key=operator.attrgetter('pk')) return SliceList(slices=[db_slice.dump() for db_slice in db_slices]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetSlice(self, request: SliceId, context : grpc.ServicerContext) -> Slice: with self.lock: str_key = key_to_str([request.context_id.context_uuid.uuid, request.slice_uuid.uuid]) @@ -573,7 +567,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): include_endpoint_ids=True, include_constraints=True, include_config_rules=True, include_service_ids=True, include_subslice_ids=True)) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def SetSlice(self, request: Slice, context : grpc.ServicerContext) -> SliceId: with self.lock: context_uuid = request.slice_id.context_id.context_uuid.uuid @@ -592,12 +586,12 @@ class ContextServiceServicerImpl(ContextServiceServicer): str_slice_key = key_to_str([context_uuid, slice_uuid]) constraints_result = set_constraints( - self.database, str_slice_key, 'constraints', request.slice_constraints) + self.database, str_slice_key, 'slice', request.slice_constraints) db_constraints = constraints_result[0][0] - config_rules = grpc_config_rules_to_raw(request.slice_config.config_rules) - running_config_result = update_config(self.database, str_slice_key, 'running', config_rules) - db_running_config = running_config_result[0][0] + running_config_rules = update_config( + self.database, str_slice_key, 'slice', request.slice_config.config_rules) + db_running_config = running_config_rules[0][0] result : Tuple[SliceModel, bool] = update_or_create_object(self.database, SliceModel, str_slice_key, { 'context_fk' : db_context, @@ -605,6 +599,8 @@ class ContextServiceServicerImpl(ContextServiceServicer): 'slice_constraints_fk': db_constraints, 'slice_status' : grpc_to_enum__slice_status(request.slice_status.slice_status), 'slice_config_fk' : db_running_config, + 'slice_owner_uuid' : request.slice_owner.owner_uuid.uuid, + 'slice_owner_string' : request.slice_owner.owner_string, }) db_slice, updated = result @@ -621,7 +617,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): db_endpoint : EndPointModel = get_object(self.database, EndPointModel, str_endpoint_key) - str_slice_endpoint_key = key_to_str([slice_uuid, str_endpoint_key], separator='--') + str_slice_endpoint_key = key_to_str([str_slice_key, str_endpoint_key], separator='--') result : Tuple[SliceEndPointModel, bool] = get_or_create_object( self.database, SliceEndPointModel, str_slice_endpoint_key, { 'slice_fk': db_slice, 'endpoint_fk': db_endpoint}) @@ -656,7 +652,56 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_SLICE, event_type, {'slice_id': dict_slice_id}) return SliceId(**dict_slice_id) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def UnsetSlice(self, request: Slice, context : grpc.ServicerContext) -> SliceId: + with self.lock: + context_uuid = request.slice_id.context_id.context_uuid.uuid + db_context : ContextModel = get_object(self.database, ContextModel, context_uuid) + + for i,endpoint_id in enumerate(request.slice_endpoint_ids): + endpoint_topology_context_uuid = endpoint_id.topology_id.context_id.context_uuid.uuid + if len(endpoint_topology_context_uuid) > 0 and context_uuid != endpoint_topology_context_uuid: + raise InvalidArgumentException( + 'request.slice_endpoint_ids[{:d}].topology_id.context_id.context_uuid.uuid'.format(i), + endpoint_topology_context_uuid, + ['should be == {:s}({:s})'.format( + 'request.slice_id.context_id.context_uuid.uuid', context_uuid)]) + + slice_uuid = request.slice_id.slice_uuid.uuid + str_slice_key = key_to_str([context_uuid, slice_uuid]) + + if len(request.slice_constraints) > 0: + raise NotImplementedError('UnsetSlice: removal of constraints') + if len(request.slice_config.config_rules) > 0: + raise NotImplementedError('UnsetSlice: removal of config rules') + if len(request.slice_endpoint_ids) > 0: + raise NotImplementedError('UnsetSlice: removal of endpoints') + + updated = False + + for service_id in request.slice_service_ids: + service_uuid = service_id.service_uuid.uuid + service_context_uuid = service_id.context_id.context_uuid.uuid + str_service_key = key_to_str([service_context_uuid, service_uuid]) + str_slice_service_key = key_to_str([str_slice_key, str_service_key], separator='--') + SliceServiceModel(self.database, str_slice_service_key).delete() + updated = True + + for subslice_id in request.slice_subslice_ids: + subslice_uuid = subslice_id.slice_uuid.uuid + subslice_context_uuid = subslice_id.context_id.context_uuid.uuid + str_subslice_key = key_to_str([subslice_context_uuid, subslice_uuid]) + str_slice_subslice_key = key_to_str([str_slice_key, str_subslice_key], separator='--') + SliceSubSliceModel(self.database, str_slice_subslice_key).delete() + updated = True + + event_type = EventTypeEnum.EVENTTYPE_UPDATE if updated else EventTypeEnum.EVENTTYPE_CREATE + db_slice : SliceModel = get_object(self.database, SliceModel, str_slice_key) + dict_slice_id = db_slice.dump_id() + notify_event(self.messagebroker, TOPIC_SLICE, event_type, {'slice_id': dict_slice_id}) + return SliceId(**dict_slice_id) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def RemoveSlice(self, request: SliceId, context : grpc.ServicerContext) -> Empty: with self.lock: context_uuid = request.context_id.context_uuid.uuid @@ -672,7 +717,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_SLICE, event_type, {'slice_id': dict_slice_id}) return Empty() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetSliceEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[SliceEvent]: for message in self.messagebroker.consume({TOPIC_SLICE}, consume_timeout=CONSUME_TIMEOUT): yield SliceEvent(**json.loads(message.content)) @@ -680,7 +725,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): # ----- Connection ------------------------------------------------------------------------------------------------- - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListConnectionIds(self, request: ServiceId, context : grpc.ServicerContext) -> ConnectionIdList: with self.lock: str_key = key_to_str([request.context_id.context_uuid.uuid, request.service_uuid.uuid]) @@ -689,7 +734,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): db_connections = sorted(db_connections, key=operator.attrgetter('pk')) return ConnectionIdList(connection_ids=[db_connection.dump_id() for db_connection in db_connections]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ListConnections(self, request: ContextId, context : grpc.ServicerContext) -> ServiceList: with self.lock: str_key = key_to_str([request.context_id.context_uuid.uuid, request.service_uuid.uuid]) @@ -698,13 +743,13 @@ class ContextServiceServicerImpl(ContextServiceServicer): db_connections = sorted(db_connections, key=operator.attrgetter('pk')) return ConnectionList(connections=[db_connection.dump() for db_connection in db_connections]) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetConnection(self, request: ConnectionId, context : grpc.ServicerContext) -> Connection: with self.lock: db_connection : ConnectionModel = get_object(self.database, ConnectionModel, request.connection_uuid.uuid) return Connection(**db_connection.dump(include_path=True, include_sub_service_ids=True)) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def SetConnection(self, request: Connection, context : grpc.ServicerContext) -> ConnectionId: with self.lock: connection_uuid = request.connection_id.connection_uuid.uuid @@ -743,7 +788,7 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_CONNECTION, event_type, {'connection_id': dict_connection_id}) return ConnectionId(**dict_connection_id) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def RemoveConnection(self, request: ConnectionId, context : grpc.ServicerContext) -> Empty: with self.lock: db_connection = ConnectionModel(self.database, request.connection_uuid.uuid, auto_load=False) @@ -757,7 +802,60 @@ class ContextServiceServicerImpl(ContextServiceServicer): notify_event(self.messagebroker, TOPIC_CONNECTION, event_type, {'connection_id': dict_connection_id}) return Empty() - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetConnectionEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[ConnectionEvent]: for message in self.messagebroker.consume({TOPIC_CONNECTION}, consume_timeout=CONSUME_TIMEOUT): yield ConnectionEvent(**json.loads(message.content)) + + + # ----- Policy ----------------------------------------------------------------------------------------------------- + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def ListPolicyRuleIds(self, request: Empty, context: grpc.ServicerContext) -> PolicyRuleIdList: + with self.lock: + db_policy_rules: List[PolicyRuleModel] = get_all_objects(self.database, PolicyRuleModel) + db_policy_rules = sorted(db_policy_rules, key=operator.attrgetter('pk')) + return PolicyRuleIdList(policyRuleIdList=[db_policy_rule.dump_id() for db_policy_rule in db_policy_rules]) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def ListPolicyRules(self, request: Empty, context: grpc.ServicerContext) -> PolicyRuleList: + with self.lock: + db_policy_rules: List[PolicyRuleModel] = get_all_objects(self.database, PolicyRuleModel) + db_policy_rules = sorted(db_policy_rules, key=operator.attrgetter('pk')) + return PolicyRuleList(policyRules=[db_policy_rule.dump() for db_policy_rule in db_policy_rules]) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def GetPolicyRule(self, request: PolicyRuleId, context: grpc.ServicerContext) -> PolicyRule: + with self.lock: + policy_rule_uuid = request.uuid.uuid + db_policy_rule: PolicyRuleModel = get_object(self.database, PolicyRuleModel, policy_rule_uuid) + return PolicyRule(**db_policy_rule.dump()) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def SetPolicyRule(self, request: PolicyRule, context: grpc.ServicerContext) -> PolicyRuleId: + with self.lock: + policy_rule_type = request.WhichOneof('policy_rule') + policy_rule_json = grpc_message_to_json(request) + policy_rule_uuid = policy_rule_json[policy_rule_type]['policyRuleBasic']['policyRuleId']['uuid']['uuid'] + result: Tuple[PolicyRuleModel, bool] = update_or_create_object( + self.database, PolicyRuleModel, policy_rule_uuid, {'value': json.dumps(policy_rule_json)}) + db_policy, updated = result # pylint: disable=unused-variable + + #event_type = EventTypeEnum.EVENTTYPE_UPDATE if updated else EventTypeEnum.EVENTTYPE_CREATE + dict_policy_id = db_policy.dump_id() + #notify_event(self.messagebroker, TOPIC_POLICY, event_type, {"policy_id": dict_policy_id}) + return PolicyRuleId(**dict_policy_id) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) + def RemovePolicyRule(self, request: PolicyRuleId, context: grpc.ServicerContext) -> Empty: + with self.lock: + policy_uuid = request.uuid.uuid + db_policy = PolicyRuleModel(self.database, policy_uuid, auto_load=False) + found = db_policy.load() + if not found: return Empty() + + dict_policy_id = db_policy.dump_id() + db_policy.delete() + #event_type = EventTypeEnum.EVENTTYPE_REMOVE + #notify_event(self.messagebroker, TOPIC_POLICY, event_type, {"policy_id": dict_policy_id}) + return Empty() diff --git a/src/context/service/rest_server/Resources.py b/src/context/service/rest_server/Resources.py index d1738edb20361dab70334bc026d94d37c654127a..5f03132a34004388596ce1fdfac470f029c093ea 100644 --- a/src/context/service/rest_server/Resources.py +++ b/src/context/service/rest_server/Resources.py @@ -17,6 +17,7 @@ from flask.json import jsonify from flask_restful import Resource from common.orm.Database import Database from common.proto.context_pb2 import ConnectionId, ContextId, DeviceId, Empty, LinkId, ServiceId, SliceId, TopologyId +from common.proto.policy_pb2 import PolicyRuleId from common.tools.grpc.Tools import grpc_message_to_json from context.service.grpc_server.ContextServiceServicerImpl import ContextServiceServicerImpl @@ -61,6 +62,11 @@ def grpc_topology_id(context_uuid, topology_uuid): 'topology_uuid': {'uuid': topology_uuid} }) +def grpc_policy_rule_id(policy_rule_uuid): + return PolicyRuleId(**{ + 'uuid': {'uuid': policy_rule_uuid} + }) + class _Resource(Resource): def __init__(self, database : Database) -> None: super().__init__() @@ -151,6 +157,18 @@ class Connection(_Resource): def get(self, connection_uuid : str): return format_grpc_to_json(self.servicer.GetConnection(grpc_connection_id(connection_uuid), None)) +class PolicyRuleIds(_Resource): + def get(self): + return format_grpc_to_json(self.servicer.ListPolicyRuleIds(Empty(), None)) + +class PolicyRules(_Resource): + def get(self): + return format_grpc_to_json(self.servicer.ListPolicyRules(Empty(), None)) + +class PolicyRule(_Resource): + def get(self, policy_rule_uuid : str): + return format_grpc_to_json(self.servicer.GetPolicyRule(grpc_policy_rule_id(policy_rule_uuid), None)) + class DumpText(Resource): def __init__(self, database : Database) -> None: super().__init__() @@ -219,6 +237,10 @@ RESOURCES = [ ('api.connections', Connections, '/context//service//connections'), ('api.connection', Connection, '/connection/'), + ('api.policyrule_ids', PolicyRuleIds, '/policyrule_ids'), + ('api.policyrules', PolicyRules, '/policyrules'), + ('api.policyrule', PolicyRule, '/policyrule/'), + ('api.dump.text', DumpText, '/dump/text'), ('api.dump.html', DumpHtml, '/dump/html'), ] diff --git a/src/context/tests/Objects.py b/src/context/tests/Objects.py index 519a0093ac2733125487ed9daf0c61e0821910d5..1cf929cfa578e8bbf8f95885cc2a7bc7e7b9f3ef 100644 --- a/src/context/tests/Objects.py +++ b/src/context/tests/Objects.py @@ -16,13 +16,14 @@ from common.Constants import DEFAULT_CONTEXT_UUID, DEFAULT_TOPOLOGY_UUID from common.proto.kpi_sample_types_pb2 import KpiSampleType from common.tools.object_factory.ConfigRule import json_config_rule_set from common.tools.object_factory.Connection import json_connection, json_connection_id -from common.tools.object_factory.Constraint import json_constraint +from common.tools.object_factory.Constraint import json_constraint_custom from common.tools.object_factory.Context import json_context, json_context_id from common.tools.object_factory.Device import json_device_id, json_device_packetrouter_disabled from common.tools.object_factory.EndPoint import json_endpoint, json_endpoint_id from common.tools.object_factory.Link import json_link, json_link_id from common.tools.object_factory.Service import json_service_id, json_service_l3nm_planned from common.tools.object_factory.Topology import json_topology, json_topology_id +from common.tools.object_factory.PolicyRule import json_policy_rule, json_policy_rule_id # ----- Context -------------------------------------------------------------------------------------------------------- @@ -129,8 +130,8 @@ SERVICE_R1_R2_EPIDS = [ json_endpoint_id(DEVICE_R2_ID, 'EP100', topology_id=TOPOLOGY_ID), ] SERVICE_R1_R2_CONST = [ - json_constraint('latency_ms', '15.2'), - json_constraint('jitter_us', '1.2'), + json_constraint_custom('latency[ms]', '15.2'), + json_constraint_custom('jitter[us]', '1.2'), ] SERVICE_R1_R2_RULES = [ json_config_rule_set('svc/rsrc1/value', 'value7'), @@ -149,8 +150,8 @@ SERVICE_R1_R3_EPIDS = [ json_endpoint_id(DEVICE_R3_ID, 'EP100', topology_id=TOPOLOGY_ID), ] SERVICE_R1_R3_CONST = [ - json_constraint('latency_ms', '5.8'), - json_constraint('jitter_us', '0.1'), + json_constraint_custom('latency[ms]', '5.8'), + json_constraint_custom('jitter[us]', '0.1'), ] SERVICE_R1_R3_RULES = [ json_config_rule_set('svc/rsrc1/value', 'value7'), @@ -169,8 +170,8 @@ SERVICE_R2_R3_EPIDS = [ json_endpoint_id(DEVICE_R3_ID, 'EP100', topology_id=TOPOLOGY_ID), ] SERVICE_R2_R3_CONST = [ - json_constraint('latency_ms', '23.1'), - json_constraint('jitter_us', '3.4'), + json_constraint_custom('latency[ms]', '23.1'), + json_constraint_custom('jitter[us]', '3.4'), ] SERVICE_R2_R3_RULES = [ json_config_rule_set('svc/rsrc1/value', 'value7'), @@ -197,3 +198,9 @@ CONNECTION_R1_R3_SVCIDS = [SERVICE_R1_R2_ID, SERVICE_R2_R3_ID] CONNECTION_R1_R3 = json_connection( CONNECTION_R1_R3_UUID, service_id=SERVICE_R1_R3_ID, path_hops_endpoint_ids=CONNECTION_R1_R3_EPIDS, sub_service_ids=CONNECTION_R1_R3_SVCIDS) + + +# ----- PolicyRule ------------------------------------------------------------------------------------------------------- +POLICY_RULE_UUID = '56380225-3e40-4f74-9162-529f8dcb96a1' +POLICY_RULE_ID = json_policy_rule_id(POLICY_RULE_UUID) +POLICY_RULE = json_policy_rule(POLICY_RULE_UUID) diff --git a/src/context/tests/test_unitary.py b/src/context/tests/test_unitary.py index b46c9468c56974be5c987dbbc284daae337d3c7b..022c0472039d526e488f8a69096fae8c0edbdb48 100644 --- a/src/context/tests/test_unitary.py +++ b/src/context/tests/test_unitary.py @@ -27,6 +27,7 @@ from common.proto.context_pb2 import ( Connection, ConnectionEvent, ConnectionId, Context, ContextEvent, ContextId, Device, DeviceEvent, DeviceId, DeviceOperationalStatusEnum, Empty, EventTypeEnum, Link, LinkEvent, LinkId, Service, ServiceEvent, ServiceId, ServiceStatusEnum, ServiceTypeEnum, Topology, TopologyEvent, TopologyId) +from common.proto.policy_pb2 import (PolicyRuleIdList, PolicyRuleId, PolicyRuleList, PolicyRule) from common.type_checkers.Assertions import ( validate_connection, validate_connection_ids, validate_connections, validate_context, validate_context_ids, validate_contexts, validate_device, validate_device_ids, validate_devices, validate_link, validate_link_ids, @@ -44,14 +45,15 @@ from .Objects import ( CONNECTION_R1_R3, CONNECTION_R1_R3_ID, CONNECTION_R1_R3_UUID, CONTEXT, CONTEXT_ID, DEVICE_R1, DEVICE_R1_ID, DEVICE_R1_UUID, DEVICE_R2, DEVICE_R2_ID, DEVICE_R2_UUID, DEVICE_R3, DEVICE_R3_ID, DEVICE_R3_UUID, LINK_R1_R2, LINK_R1_R2_ID, LINK_R1_R2_UUID, SERVICE_R1_R2, SERVICE_R1_R2_ID, SERVICE_R1_R2_UUID, SERVICE_R1_R3, - SERVICE_R1_R3_ID, SERVICE_R1_R3_UUID, SERVICE_R2_R3, SERVICE_R2_R3_ID, SERVICE_R2_R3_UUID, TOPOLOGY, TOPOLOGY_ID) + SERVICE_R1_R3_ID, SERVICE_R1_R3_UUID, SERVICE_R2_R3, SERVICE_R2_R3_ID, SERVICE_R2_R3_UUID, TOPOLOGY, TOPOLOGY_ID, + POLICY_RULE, POLICY_RULE_ID, POLICY_RULE_UUID) LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) LOCAL_HOST = '127.0.0.1' -GRPC_PORT = 10000 + get_service_port_grpc(ServiceNameEnum.CONTEXT) # avoid privileged ports -HTTP_PORT = 10000 + get_service_port_http(ServiceNameEnum.CONTEXT) # avoid privileged ports +GRPC_PORT = 10000 + int(get_service_port_grpc(ServiceNameEnum.CONTEXT)) # avoid privileged ports +HTTP_PORT = 10000 + int(get_service_port_http(ServiceNameEnum.CONTEXT)) # avoid privileged ports os.environ[get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST )] = str(LOCAL_HOST) os.environ[get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(GRPC_PORT) @@ -68,8 +70,8 @@ REDIS_CONFIG = { } SCENARIOS = [ - ('all_inmemory', DatabaseBackendEnum.INMEMORY, {}, MessageBrokerBackendEnum.INMEMORY, {} ), - ('all_redis', DatabaseBackendEnum.REDIS, REDIS_CONFIG, MessageBrokerBackendEnum.REDIS, REDIS_CONFIG), + ('all_inmemory', DatabaseBackendEnum.INMEMORY, {}, MessageBrokerBackendEnum.INMEMORY, {} ) +# ('all_redis', DatabaseBackendEnum.REDIS, REDIS_CONFIG, MessageBrokerBackendEnum.REDIS, REDIS_CONFIG), ] @pytest.fixture(scope='session', ids=[str(scenario[0]) for scenario in SCENARIOS], params=SCENARIOS) @@ -459,7 +461,7 @@ def test_grpc_device( for db_entry in db_entries: LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover LOGGER.info('-----------------------------------------------------------') - assert len(db_entries) == 40 + assert len(db_entries) == 47 # ----- Get when the object exists --------------------------------------------------------------------------------- response = context_client_grpc.GetDevice(DeviceId(**DEVICE_R1_ID)) @@ -512,7 +514,7 @@ def test_grpc_device( for db_entry in db_entries: LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover LOGGER.info('-----------------------------------------------------------') - assert len(db_entries) == 40 + assert len(db_entries) == 47 # ----- Remove the object ------------------------------------------------------------------------------------------ context_client_grpc.RemoveDevice(DeviceId(**DEVICE_R1_ID)) @@ -611,7 +613,7 @@ def test_grpc_link( for db_entry in db_entries: LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover LOGGER.info('-----------------------------------------------------------') - assert len(db_entries) == 67 + assert len(db_entries) == 80 # ----- Create the object ------------------------------------------------------------------------------------------ response = context_client_grpc.SetLink(Link(**LINK_R1_R2)) @@ -639,7 +641,7 @@ def test_grpc_link( for db_entry in db_entries: LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover LOGGER.info('-----------------------------------------------------------') - assert len(db_entries) == 75 + assert len(db_entries) == 88 # ----- Get when the object exists --------------------------------------------------------------------------------- response = context_client_grpc.GetLink(LinkId(**LINK_R1_R2_ID)) @@ -685,7 +687,7 @@ def test_grpc_link( for db_entry in db_entries: LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover LOGGER.info('-----------------------------------------------------------') - assert len(db_entries) == 75 + assert len(db_entries) == 88 # ----- Remove the object ------------------------------------------------------------------------------------------ context_client_grpc.RemoveLink(LinkId(**LINK_R1_R2_ID)) @@ -794,7 +796,7 @@ def test_grpc_service( for db_entry in db_entries: LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover LOGGER.info('-----------------------------------------------------------') - assert len(db_entries) == 67 + assert len(db_entries) == 80 # ----- Create the object ------------------------------------------------------------------------------------------ with pytest.raises(grpc.RpcError) as e: @@ -846,7 +848,7 @@ def test_grpc_service( for db_entry in db_entries: LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover LOGGER.info('-----------------------------------------------------------') - assert len(db_entries) == 89 + assert len(db_entries) == 108 # ----- Get when the object exists --------------------------------------------------------------------------------- response = context_client_grpc.GetService(ServiceId(**SERVICE_R1_R2_ID)) @@ -1042,7 +1044,7 @@ def test_grpc_connection( for db_entry in db_entries: LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover LOGGER.info('-----------------------------------------------------------') - assert len(db_entries) == 150 + assert len(db_entries) == 187 # ----- Create the object ------------------------------------------------------------------------------------------ with pytest.raises(grpc.RpcError) as e: @@ -1082,7 +1084,7 @@ def test_grpc_connection( for db_entry in db_entries: LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover LOGGER.info('-----------------------------------------------------------') - assert len(db_entries) == 166 + assert len(db_entries) == 203 # ----- Get when the object exists --------------------------------------------------------------------------------- response = context_client_grpc.GetConnection(ConnectionId(**CONNECTION_R1_R3_ID)) @@ -1169,6 +1171,101 @@ def test_grpc_connection( assert len(db_entries) == 0 +def test_grpc_policy( + context_client_grpc : ContextClient, # pylint: disable=redefined-outer-name + context_db_mb : Tuple[Database, MessageBroker]): # pylint: disable=redefined-outer-name + context_database = context_db_mb[0] + + # ----- Clean the database ----------------------------------------------------------------------------------------- + context_database.clear_all() + + # ----- Initialize the EventsCollector ----------------------------------------------------------------------------- + #events_collector = EventsCollector(context_client_grpc) + #events_collector.start() + + # ----- Get when the object does not exist ------------------------------------------------------------------------- + POLICY_ID = 'no-uuid' + DEFAULT_POLICY_ID = {'uuid': {'uuid': POLICY_ID}} + + with pytest.raises(grpc.RpcError) as e: + context_client_grpc.GetPolicyRule(PolicyRuleId(**DEFAULT_POLICY_ID)) + + assert e.value.code() == grpc.StatusCode.NOT_FOUND + assert e.value.details() == 'PolicyRule({:s}) not found'.format(POLICY_ID) + + # ----- List when the object does not exist ------------------------------------------------------------------------ + response = context_client_grpc.ListPolicyRuleIds(Empty()) + assert len(response.policyRuleIdList) == 0 + + response = context_client_grpc.ListPolicyRules(Empty()) + assert len(response.policyRules) == 0 + + # ----- Dump state of database before create the object ------------------------------------------------------------ + db_entries = context_database.dump() + LOGGER.info('----- Database Dump [{:3d} entries] -------------------------'.format(len(db_entries))) + for db_entry in db_entries: + LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover + LOGGER.info('-----------------------------------------------------------') + assert len(db_entries) == 0 + + # ----- Create the object ------------------------------------------------------------------------------------------ + response = context_client_grpc.SetPolicyRule(PolicyRule(**POLICY_RULE)) + assert response.uuid.uuid == POLICY_RULE_UUID + + # ----- Check create event ----------------------------------------------------------------------------------------- + # events = events_collector.get_events(block=True, count=1) + # assert isinstance(events[0], PolicyEvent) + # assert events[0].event.event_type == EventTypeEnum.EVENTTYPE_CREATE + # assert events[0].policy_id.uuid.uuid == POLICY_RULE_UUID + + # ----- Update the object ------------------------------------------------------------------------------------------ + response = context_client_grpc.SetPolicyRule(PolicyRule(**POLICY_RULE)) + assert response.uuid.uuid == POLICY_RULE_UUID + + # ----- Dump state of database after create/update the object ------------------------------------------------------ + db_entries = context_database.dump() + LOGGER.info('----- Database Dump [{:3d} entries] -------------------------'.format(len(db_entries))) + for db_entry in db_entries: + LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover + LOGGER.info('-----------------------------------------------------------') + assert len(db_entries) == 2 + + # ----- Get when the object exists --------------------------------------------------------------------------------- + response = context_client_grpc.GetPolicyRule(PolicyRuleId(**POLICY_RULE_ID)) + assert response.device.policyRuleBasic.policyRuleId.uuid.uuid == POLICY_RULE_UUID + + # ----- List when the object exists -------------------------------------------------------------------------------- + response = context_client_grpc.ListPolicyRuleIds(Empty()) + assert len(response.policyRuleIdList) == 1 + assert response.policyRuleIdList[0].uuid.uuid == POLICY_RULE_UUID + + response = context_client_grpc.ListPolicyRules(Empty()) + assert len(response.policyRules) == 1 + + # ----- Remove the object ------------------------------------------------------------------------------------------ + context_client_grpc.RemovePolicyRule(PolicyRuleId(**POLICY_RULE_ID)) + + # ----- Check remove event ----------------------------------------------------------------------------------------- + # events = events_collector.get_events(block=True, count=2) + + # assert isinstance(events[0], PolicyEvent) + # assert events[0].event.event_type == EventTypeEnum.EVENTTYPE_REMOVE + # assert events[0].policy_id.uuid.uuid == POLICY_RULE_UUID + + + # ----- Stop the EventsCollector ----------------------------------------------------------------------------------- + # events_collector.stop() + + # ----- Dump state of database after remove the object ------------------------------------------------------------- + db_entries = context_database.dump() + LOGGER.info('----- Database Dump [{:3d} entries] -------------------------'.format(len(db_entries))) + for db_entry in db_entries: + LOGGER.info(' [{:>4s}] {:40s} :: {:s}'.format(*db_entry)) # pragma: no cover + LOGGER.info('-----------------------------------------------------------') + assert len(db_entries) == 0 + + + # ----- Test REST API methods ------------------------------------------------------------------------------------------ def test_rest_populate_database( @@ -1224,6 +1321,22 @@ def test_rest_get_service(context_service_rest : RestServer): # pylint: disable= reply = do_rest_request('/context/{:s}/service/{:s}'.format(context_uuid, service_uuid)) validate_service(reply) +def test_rest_get_slice_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name + context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_UUID) + reply = do_rest_request('/context/{:s}/slice_ids'.format(context_uuid)) + #validate_slice_ids(reply) + +def test_rest_get_slices(context_service_rest : RestServer): # pylint: disable=redefined-outer-name + context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_UUID) + reply = do_rest_request('/context/{:s}/slices'.format(context_uuid)) + #validate_slices(reply) + +#def test_rest_get_slice(context_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_UUID) +# slice_uuid = urllib.parse.quote(SLICE_R1_R2_UUID, safe='') +# reply = do_rest_request('/context/{:s}/slice/{:s}'.format(context_uuid, slice_uuid)) +# #validate_slice(reply) + def test_rest_get_device_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name reply = do_rest_request('/device_ids') validate_device_ids(reply) @@ -1267,6 +1380,19 @@ def test_rest_get_connection(context_service_rest : RestServer): # pylint: disab reply = do_rest_request('/connection/{:s}'.format(connection_uuid)) validate_connection(reply) +def test_rest_get_policyrule_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name + reply = do_rest_request('/policyrule_ids') + #validate_policyrule_ids(reply) + +def test_rest_get_policyrules(context_service_rest : RestServer): # pylint: disable=redefined-outer-name + reply = do_rest_request('/policyrules') + #validate_policyrules(reply) + +#def test_rest_get_policyrule(context_service_rest : RestServer): # pylint: disable=redefined-outer-name +# policyrule_uuid = urllib.parse.quote(POLICYRULE_UUID, safe='') +# reply = do_rest_request('/policyrule/{:s}'.format(policyrule_uuid)) +# #validate_policyrule(reply) + # ----- Test misc. Context internal tools ------------------------------------------------------------------------------ diff --git a/src/dbscanserving/service/DbscanServiceServicerImpl.py b/src/dbscanserving/service/DbscanServiceServicerImpl.py index 5560eec1e333c16c0ea980a5af14e856c3909431..b14729d36d403a2b246183751d9ecb077a92caeb 100644 --- a/src/dbscanserving/service/DbscanServiceServicerImpl.py +++ b/src/dbscanserving/service/DbscanServiceServicerImpl.py @@ -14,15 +14,13 @@ import os, grpc, logging from sklearn.cluster import DBSCAN -from common.rpc_method_wrapper.Decorator import create_metrics, safe_and_metered_rpc_method +from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from dbscanserving.proto.dbscanserving_pb2 import DetectionRequest, DetectionResponse from dbscanserving.proto.dbscanserving_pb2_grpc import DetectorServicer LOGGER = logging.getLogger(__name__) -SERVICE_NAME = 'DbscanServing' -METHOD_NAMES = ['Detect'] -METRICS = create_metrics(SERVICE_NAME, METHOD_NAMES) +METRICS_POOL = MetricsPool('DbscanServing', 'RPC') class DbscanServiceServicerImpl(DetectorServicer): @@ -31,7 +29,7 @@ class DbscanServiceServicerImpl(DetectorServicer): LOGGER.debug('Creating Servicer...') LOGGER.debug('Servicer Created') - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def Detect(self, request : DetectionRequest, context : grpc.ServicerContext) -> DetectionResponse: if request.num_samples != len(request.samples): context.set_details("The sample dimension declared does not match with the number of samples received.") diff --git a/src/device/requirements.in b/src/device/requirements.in index 10506fbd42c5b7a64afb3cc7c6ea32e0f1fa49f6..2b9c199c86a580b72190a9d0e74a161e567abed2 100644 --- a/src/device/requirements.in +++ b/src/device/requirements.in @@ -9,7 +9,11 @@ python-json-logger==2.0.2 pytz==2021.3 redis==4.1.2 requests==2.27.1 +requests-mock==1.9.3 xmltodict==0.12.0 +tabulate +ipaddress +macaddress # pip's dependency resolver does not take into account installed packages. # p4runtime does not specify the version of grpcio/protobuf it needs, so it tries to install latest one diff --git a/src/device/service/DeviceService.py b/src/device/service/DeviceService.py index 4dc2b01000d8ca6dd2b3ecee0b0f867338636c73..59134f26d3dd8c3fa0a9dddbcd1d3df298ec076a 100644 --- a/src/device/service/DeviceService.py +++ b/src/device/service/DeviceService.py @@ -23,10 +23,15 @@ from .driver_api.DriverInstanceCache import DriverInstanceCache from .DeviceServiceServicerImpl import DeviceServiceServicerImpl from .MonitoringLoops import MonitoringLoops +# Custom gRPC settings +# Multiple clients might keep connections alive waiting for RPC methods to be executed. +# Requests needs to be serialized to ensure correct device configurations +GRPC_MAX_WORKERS = 200 + class DeviceService(GenericGrpcService): def __init__(self, driver_instance_cache : DriverInstanceCache, cls_name: str = __name__) -> None: port = get_service_port_grpc(ServiceNameEnum.DEVICE) - super().__init__(port, cls_name=cls_name) + super().__init__(port, max_workers=GRPC_MAX_WORKERS, cls_name=cls_name) database = Database(get_database_backend(backend=BackendEnum.INMEMORY)) self.monitoring_loops = MonitoringLoops(database) self.device_servicer = DeviceServiceServicerImpl(database, driver_instance_cache, self.monitoring_loops) diff --git a/src/device/service/DeviceServiceServicerImpl.py b/src/device/service/DeviceServiceServicerImpl.py index 6189816bcd35dd973e4a7da389f256bdb685a79f..88f49de6fb5c07e39b7efc9d26ccba135f95c929 100644 --- a/src/device/service/DeviceServiceServicerImpl.py +++ b/src/device/service/DeviceServiceServicerImpl.py @@ -14,6 +14,8 @@ import grpc, json, logging, re from typing import Any, Dict, List, Tuple +from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method +from common.method_wrappers.ServiceExceptions import InvalidArgumentException, OperationFailedException from common.orm.Database import Database from common.orm.HighLevel import get_object, update_or_create_object from common.orm.backend.Tools import key_to_str @@ -21,9 +23,8 @@ from common.proto.context_pb2 import ConfigActionEnum, Device, DeviceConfig, Dev from common.proto.device_pb2 import MonitoringSettings from common.proto.device_pb2_grpc import DeviceServiceServicer from common.proto.kpi_sample_types_pb2 import KpiSampleType -from common.rpc_method_wrapper.Decorator import create_metrics, safe_and_metered_rpc_method -from common.rpc_method_wrapper.ServiceExceptions import InvalidArgumentException, OperationFailedException from common.tools.grpc.Tools import grpc_message_to_json +from common.tools.mutex_queues.MutexQueues import MutexQueues from context.client.ContextClient import ContextClient from .database.ConfigModel import ( ConfigModel, ConfigRuleModel, ORM_ConfigActionEnum, get_config_rules, grpc_config_rules_to_raw, update_config) @@ -43,9 +44,7 @@ from .MonitoringLoops import MonitoringLoops LOGGER = logging.getLogger(__name__) -SERVICE_NAME = 'Device' -METHOD_NAMES = ['AddDevice', 'ConfigureDevice', 'DeleteDevice', 'GetInitialConfig', 'MonitorDeviceKpi'] -METRICS = create_metrics(SERVICE_NAME, METHOD_NAMES) +METRICS_POOL = MetricsPool('Device', 'RPC') class DeviceServiceServicerImpl(DeviceServiceServicer): def __init__( @@ -56,9 +55,10 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): self.database = database self.driver_instance_cache = driver_instance_cache self.monitoring_loops = monitoring_loops + self.mutex_queues = MutexQueues() LOGGER.debug('Servicer Created') - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def AddDevice(self, request : Device, context : grpc.ServicerContext) -> DeviceId: device_id = request.device_id device_uuid = device_id.device_uuid.uuid @@ -101,348 +101,368 @@ class DeviceServiceServicerImpl(DeviceServiceServicer): json_request['device_config'] = {} request = Device(**json_request) - sync_device_from_context(device_uuid, self.context_client, self.database) - db_device,_ = update_device_in_local_database(self.database, request) - - driver_filter_fields = get_device_driver_filter_fields(db_device) - - #LOGGER.info('[AddDevice] connection_config_rules = {:s}'.format(str(connection_config_rules))) - address = connection_config_rules.pop('address', None) - port = connection_config_rules.pop('port', None) - settings = connection_config_rules.pop('settings', '{}') - try: - settings = json.loads(settings) - except ValueError as e: - raise InvalidArgumentException( - 'device.device_config.config_rules[settings]', settings, - extra_details='_connect/settings Config Rules provided cannot be decoded as JSON dictionary.') from e - driver : _Driver = self.driver_instance_cache.get( - device_uuid, filter_fields=driver_filter_fields, address=address, port=port, settings=settings) - driver.Connect() - - endpoints = driver.GetConfig([RESOURCE_ENDPOINTS]) + self.mutex_queues.wait_my_turn(device_uuid) try: - for resource_key, resource_value in endpoints: + sync_device_from_context(device_uuid, self.context_client, self.database) + db_device,_ = update_device_in_local_database(self.database, request) + + driver_filter_fields = get_device_driver_filter_fields(db_device) + + #LOGGER.info('[AddDevice] connection_config_rules = {:s}'.format(str(connection_config_rules))) + address = connection_config_rules.pop('address', None) + port = connection_config_rules.pop('port', None) + settings = connection_config_rules.pop('settings', '{}') + try: + settings = json.loads(settings) + except ValueError as e: + raise InvalidArgumentException( + 'device.device_config.config_rules[settings]', settings, + extra_details='_connect/settings Config Rules provided cannot be decoded as JSON dictionary.') from e + driver : _Driver = self.driver_instance_cache.get( + device_uuid, filter_fields=driver_filter_fields, address=address, port=port, settings=settings) + driver.Connect() + + endpoints = driver.GetConfig([RESOURCE_ENDPOINTS]) + try: + for resource_key, resource_value in endpoints: + if isinstance(resource_value, Exception): + LOGGER.error('Error retrieving "{:s}": {:s}'.format(str(RESOURCE_ENDPOINTS), str(resource_value))) + continue + endpoint_uuid = resource_value.get('uuid') + endpoint_type = resource_value.get('type') + str_endpoint_key = key_to_str([device_uuid, endpoint_uuid]) + db_endpoint, _ = update_or_create_object( + self.database, EndPointModel, str_endpoint_key, { + 'device_fk' : db_device, + 'endpoint_uuid': endpoint_uuid, + 'endpoint_type': endpoint_type, + 'resource_key' : resource_key, + }) + sample_types : Dict[int, str] = resource_value.get('sample_types', {}) + for sample_type, monitor_resource_key in sample_types.items(): + str_endpoint_monitor_key = key_to_str([str_endpoint_key, str(sample_type)]) + update_or_create_object(self.database, EndPointMonitorModel, str_endpoint_monitor_key, { + 'endpoint_fk' : db_endpoint, + 'resource_key' : monitor_resource_key, + 'kpi_sample_type': grpc_to_enum__kpi_sample_type(sample_type), + }) + except: # pylint: disable=bare-except + LOGGER.exception('[AddDevice] endpoints = {:s}'.format(str(endpoints))) + + raw_running_config_rules = driver.GetConfig() + running_config_rules = [] + for resource_key, resource_value in raw_running_config_rules: if isinstance(resource_value, Exception): - LOGGER.error('Error retrieving "{:s}": {:s}'.format(str(RESOURCE_ENDPOINTS), str(resource_value))) + msg = 'Error retrieving config rules: {:s} => {:s}' + LOGGER.error(msg.format(str(resource_key), str(resource_value))) continue - endpoint_uuid = resource_value.get('uuid') - endpoint_type = resource_value.get('type') - str_endpoint_key = key_to_str([device_uuid, endpoint_uuid]) - db_endpoint, _ = update_or_create_object( - self.database, EndPointModel, str_endpoint_key, { - 'device_fk' : db_device, - 'endpoint_uuid': endpoint_uuid, - 'endpoint_type': endpoint_type, - 'resource_key' : resource_key, - }) - sample_types : Dict[int, str] = resource_value.get('sample_types', {}) - for sample_type, monitor_resource_key in sample_types.items(): - str_endpoint_monitor_key = key_to_str([str_endpoint_key, str(sample_type)]) - update_or_create_object(self.database, EndPointMonitorModel, str_endpoint_monitor_key, { - 'endpoint_fk' : db_endpoint, - 'resource_key' : monitor_resource_key, - 'kpi_sample_type': grpc_to_enum__kpi_sample_type(sample_type), - }) - except: # pylint: disable=bare-except - LOGGER.exception('[AddDevice] endpoints = {:s}'.format(str(endpoints))) - - raw_running_config_rules = driver.GetConfig() - running_config_rules = [] - for resource_key, resource_value in raw_running_config_rules: - if isinstance(resource_value, Exception): - msg = 'Error retrieving config rules: {:s} => {:s}' - LOGGER.error(msg.format(str(resource_key), str(resource_value))) - continue - config_rule = (ORM_ConfigActionEnum.SET, resource_key, json.dumps(resource_value, sort_keys=True)) - running_config_rules.append(config_rule) + config_rule = (ORM_ConfigActionEnum.SET, resource_key, json.dumps(resource_value, sort_keys=True)) + running_config_rules.append(config_rule) - #for running_config_rule in running_config_rules: - # LOGGER.info('[AddDevice] running_config_rule: {:s}'.format(str(running_config_rule))) - update_config(self.database, device_uuid, 'running', running_config_rules) + #for running_config_rule in running_config_rules: + # LOGGER.info('[AddDevice] running_config_rule: {:s}'.format(str(running_config_rule))) + update_config(self.database, device_uuid, 'running', running_config_rules) - initial_config_rules = driver.GetInitialConfig() - update_config(self.database, device_uuid, 'initial', initial_config_rules) + initial_config_rules = driver.GetInitialConfig() + update_config(self.database, device_uuid, 'initial', initial_config_rules) - #LOGGER.info('[AddDevice] db_device = {:s}'.format(str(db_device.dump( - # include_config_rules=True, include_drivers=True, include_endpoints=True)))) + #LOGGER.info('[AddDevice] db_device = {:s}'.format(str(db_device.dump( + # include_config_rules=True, include_drivers=True, include_endpoints=True)))) - sync_device_to_context(db_device, self.context_client) - return DeviceId(**db_device.dump_id()) + sync_device_to_context(db_device, self.context_client) + return DeviceId(**db_device.dump_id()) + finally: + self.mutex_queues.signal_done(device_uuid) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def ConfigureDevice(self, request : Device, context : grpc.ServicerContext) -> DeviceId: device_id = request.device_id device_uuid = device_id.device_uuid.uuid - sync_device_from_context(device_uuid, self.context_client, self.database) + self.mutex_queues.wait_my_turn(device_uuid) + try: + sync_device_from_context(device_uuid, self.context_client, self.database) - context_config_rules = get_config_rules(self.database, device_uuid, 'running') - context_config_rules = {config_rule[1]: config_rule[2] for config_rule in context_config_rules} - #LOGGER.info('[ConfigureDevice] context_config_rules = {:s}'.format(str(context_config_rules))) + context_config_rules = get_config_rules(self.database, device_uuid, 'running') + context_config_rules = {config_rule[1]: config_rule[2] for config_rule in context_config_rules} + #LOGGER.info('[ConfigureDevice] context_config_rules = {:s}'.format(str(context_config_rules))) - db_device,_ = update_device_in_local_database(self.database, request) + db_device,_ = update_device_in_local_database(self.database, request) - request_config_rules = grpc_config_rules_to_raw(request.device_config.config_rules) - #LOGGER.info('[ConfigureDevice] request_config_rules = {:s}'.format(str(request_config_rules))) + request_config_rules = grpc_config_rules_to_raw(request.device_config.config_rules) + #LOGGER.info('[ConfigureDevice] request_config_rules = {:s}'.format(str(request_config_rules))) - resources_to_set : List[Tuple[str, Any]] = [] # key, value - resources_to_delete : List[Tuple[str, Any]] = [] # key, value + resources_to_set : List[Tuple[str, Any]] = [] # key, value + resources_to_delete : List[Tuple[str, Any]] = [] # key, value - for config_rule in request_config_rules: - action, key, value = config_rule - if action == ORM_ConfigActionEnum.SET: - if (key not in context_config_rules) or (context_config_rules[key] != value): - resources_to_set.append((key, value)) - elif action == ORM_ConfigActionEnum.DELETE: - if key in context_config_rules: - resources_to_delete.append((key, value)) + for config_rule in request_config_rules: + action, key, value = config_rule + if action == ORM_ConfigActionEnum.SET: + if (key not in context_config_rules) or (context_config_rules[key] != value): + resources_to_set.append((key, value)) + elif action == ORM_ConfigActionEnum.DELETE: + if key in context_config_rules: + resources_to_delete.append((key, value)) - #LOGGER.info('[ConfigureDevice] resources_to_set = {:s}'.format(str(resources_to_set))) - #LOGGER.info('[ConfigureDevice] resources_to_delete = {:s}'.format(str(resources_to_delete))) + #LOGGER.info('[ConfigureDevice] resources_to_set = {:s}'.format(str(resources_to_set))) + #LOGGER.info('[ConfigureDevice] resources_to_delete = {:s}'.format(str(resources_to_delete))) - # TODO: use of datastores (might be virtual ones) to enable rollbacks + # TODO: use of datastores (might be virtual ones) to enable rollbacks - errors = [] + errors = [] - driver : _Driver = self.driver_instance_cache.get(device_uuid) - if driver is None: - errors.append('Device({:s}) has not been added to this Device instance'.format(str(device_uuid))) + driver : _Driver = self.driver_instance_cache.get(device_uuid) + if driver is None: + errors.append('Device({:s}) has not been added to this Device instance'.format(str(device_uuid))) - if len(errors) == 0: - results_setconfig = driver.SetConfig(resources_to_set) - errors.extend(check_set_errors(resources_to_set, results_setconfig)) + if len(errors) == 0: + results_setconfig = driver.SetConfig(resources_to_set) + errors.extend(check_set_errors(resources_to_set, results_setconfig)) - if len(errors) == 0: - results_deleteconfig = driver.DeleteConfig(resources_to_delete) - errors.extend(check_delete_errors(resources_to_delete, results_deleteconfig)) + if len(errors) == 0: + results_deleteconfig = driver.DeleteConfig(resources_to_delete) + errors.extend(check_delete_errors(resources_to_delete, results_deleteconfig)) - if len(errors) > 0: - raise OperationFailedException('ConfigureDevice', extra_details=errors) + if len(errors) > 0: + raise OperationFailedException('ConfigureDevice', extra_details=errors) - running_config_rules = driver.GetConfig() - running_config_rules = [ - (ORM_ConfigActionEnum.SET, config_rule[0], json.dumps(config_rule[1], sort_keys=True)) - for config_rule in running_config_rules - ] - #for running_config_rule in running_config_rules: - # LOGGER.info('[ConfigureDevice] running_config_rule: {:s}'.format(str(running_config_rule))) - update_config(self.database, device_uuid, 'running', running_config_rules) + running_config_rules = driver.GetConfig() + running_config_rules = [ + (ORM_ConfigActionEnum.SET, config_rule[0], json.dumps(config_rule[1], sort_keys=True)) + for config_rule in running_config_rules if not isinstance(config_rule[1], Exception) + ] + #for running_config_rule in running_config_rules: + # LOGGER.info('[ConfigureDevice] running_config_rule: {:s}'.format(str(running_config_rule))) + update_config(self.database, device_uuid, 'running', running_config_rules) - sync_device_to_context(db_device, self.context_client) - return DeviceId(**db_device.dump_id()) + sync_device_to_context(db_device, self.context_client) + return DeviceId(**db_device.dump_id()) + finally: + self.mutex_queues.signal_done(device_uuid) - @safe_and_metered_rpc_method(METRICS, LOGGER) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def DeleteDevice(self, request : DeviceId, context : grpc.ServicerContext) -> Empty: device_uuid = request.device_uuid.uuid - self.monitoring_loops.remove(device_uuid) - - sync_device_from_context(device_uuid, self.context_client, self.database) - db_device : DeviceModel = get_object(self.database, DeviceModel, device_uuid, raise_if_not_found=False) - if db_device is None: return Empty() - - self.driver_instance_cache.delete(device_uuid) - delete_device_from_context(db_device, self.context_client) - - for db_kpi_pk,_ in db_device.references(KpiModel): - db_kpi = get_object(self.database, KpiModel, db_kpi_pk) - for db_endpoint_monitor_kpi_pk,_ in db_kpi.references(EndPointMonitorKpiModel): - get_object(self.database, EndPointMonitorKpiModel, db_endpoint_monitor_kpi_pk).delete() - db_kpi.delete() - - for db_endpoint_pk,_ in db_device.references(EndPointModel): - db_endpoint = EndPointModel(self.database, db_endpoint_pk) - for db_endpoint_monitor_pk,_ in db_endpoint.references(EndPointMonitorModel): - get_object(self.database, EndPointMonitorModel, db_endpoint_monitor_pk).delete() - db_endpoint.delete() - - for db_driver_pk,_ in db_device.references(DriverModel): - get_object(self.database, DriverModel, db_driver_pk).delete() - - db_initial_config = ConfigModel(self.database, db_device.device_initial_config_fk) - for db_config_rule_pk,_ in db_initial_config.references(ConfigRuleModel): - get_object(self.database, ConfigRuleModel, db_config_rule_pk).delete() - - db_running_config = ConfigModel(self.database, db_device.device_running_config_fk) - for db_config_rule_pk,_ in db_running_config.references(ConfigRuleModel): - get_object(self.database, ConfigRuleModel, db_config_rule_pk).delete() - - db_device.delete() - db_initial_config.delete() - db_running_config.delete() - return Empty() + self.mutex_queues.wait_my_turn(device_uuid) + try: + self.monitoring_loops.remove(device_uuid) - @safe_and_metered_rpc_method(METRICS, LOGGER) + sync_device_from_context(device_uuid, self.context_client, self.database) + db_device : DeviceModel = get_object(self.database, DeviceModel, device_uuid, raise_if_not_found=False) + if db_device is None: return Empty() + + self.driver_instance_cache.delete(device_uuid) + delete_device_from_context(db_device, self.context_client) + + for db_kpi_pk,_ in db_device.references(KpiModel): + db_kpi = get_object(self.database, KpiModel, db_kpi_pk) + for db_endpoint_monitor_kpi_pk,_ in db_kpi.references(EndPointMonitorKpiModel): + get_object(self.database, EndPointMonitorKpiModel, db_endpoint_monitor_kpi_pk).delete() + db_kpi.delete() + + for db_endpoint_pk,_ in db_device.references(EndPointModel): + db_endpoint = EndPointModel(self.database, db_endpoint_pk) + for db_endpoint_monitor_pk,_ in db_endpoint.references(EndPointMonitorModel): + get_object(self.database, EndPointMonitorModel, db_endpoint_monitor_pk).delete() + db_endpoint.delete() + + for db_driver_pk,_ in db_device.references(DriverModel): + get_object(self.database, DriverModel, db_driver_pk).delete() + + db_initial_config = ConfigModel(self.database, db_device.device_initial_config_fk) + for db_config_rule_pk,_ in db_initial_config.references(ConfigRuleModel): + get_object(self.database, ConfigRuleModel, db_config_rule_pk).delete() + + db_running_config = ConfigModel(self.database, db_device.device_running_config_fk) + for db_config_rule_pk,_ in db_running_config.references(ConfigRuleModel): + get_object(self.database, ConfigRuleModel, db_config_rule_pk).delete() + + db_device.delete() + db_initial_config.delete() + db_running_config.delete() + return Empty() + finally: + self.mutex_queues.signal_done(device_uuid) + + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetInitialConfig(self, request : DeviceId, context : grpc.ServicerContext) -> DeviceConfig: device_uuid = request.device_uuid.uuid - sync_device_from_context(device_uuid, self.context_client, self.database) - db_device : DeviceModel = get_object(self.database, DeviceModel, device_uuid, raise_if_not_found=False) + self.mutex_queues.wait_my_turn(device_uuid) + try: + sync_device_from_context(device_uuid, self.context_client, self.database) + db_device : DeviceModel = get_object(self.database, DeviceModel, device_uuid, raise_if_not_found=False) - config_rules = {} if db_device is None else db_device.dump_initial_config() - return DeviceConfig(config_rules=config_rules) + config_rules = {} if db_device is None else db_device.dump_initial_config() + device_config = DeviceConfig(config_rules=config_rules) + return device_config + finally: + self.mutex_queues.signal_done(device_uuid) - @safe_and_metered_rpc_method(METRICS, LOGGER) + @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def MonitorDeviceKpi(self, request : MonitoringSettings, context : grpc.ServicerContext) -> Empty: kpi_uuid = request.kpi_id.kpi_id.uuid + device_uuid = request.kpi_descriptor.device_id.device_uuid.uuid + self.mutex_queues.wait_my_turn(device_uuid) + try: + subscribe = (request.sampling_duration_s > 0.0) and (request.sampling_interval_s > 0.0) + if subscribe: + db_device : DeviceModel = get_object(self.database, DeviceModel, device_uuid, raise_if_not_found=False) + if db_device is None: + msg = 'Device({:s}) has not been added to this Device instance.'.format(str(device_uuid)) + raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) + + endpoint_id = request.kpi_descriptor.endpoint_id + endpoint_uuid = endpoint_id.endpoint_uuid.uuid + str_endpoint_key = key_to_str([device_uuid, endpoint_uuid]) + endpoint_topology_context_uuid = endpoint_id.topology_id.context_id.context_uuid.uuid + endpoint_topology_uuid = endpoint_id.topology_id.topology_uuid.uuid + if len(endpoint_topology_context_uuid) > 0 and len(endpoint_topology_uuid) > 0: + str_topology_key = key_to_str([endpoint_topology_context_uuid, endpoint_topology_uuid]) + str_endpoint_key = key_to_str([str_endpoint_key, str_topology_key], separator=':') + db_endpoint : EndPointModel = get_object( + self.database, EndPointModel, str_endpoint_key, raise_if_not_found=False) + if db_endpoint is None: + msg = 'Device({:s})/EndPoint({:s}) not found. EndPointKey({:s})'.format( + str(device_uuid), str(endpoint_uuid), str(str_endpoint_key)) + raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) + + driver : _Driver = self.driver_instance_cache.get(device_uuid) + if driver is None: + msg = 'Device({:s}) has not been added to this Device instance'.format(str(device_uuid)) + raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) + + sample_type = request.kpi_descriptor.kpi_sample_type + + attributes = { + 'kpi_uuid' : request.kpi_id.kpi_id.uuid, + 'kpi_description' : request.kpi_descriptor.kpi_description, + 'kpi_sample_type' : grpc_to_enum__kpi_sample_type(sample_type), + 'device_fk' : db_device, + 'endpoint_fk' : db_endpoint, + 'sampling_duration': request.sampling_duration_s, + 'sampling_interval': request.sampling_interval_s, + } + result : Tuple[KpiModel, bool] = update_or_create_object(self.database, KpiModel, kpi_uuid, attributes) + db_kpi, updated = result + + str_endpoint_monitor_key = key_to_str([str_endpoint_key, str(sample_type)]) + db_endpoint_monitor : EndPointMonitorModel = get_object( + self.database, EndPointMonitorModel, str_endpoint_monitor_key, raise_if_not_found=False) + if db_endpoint_monitor is None: + msg = 'SampleType({:s}/{:s}) not supported for Device({:s})/EndPoint({:s}).'.format( + str(sample_type), str(KpiSampleType.Name(sample_type).upper().replace('KPISAMPLETYPE_', '')), + str(device_uuid), str(endpoint_uuid)) + raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) + + endpoint_monitor_resource_key = re.sub('[^A-Za-z0-9]', '.', db_endpoint_monitor.resource_key) + str_endpoint_monitor_kpi_key = key_to_str([device_uuid, endpoint_monitor_resource_key], separator=':') + attributes = { + 'endpoint_monitor_fk': db_endpoint_monitor, + 'kpi_fk' : db_kpi, + } + result : Tuple[EndPointMonitorKpiModel, bool] = update_or_create_object( + self.database, EndPointMonitorKpiModel, str_endpoint_monitor_kpi_key, attributes) + db_endpoint_monitor_kpi, updated = result + + resources_to_subscribe : List[Tuple[str, float, float]] = [] # key, sampling_duration, sampling_interval + resources_to_subscribe.append( + (db_endpoint_monitor.resource_key, db_kpi.sampling_duration, db_kpi.sampling_interval)) + results_subscribestate = driver.SubscribeState(resources_to_subscribe) + errors = check_subscribe_errors(resources_to_subscribe, results_subscribestate) + if len(errors) > 0: raise OperationFailedException('MonitorDeviceKpi', extra_details=errors) + + self.monitoring_loops.add(device_uuid, driver) - subscribe = (request.sampling_duration_s > 0.0) and (request.sampling_interval_s > 0.0) - if subscribe: - device_uuid = request.kpi_descriptor.device_id.device_uuid.uuid - - db_device : DeviceModel = get_object(self.database, DeviceModel, device_uuid, raise_if_not_found=False) - if db_device is None: - msg = 'Device({:s}) has not been added to this Device instance.'.format(str(device_uuid)) - raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) - - endpoint_id = request.kpi_descriptor.endpoint_id - endpoint_uuid = endpoint_id.endpoint_uuid.uuid - str_endpoint_key = key_to_str([device_uuid, endpoint_uuid]) - endpoint_topology_context_uuid = endpoint_id.topology_id.context_id.context_uuid.uuid - endpoint_topology_uuid = endpoint_id.topology_id.topology_uuid.uuid - if len(endpoint_topology_context_uuid) > 0 and len(endpoint_topology_uuid) > 0: - str_topology_key = key_to_str([endpoint_topology_context_uuid, endpoint_topology_uuid]) - str_endpoint_key = key_to_str([str_endpoint_key, str_topology_key], separator=':') - db_endpoint : EndPointModel = get_object( - self.database, EndPointModel, str_endpoint_key, raise_if_not_found=False) - if db_endpoint is None: - msg = 'Device({:s})/EndPoint({:s}) not found. EndPointKey({:s})'.format( - str(device_uuid), str(endpoint_uuid), str(str_endpoint_key)) - raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) - - driver : _Driver = self.driver_instance_cache.get(device_uuid) - if driver is None: - msg = 'Device({:s}) has not been added to this Device instance'.format(str(device_uuid)) - raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) - - sample_type = request.kpi_descriptor.kpi_sample_type - - attributes = { - 'kpi_uuid' : request.kpi_id.kpi_id.uuid, - 'kpi_description' : request.kpi_descriptor.kpi_description, - 'kpi_sample_type' : grpc_to_enum__kpi_sample_type(sample_type), - 'device_fk' : db_device, - 'endpoint_fk' : db_endpoint, - 'sampling_duration': request.sampling_duration_s, - 'sampling_interval': request.sampling_interval_s, - } - result : Tuple[KpiModel, bool] = update_or_create_object(self.database, KpiModel, kpi_uuid, attributes) - db_kpi, updated = result - - str_endpoint_monitor_key = key_to_str([str_endpoint_key, str(sample_type)]) - db_endpoint_monitor : EndPointMonitorModel = get_object( - self.database, EndPointMonitorModel, str_endpoint_monitor_key, raise_if_not_found=False) - if db_endpoint_monitor is None: - msg = 'SampleType({:s}/{:s}) not supported for Device({:s})/EndPoint({:s}).'.format( - str(sample_type), str(KpiSampleType.Name(sample_type).upper().replace('KPISAMPLETYPE_', '')), - str(device_uuid), str(endpoint_uuid)) - raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) - - endpoint_monitor_resource_key = re.sub('[^A-Za-z0-9]', '.', db_endpoint_monitor.resource_key) - str_endpoint_monitor_kpi_key = key_to_str([device_uuid, endpoint_monitor_resource_key], separator=':') - attributes = { - 'endpoint_monitor_fk': db_endpoint_monitor, - 'kpi_fk' : db_kpi, - } - result : Tuple[EndPointMonitorKpiModel, bool] = update_or_create_object( - self.database, EndPointMonitorKpiModel, str_endpoint_monitor_kpi_key, attributes) - db_endpoint_monitor_kpi, updated = result - - resources_to_subscribe : List[Tuple[str, float, float]] = [] # key, sampling_duration, sampling_interval - resources_to_subscribe.append( - (db_endpoint_monitor.resource_key, db_kpi.sampling_duration, db_kpi.sampling_interval)) - results_subscribestate = driver.SubscribeState(resources_to_subscribe) - errors = check_subscribe_errors(resources_to_subscribe, results_subscribestate) - if len(errors) > 0: raise OperationFailedException('MonitorDeviceKpi', extra_details=errors) - - self.monitoring_loops.add(device_uuid, driver) - - else: - db_kpi : KpiModel = get_object( - self.database, KpiModel, kpi_uuid, raise_if_not_found=False) - if db_kpi is None: - msg = 'Kpi({:s}) not found'.format(str(kpi_uuid)) - raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) - - db_device : DeviceModel = get_object( - self.database, DeviceModel, db_kpi.device_fk, raise_if_not_found=False) - if db_device is None: - msg = 'Device({:s}) not found'.format(str(db_kpi.device_fk)) - raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) - device_uuid = db_device.device_uuid - - db_endpoint : EndPointModel = get_object( - self.database, EndPointModel, db_kpi.endpoint_fk, raise_if_not_found=False) - if db_endpoint is None: - msg = 'EndPoint({:s}) not found'.format(str(db_kpi.endpoint_fk)) - raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) - endpoint_uuid = db_endpoint.endpoint_uuid - str_endpoint_key = db_endpoint.pk - - kpi_sample_type : ORM_KpiSampleTypeEnum = db_kpi.kpi_sample_type - sample_type = kpi_sample_type.value - str_endpoint_monitor_key = key_to_str([str_endpoint_key, str(sample_type)]) - db_endpoint_monitor : EndPointMonitorModel = get_object( - self.database, EndPointMonitorModel, str_endpoint_monitor_key, raise_if_not_found=False) - if db_endpoint_monitor is None: - msg = 'EndPointMonitor({:s}) not found.'.format(str(str_endpoint_monitor_key)) - raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) - - endpoint_monitor_resource_key = re.sub('[^A-Za-z0-9]', '.', db_endpoint_monitor.resource_key) - str_endpoint_monitor_kpi_key = key_to_str([device_uuid, endpoint_monitor_resource_key], separator=':') - db_endpoint_monitor_kpi : EndPointMonitorKpiModel = get_object( - self.database, EndPointMonitorKpiModel, str_endpoint_monitor_kpi_key, raise_if_not_found=False) - if db_endpoint_monitor_kpi is None: - msg = 'EndPointMonitorKpi({:s}) not found.'.format(str(str_endpoint_monitor_kpi_key)) - raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) - - resources_to_unsubscribe : List[Tuple[str, float, float]] = [] # key, sampling_duration, sampling_interval - resources_to_unsubscribe.append( - (db_endpoint_monitor.resource_key, db_kpi.sampling_duration, db_kpi.sampling_interval)) - - driver : _Driver = self.driver_instance_cache.get(device_uuid) - if driver is None: - msg = 'Device({:s}) has not been added to this Device instance'.format(str(device_uuid)) - raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) - - results_unsubscribestate = driver.UnsubscribeState(resources_to_unsubscribe) - errors = check_unsubscribe_errors(resources_to_unsubscribe, results_unsubscribestate) - if len(errors) > 0: raise OperationFailedException('MonitorDeviceKpi', extra_details=errors) - - db_endpoint_monitor_kpi.delete() - db_kpi.delete() - - # There is one monitoring loop per device; keep them active since they are re-used by different monitoring - # requests. - #self.monitoring_loops.remove(device_uuid) - - # Subscriptions are not stored as classical driver config. - # TODO: consider adding it somehow in the configuration. - # Warning: GetConfig might be very slow in OpenConfig devices - #running_config_rules = [ - # (config_rule[0], json.dumps(config_rule[1], sort_keys=True)) - # for config_rule in driver.GetConfig() - #] - #context_config_rules = { - # config_rule[1]: config_rule[2] - # for config_rule in get_config_rules(self.database, device_uuid, 'running') - #} - - ## each in context, not in running => delete in context - ## each in running, not in context => add to context - ## each in context and in running, context.value != running.value => update in context - #running_config_rules_actions : List[Tuple[ORM_ConfigActionEnum, str, str]] = [] - #for config_rule_key,config_rule_value in running_config_rules: - # running_config_rules_actions.append((ORM_ConfigActionEnum.SET, config_rule_key, config_rule_value)) - # context_config_rules.pop(config_rule_key, None) - #for context_rule_key,context_rule_value in context_config_rules.items(): - # running_config_rules_actions.append((ORM_ConfigActionEnum.DELETE, context_rule_key, context_rule_value)) - - ##msg = '[MonitorDeviceKpi] running_config_rules_action[{:d}]: {:s}' - ##for i,running_config_rules_action in enumerate(running_config_rules_actions): - ## LOGGER.info(msg.format(i, str(running_config_rules_action))) - #update_config(self.database, device_uuid, 'running', running_config_rules_actions) - - sync_device_to_context(db_device, self.context_client) - return Empty() + else: + db_kpi : KpiModel = get_object( + self.database, KpiModel, kpi_uuid, raise_if_not_found=False) + if db_kpi is None: + msg = 'Kpi({:s}) not found'.format(str(kpi_uuid)) + raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) + + db_device : DeviceModel = get_object( + self.database, DeviceModel, db_kpi.device_fk, raise_if_not_found=False) + if db_device is None: + msg = 'Device({:s}) not found'.format(str(db_kpi.device_fk)) + raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) + device_uuid = db_device.device_uuid + + db_endpoint : EndPointModel = get_object( + self.database, EndPointModel, db_kpi.endpoint_fk, raise_if_not_found=False) + if db_endpoint is None: + msg = 'EndPoint({:s}) not found'.format(str(db_kpi.endpoint_fk)) + raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) + endpoint_uuid = db_endpoint.endpoint_uuid + str_endpoint_key = db_endpoint.pk + + kpi_sample_type : ORM_KpiSampleTypeEnum = db_kpi.kpi_sample_type + sample_type = kpi_sample_type.value + str_endpoint_monitor_key = key_to_str([str_endpoint_key, str(sample_type)]) + db_endpoint_monitor : EndPointMonitorModel = get_object( + self.database, EndPointMonitorModel, str_endpoint_monitor_key, raise_if_not_found=False) + if db_endpoint_monitor is None: + msg = 'EndPointMonitor({:s}) not found.'.format(str(str_endpoint_monitor_key)) + raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) + + endpoint_monitor_resource_key = re.sub('[^A-Za-z0-9]', '.', db_endpoint_monitor.resource_key) + str_endpoint_monitor_kpi_key = key_to_str([device_uuid, endpoint_monitor_resource_key], separator=':') + db_endpoint_monitor_kpi : EndPointMonitorKpiModel = get_object( + self.database, EndPointMonitorKpiModel, str_endpoint_monitor_kpi_key, raise_if_not_found=False) + if db_endpoint_monitor_kpi is None: + msg = 'EndPointMonitorKpi({:s}) not found.'.format(str(str_endpoint_monitor_kpi_key)) + raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) + + resources_to_unsubscribe : List[Tuple[str, float, float]] = [] # key, sampling_duration, sampling_interval + resources_to_unsubscribe.append( + (db_endpoint_monitor.resource_key, db_kpi.sampling_duration, db_kpi.sampling_interval)) + + driver : _Driver = self.driver_instance_cache.get(device_uuid) + if driver is None: + msg = 'Device({:s}) has not been added to this Device instance'.format(str(device_uuid)) + raise OperationFailedException('MonitorDeviceKpi', extra_details=msg) + + results_unsubscribestate = driver.UnsubscribeState(resources_to_unsubscribe) + errors = check_unsubscribe_errors(resources_to_unsubscribe, results_unsubscribestate) + if len(errors) > 0: raise OperationFailedException('MonitorDeviceKpi', extra_details=errors) + + db_endpoint_monitor_kpi.delete() + db_kpi.delete() + + # There is one monitoring loop per device; keep them active since they are re-used by different monitoring + # requests. + #self.monitoring_loops.remove(device_uuid) + + # Subscriptions are not stored as classical driver config. + # TODO: consider adding it somehow in the configuration. + # Warning: GetConfig might be very slow in OpenConfig devices + #running_config_rules = [ + # (config_rule[0], json.dumps(config_rule[1], sort_keys=True)) + # for config_rule in driver.GetConfig() + #] + #context_config_rules = { + # config_rule[1]: config_rule[2] + # for config_rule in get_config_rules(self.database, device_uuid, 'running') + #} + + ## each in context, not in running => delete in context + ## each in running, not in context => add to context + ## each in context and in running, context.value != running.value => update in context + #running_config_rules_actions : List[Tuple[ORM_ConfigActionEnum, str, str]] = [] + #for config_rule_key,config_rule_value in running_config_rules: + # running_config_rules_actions.append((ORM_ConfigActionEnum.SET, config_rule_key, config_rule_value)) + # context_config_rules.pop(config_rule_key, None) + #for context_rule_key,context_rule_value in context_config_rules.items(): + # running_config_rules_actions.append((ORM_ConfigActionEnum.DELETE, context_rule_key, context_rule_value)) + + ##msg = '[MonitorDeviceKpi] running_config_rules_action[{:d}]: {:s}' + ##for i,running_config_rules_action in enumerate(running_config_rules_actions): + ## LOGGER.info(msg.format(i, str(running_config_rules_action))) + #update_config(self.database, device_uuid, 'running', running_config_rules_actions) + + sync_device_to_context(db_device, self.context_client) + return Empty() + finally: + self.mutex_queues.signal_done(device_uuid) diff --git a/src/device/service/__main__.py b/src/device/service/__main__.py index 1f0adfa8f1dd8b3e307ed202967b1d5195171f11..5c9b41531e7bc579cbe5cc563f20b193f6bc5a90 100644 --- a/src/device/service/__main__.py +++ b/src/device/service/__main__.py @@ -34,7 +34,7 @@ def main(): global LOGGER # pylint: disable=global-statement log_level = get_log_level() - logging.basicConfig(level=log_level) + logging.basicConfig(level=log_level, format="[%(asctime)s] %(levelname)s:%(name)s:%(message)s") logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING) logging.getLogger('apscheduler.scheduler').setLevel(logging.WARNING) logging.getLogger('monitoring-client').setLevel(logging.WARNING) diff --git a/src/device/service/database/ContextModel.py b/src/device/service/database/ContextModel.py index 0ca13269c52d02ea663e10be986ab28d12d8f144..a609e1ba9189f5359064e6628cba6c08d353770e 100644 --- a/src/device/service/database/ContextModel.py +++ b/src/device/service/database/ContextModel.py @@ -24,15 +24,15 @@ class ContextModel(Model): pk = PrimaryKeyField() context_uuid = StringField(required=True, allow_empty=False) -# def dump_id(self) -> Dict: -# return {'context_uuid': {'uuid': self.context_uuid}} + def dump_id(self) -> Dict: + return {'context_uuid': {'uuid': self.context_uuid}} -# def dump_topology_ids(self) -> List[Dict]: -# from .TopologyModel import TopologyModel # pylint: disable=import-outside-toplevel -# db_topology_pks = self.references(TopologyModel) -# return [TopologyModel(self.database, pk).dump_id() for pk,_ in db_topology_pks] + def dump_topology_ids(self) -> List[Dict]: + from .TopologyModel import TopologyModel # pylint: disable=import-outside-toplevel + db_topology_pks = self.references(TopologyModel) + return [TopologyModel(self.database, pk).dump_id() for pk,_ in db_topology_pks] -# def dump(self, include_topologies=True) -> Dict: # pylint: disable=arguments-differ -# result = {'context_id': self.dump_id()} -# if include_topologies: result['topology_ids'] = self.dump_topology_ids() -# return result + def dump(self, include_topologies=False) -> Dict: # pylint: disable=arguments-differ + result = {'context_id': self.dump_id()} + if include_topologies: result['topology_ids'] = self.dump_topology_ids() + return result diff --git a/src/device/service/database/DatabaseTools.py b/src/device/service/database/DatabaseTools.py index 4409f078b78b7369702e262ec7e371adcd35a7cd..9d3b712cade921849a5b34be3a837e4f6697b76f 100644 --- a/src/device/service/database/DatabaseTools.py +++ b/src/device/service/database/DatabaseTools.py @@ -14,11 +14,11 @@ import grpc from typing import Any, Dict, Tuple +from common.method_wrappers.ServiceExceptions import InvalidArgumentException from common.orm.Database import Database from common.orm.HighLevel import get_or_create_object, update_or_create_object from common.orm.backend.Tools import key_to_str from common.proto.context_pb2 import Device, DeviceId -from common.rpc_method_wrapper.ServiceExceptions import InvalidArgumentException from context.client.ContextClient import ContextClient from device.service.driver_api.FilterFields import FilterFieldEnum from .ConfigModel import delete_all_config_rules, grpc_config_rules_to_raw, update_config diff --git a/src/device/service/database/DeviceModel.py b/src/device/service/database/DeviceModel.py index 7a0a2325928ed7312063eb66d629a08cc7591b7b..9dd63d36efebf135b7bb38845d917bc9e03dc100 100644 --- a/src/device/service/database/DeviceModel.py +++ b/src/device/service/database/DeviceModel.py @@ -35,6 +35,7 @@ class ORM_DeviceDriverEnum(Enum): P4 = DeviceDriverEnum.DEVICEDRIVER_P4 IETF_NETWORK_TOPOLOGY = DeviceDriverEnum.DEVICEDRIVER_IETF_NETWORK_TOPOLOGY ONF_TR_352 = DeviceDriverEnum.DEVICEDRIVER_ONF_TR_352 + XR = DeviceDriverEnum.DEVICEDRIVER_XR grpc_to_enum__device_driver = functools.partial( grpc_to_enum, DeviceDriverEnum, ORM_DeviceDriverEnum) diff --git a/src/device/service/database/EndPointModel.py b/src/device/service/database/EndPointModel.py index 84d0c97073481af162b1e66f7e35c93bc6e1eed5..3d4435737349809c527c80546ed412e621afcbdd 100644 --- a/src/device/service/database/EndPointModel.py +++ b/src/device/service/database/EndPointModel.py @@ -34,7 +34,6 @@ class EndPointModel(Model): device_fk = ForeignKeyField(DeviceModel) endpoint_uuid = StringField(required=True, allow_empty=False) endpoint_type = StringField() - resource_key = StringField(required=True, allow_empty=False) def dump_id(self) -> Dict: device_id = DeviceModel(self.database, self.device_fk).dump_id() @@ -74,13 +73,7 @@ def set_endpoint_monitors(database : Database, db_endpoint : EndPointModel, grpc for kpi_sample_type in grpc_endpoint_kpi_sample_types: orm_kpi_sample_type = grpc_to_enum__kpi_sample_type(kpi_sample_type) str_endpoint_kpi_sample_type_key = key_to_str([db_endpoint_pk, str(orm_kpi_sample_type.value)]) - #db_endpoint_kpi_sample_type = EndPointMonitorModel(database, str_endpoint_kpi_sample_type_key) - #db_endpoint_kpi_sample_type.endpoint_fk = db_endpoint - #db_endpoint_kpi_sample_type.resource_key = '' # during initialization, allow empty value - #db_endpoint_kpi_sample_type.kpi_sample_type = orm_kpi_sample_type - #db_endpoint_kpi_sample_type.save() update_or_create_object(database, EndPointMonitorModel, str_endpoint_kpi_sample_type_key, { 'endpoint_fk' : db_endpoint, - #'resource_key' : '', # during initialization, allow empty value 'kpi_sample_type': orm_kpi_sample_type, }) diff --git a/src/device/service/database/TopologyModel.py b/src/device/service/database/TopologyModel.py index a099c8adfd8bb64d94c8326c90094f39d7fe9b6b..f9e9c0b1a26fdf8faca7e1cbe0a64b582bdd4d5d 100644 --- a/src/device/service/database/TopologyModel.py +++ b/src/device/service/database/TopologyModel.py @@ -27,13 +27,13 @@ class TopologyModel(Model): context_fk = ForeignKeyField(ContextModel) topology_uuid = StringField(required=True, allow_empty=False) -# def dump_id(self) -> Dict: -# context_id = ContextModel(self.database, self.context_fk).dump_id() -# return { -# 'context_id': context_id, -# 'topology_uuid': {'uuid': self.topology_uuid}, -# } + def dump_id(self) -> Dict: + context_id = ContextModel(self.database, self.context_fk).dump_id() + return { + 'context_id': context_id, + 'topology_uuid': {'uuid': self.topology_uuid}, + } -# def dump(self) -> Dict: -# result = {'topology_id': self.dump_id()} -# return result + def dump(self) -> Dict: + result = {'topology_id': self.dump_id()} + return result diff --git a/src/device/service/driver_api/_Driver.py b/src/device/service/driver_api/_Driver.py index 7dbb9eddb238dcaae9d00b579a1851aacf53225d..371f4cccb4e002e4d232823e47e31f577d1a4285 100644 --- a/src/device/service/driver_api/_Driver.py +++ b/src/device/service/driver_api/_Driver.py @@ -15,16 +15,18 @@ import threading from typing import Any, Iterator, List, Optional, Tuple, Union -# Special resource names to request to the driver to retrieve the specified configuration/structural resources. +# Special resource names to request to the driver to retrieve the specified +# configuration/structural resources. # These resource names should be used with GetConfig() method. -RESOURCE_ENDPOINTS = '__endpoints__' -RESOURCE_INTERFACES = '__interfaces__' +RESOURCE_ENDPOINTS = '__endpoints__' +RESOURCE_INTERFACES = '__interfaces__' RESOURCE_NETWORK_INSTANCES = '__network_instances__' -RESOURCE_ROUTING_POLICIES = '__routing_policies__' -RESOURCE_ACL = '__acl__' +RESOURCE_ROUTING_POLICIES = '__routing_policies__' +RESOURCE_ACL = '__acl__' + class _Driver: - def __init__(self, address : str, port : int, **settings) -> None: + def __init__(self, address: str, port: int, **settings) -> None: """ Initialize Driver. Parameters: address : str @@ -56,92 +58,122 @@ class _Driver: """ Retrieve initial configuration of entire device. Returns: values : List[Tuple[str, Any]] - List of tuples (resource key, resource value) for resource keys. + List of tuples (resource key, resource value) for + resource keys. """ raise NotImplementedError() - def GetConfig(self, resource_keys : List[str] = []) -> List[Tuple[str, Union[Any, None, Exception]]]: - """ Retrieve running configuration of entire device, or selected resource keys. + def GetConfig(self, resource_keys: List[str] = []) -> \ + List[Tuple[str, Union[Any, None, Exception]]]: + """ Retrieve running configuration of entire device or + selected resource keys. Parameters: resource_keys : List[str] List of keys pointing to the resources to be retrieved. Returns: values : List[Tuple[str, Union[Any, None, Exception]]] - List of tuples (resource key, resource value) for resource keys requested. If a resource is found, - the appropriate value type must be retrieved. If a resource is not found, None must be retrieved as - value for that resource. In case of Exception, the Exception must be retrieved as value. + List of tuples (resource key, resource value) for + resource keys requested. If a resource is found, + the appropriate value type must be retrieved. + If a resource is not found, None must be retrieved as + value for that resource. In case of Exception, + the Exception must be retrieved as value. """ raise NotImplementedError() - def SetConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: + def SetConfig(self, resources: List[Tuple[str, Any]]) -> \ + List[Union[bool, Exception]]: """ Create/Update configuration for a list of resources. Parameters: resources : List[Tuple[str, Any]] - List of tuples, each containing a resource_key pointing the resource to be modified, and a - resource_value containing the new value to be set. + List of tuples, each containing a resource_key pointing the + resource to be modified, and a resource_value containing + the new value to be set. Returns: results : List[Union[bool, Exception]] - List of results for resource key changes requested. Return values must be in the same order than - resource keys requested. If a resource is properly set, True must be retrieved; otherwise, the - Exception that is raised during the processing must be retrieved. + List of results for resource key changes requested. + Return values must be in the same order as the + resource keys requested. If a resource is properly set, + True must be retrieved; otherwise, the Exception that is + raised during the processing must be retrieved. """ raise NotImplementedError() - def DeleteConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: + def DeleteConfig(self, resources: List[Tuple[str, Any]]) -> \ + List[Union[bool, Exception]]: """ Delete configuration for a list of resources. Parameters: resources : List[Tuple[str, Any]] - List of tuples, each containing a resource_key pointing the resource to be modified, and a - resource_value containing possible additionally required values to locate the value to be removed. + List of tuples, each containing a resource_key pointing the + resource to be modified, and a resource_value containing + possible additionally required values to locate + the value to be removed. Returns: - results : List[bool] - List of results for resource key deletions requested. Return values must be in the same order than - resource keys requested. If a resource is properly deleted, True must be retrieved; otherwise, the - Exception that is raised during the processing must be retrieved. + results : List[Union[bool, Exception]] + List of results for resource key deletions requested. + Return values must be in the same order as the resource keys + requested. If a resource is properly deleted, True must be + retrieved; otherwise, the Exception that is raised during + the processing must be retrieved. """ raise NotImplementedError() - def SubscribeState(self, subscriptions : List[Tuple[str, float, float]]) -> List[Union[bool, Exception]]: - """ Subscribe to state information of entire device, or selected resources. Subscriptions are incremental. + def SubscribeState(self, subscriptions: List[Tuple[str, float, float]]) -> \ + List[Union[bool, Exception]]: + """ Subscribe to state information of entire device or + selected resources. Subscriptions are incremental. Driver should keep track of requested resources. Parameters: subscriptions : List[Tuple[str, float, float]] - List of tuples, each containing a resource_key pointing the resource to be subscribed, a - sampling_duration, and a sampling_interval (both in seconds with float representation) defining, - respectively, for how long monitoring should last, and the desired monitoring interval for the - resource specified. + List of tuples, each containing a resource_key pointing the + resource to be subscribed, a sampling_duration, and a + sampling_interval (both in seconds with float + representation) defining, respectively, for how long + monitoring should last, and the desired monitoring interval + for the resource specified. Returns: - results : List[bool] - List of results for resource key subscriptions requested. Return values must be in the same order - than resource keys requested. If a resource is properly subscribed, True must be retrieved; - otherwise, the Exception that is raised during the processing must be retrieved. + results : List[Union[bool, Exception]] + List of results for resource key subscriptions requested. + Return values must be in the same order as the resource keys + requested. If a resource is properly subscribed, + True must be retrieved; otherwise, the Exception that is + raised during the processing must be retrieved. """ raise NotImplementedError() - def UnsubscribeState(self, subscriptions : List[Tuple[str, float, float]]) -> List[Union[bool, Exception]]: - """ Unsubscribe from state information of entire device, or selected resources. Subscriptions are incremental. + def UnsubscribeState(self, subscriptions: List[Tuple[str, float, float]]) \ + -> List[Union[bool, Exception]]: + """ Unsubscribe from state information of entire device + or selected resources. Subscriptions are incremental. Driver should keep track of requested resources. Parameters: subscriptions : List[str] - List of tuples, each containing a resource_key pointing the resource to be subscribed, a - sampling_duration, and a sampling_interval (both in seconds with float representation) defining, - respectively, for how long monitoring should last, and the desired monitoring interval for the - resource specified. + List of tuples, each containing a resource_key pointing the + resource to be subscribed, a sampling_duration, and a + sampling_interval (both in seconds with float + representation) defining, respectively, for how long + monitoring should last, and the desired monitoring interval + for the resource specified. Returns: results : List[Union[bool, Exception]] - List of results for resource key unsubscriptions requested. Return values must be in the same order - than resource keys requested. If a resource is properly unsubscribed, True must be retrieved; - otherwise, the Exception that is raised during the processing must be retrieved. + List of results for resource key un-subscriptions requested. + Return values must be in the same order as the resource keys + requested. If a resource is properly unsubscribed, + True must be retrieved; otherwise, the Exception that is + raised during the processing must be retrieved. """ raise NotImplementedError() def GetState( self, blocking=False, terminate : Optional[threading.Event] = None ) -> Iterator[Tuple[float, str, Any]]: - """ Retrieve last collected values for subscribed resources. Operates as a generator, so this method should be - called once and will block until values are available. When values are available, it should yield each of - them and block again until new values are available. When the driver is destroyed, GetState() can return - instead of yield to terminate the loop. Terminate enables to request interruption of the generation. + """ Retrieve last collected values for subscribed resources. + Operates as a generator, so this method should be called once and will + block until values are available. When values are available, + it should yield each of them and block again until new values are + available. When the driver is destroyed, GetState() can return instead + of yield to terminate the loop. + Terminate enables to request interruption of the generation. Examples: # keep looping waiting for extra samples (generator loop) terminate = threading.Event() @@ -161,20 +193,27 @@ class _Driver: if i == 10: terminate.set() Parameters: blocking : bool - Select the driver behaviour. In both cases, the driver will first retrieve the samples accumulated - and available in the internal queue. Then, if blocking, the driver does not terminate the loop and - waits for additional samples to come, thus behaving as a generator. If non-blocking, the driver - terminates the loop and returns. Non-blocking behaviour can be used for periodically polling the - driver, while blocking can be used when a separate thread is in charge of collecting the samples - produced by the driver. + Select the driver behaviour. In both cases, the driver will + first retrieve the samples accumulated and available in the + internal queue. Then, if blocking, the driver does not + terminate the loop and waits for additional samples to come, + thus behaving as a generator. If non-blocking, the driver + terminates the loop and returns. Non-blocking behaviour can + be used for periodically polling the driver, while blocking + can be used when a separate thread is in charge of + collecting the samples produced by the driver. terminate : threading.Event - Signals the interruption of the GetState method as soon as possible. + Signals the interruption of the GetState method as soon as + possible. Returns: results : Iterator[Tuple[float, str, Any]] - Sequences of state sample. Each State sample contains a float Unix-like timestamps of the samples in - seconds with up to microsecond resolution, the resource_key of the sample, and its resource_value. - Only resources with an active subscription must be retrieved. Interval and duration of the sampling - process are specified when creating the subscription using method SubscribeState(). Order of values - yielded is arbitrary. + Sequences of state sample. Each State sample contains a + float Unix-like timestamps of the samples in seconds with up + to microsecond resolution, the resource_key of the sample, + and its resource_value. + Only resources with an active subscription must be + retrieved. Interval and duration of the sampling process are + specified when creating the subscription using method + SubscribeState(). Order of values yielded is arbitrary. """ raise NotImplementedError() diff --git a/src/device/service/drivers/__init__.py b/src/device/service/drivers/__init__.py index 40912f50b98f1d5fc9555d87a4855a12ab8e0c07..4e4a9ac11363958fb4609976ce8609745bb97c01 100644 --- a/src/device/service/drivers/__init__.py +++ b/src/device/service/drivers/__init__.py @@ -12,58 +12,117 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os from common.DeviceTypes import DeviceTypeEnum from ..driver_api.FilterFields import FilterFieldEnum, ORM_DeviceDriverEnum -from .emulated.EmulatedDriver import EmulatedDriver -from .openconfig.OpenConfigDriver import OpenConfigDriver -from .transport_api.TransportApiDriver import TransportApiDriver -from .p4.p4_driver import P4Driver -from .microwave.IETFApiDriver import IETFApiDriver -DRIVERS = [ +TRUE_VALUES = {'T', 'TRUE', 'YES', '1'} +DEVICE_EMULATED_ONLY = os.environ.get('DEVICE_EMULATED_ONLY') +LOAD_ALL_DEVICE_DRIVERS = (DEVICE_EMULATED_ONLY is None) or (DEVICE_EMULATED_ONLY.upper() not in TRUE_VALUES) + +DRIVERS = [] + +from .emulated.EmulatedDriver import EmulatedDriver # pylint: disable=wrong-import-position +DRIVERS.append( (EmulatedDriver, [ + # TODO: multi-filter is not working { - # Driver==unspecified & no device type specified => use Emulated - FilterFieldEnum.DRIVER: ORM_DeviceDriverEnum.UNDEFINED, - }, - { - # Emulated OLS/Packet Router, specifying Undefined/OpenConfig/TAPI Driver => use EmulatedDriver FilterFieldEnum.DEVICE_TYPE: [ - DeviceTypeEnum.EMULATED_OPTICAL_LINE_SYSTEM, + DeviceTypeEnum.EMULATED_DATACENTER, + DeviceTypeEnum.EMULATED_MICROWAVE_RADIO_SYSTEM, + DeviceTypeEnum.EMULATED_OPEN_LINE_SYSTEM, + DeviceTypeEnum.EMULATED_OPTICAL_ROADM, + DeviceTypeEnum.EMULATED_OPTICAL_TRANSPONDER, + DeviceTypeEnum.EMULATED_P4_SWITCH, DeviceTypeEnum.EMULATED_PACKET_ROUTER, + DeviceTypeEnum.EMULATED_PACKET_SWITCH, + + #DeviceTypeEnum.DATACENTER, + #DeviceTypeEnum.MICROWAVE_RADIO_SYSTEM, + #DeviceTypeEnum.OPEN_LINE_SYSTEM, + #DeviceTypeEnum.OPTICAL_ROADM, + #DeviceTypeEnum.OPTICAL_TRANSPONDER, + #DeviceTypeEnum.P4_SWITCH, + #DeviceTypeEnum.PACKET_ROUTER, + #DeviceTypeEnum.PACKET_SWITCH, ], - FilterFieldEnum.DRIVER : [ + FilterFieldEnum.DRIVER: [ ORM_DeviceDriverEnum.UNDEFINED, - ORM_DeviceDriverEnum.OPENCONFIG, - ORM_DeviceDriverEnum.TRANSPORT_API ], - } - ]), - (OpenConfigDriver, [ - { - # Real Packet Router, specifying OpenConfig Driver => use OpenConfigDriver - FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.PACKET_ROUTER, - FilterFieldEnum.DRIVER : ORM_DeviceDriverEnum.OPENCONFIG, - } - ]), - (TransportApiDriver, [ - { - # Real OLS, specifying TAPI Driver => use TransportApiDriver - FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.OPTICAL_LINE_SYSTEM, - FilterFieldEnum.DRIVER : ORM_DeviceDriverEnum.TRANSPORT_API, - } - ]), - (P4Driver, [ - { - # Real P4 Switch, specifying P4 Driver => use P4Driver - FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.P4_SWITCH, - FilterFieldEnum.DRIVER : ORM_DeviceDriverEnum.P4, - } - ]), - (IETFApiDriver, [ - { - FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.MICROVAWE_RADIO_SYSTEM, - FilterFieldEnum.DRIVER : ORM_DeviceDriverEnum.IETF_NETWORK_TOPOLOGY, - } - ]), -] + }, + #{ + # # Emulated devices, all drivers => use Emulated + # FilterFieldEnum.DEVICE_TYPE: [ + # DeviceTypeEnum.EMULATED_DATACENTER, + # DeviceTypeEnum.EMULATED_MICROWAVE_RADIO_SYSTEM, + # DeviceTypeEnum.EMULATED_OPEN_LINE_SYSTEM, + # DeviceTypeEnum.EMULATED_OPTICAL_ROADM, + # DeviceTypeEnum.EMULATED_OPTICAL_TRANSPONDER, + # DeviceTypeEnum.EMULATED_P4_SWITCH, + # DeviceTypeEnum.EMULATED_PACKET_ROUTER, + # DeviceTypeEnum.EMULATED_PACKET_SWITCH, + # ], + # FilterFieldEnum.DRIVER: [ + # ORM_DeviceDriverEnum.UNDEFINED, + # ORM_DeviceDriverEnum.OPENCONFIG, + # ORM_DeviceDriverEnum.TRANSPORT_API, + # ORM_DeviceDriverEnum.P4, + # ORM_DeviceDriverEnum.IETF_NETWORK_TOPOLOGY, + # ORM_DeviceDriverEnum.ONF_TR_352, + # ], + #} + ])) + +if LOAD_ALL_DEVICE_DRIVERS: + from .openconfig.OpenConfigDriver import OpenConfigDriver # pylint: disable=wrong-import-position + DRIVERS.append( + (OpenConfigDriver, [ + { + # Real Packet Router, specifying OpenConfig Driver => use OpenConfigDriver + FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.PACKET_ROUTER, + FilterFieldEnum.DRIVER : ORM_DeviceDriverEnum.OPENCONFIG, + } + ])) + +if LOAD_ALL_DEVICE_DRIVERS: + from .transport_api.TransportApiDriver import TransportApiDriver # pylint: disable=wrong-import-position + DRIVERS.append( + (TransportApiDriver, [ + { + # Real OLS, specifying TAPI Driver => use TransportApiDriver + FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.OPEN_LINE_SYSTEM, + FilterFieldEnum.DRIVER : ORM_DeviceDriverEnum.TRANSPORT_API, + } + ])) + +if LOAD_ALL_DEVICE_DRIVERS: + from .p4.p4_driver import P4Driver # pylint: disable=wrong-import-position + DRIVERS.append( + (P4Driver, [ + { + # Real P4 Switch, specifying P4 Driver => use P4Driver + FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.P4_SWITCH, + FilterFieldEnum.DRIVER : ORM_DeviceDriverEnum.P4, + } + ])) + +if LOAD_ALL_DEVICE_DRIVERS: + from .microwave.IETFApiDriver import IETFApiDriver # pylint: disable=wrong-import-position + DRIVERS.append( + (IETFApiDriver, [ + { + FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.MICROWAVE_RADIO_SYSTEM, + FilterFieldEnum.DRIVER : ORM_DeviceDriverEnum.IETF_NETWORK_TOPOLOGY, + } + ])) + +if LOAD_ALL_DEVICE_DRIVERS: + from .xr.XrDriver import XrDriver # pylint: disable=wrong-import-position + DRIVERS.append( + (XrDriver, [ + { + # Close enough, it does optical switching + FilterFieldEnum.DEVICE_TYPE: DeviceTypeEnum.XR_CONSTELLATION, + FilterFieldEnum.DRIVER : ORM_DeviceDriverEnum.XR, + } + ])) diff --git a/src/device/service/drivers/emulated/EmulatedDriver.py b/src/device/service/drivers/emulated/EmulatedDriver.py index 2ee9a10ca93ceead96115528873c8876fadcf8ed..6029ff6604b2525b4509a24a2ec0d6f7c38513d0 100644 --- a/src/device/service/drivers/emulated/EmulatedDriver.py +++ b/src/device/service/drivers/emulated/EmulatedDriver.py @@ -19,6 +19,7 @@ from apscheduler.executors.pool import ThreadPoolExecutor from apscheduler.job import Job from apscheduler.jobstores.memory import MemoryJobStore from apscheduler.schedulers.background import BackgroundScheduler +from common.method_wrappers.Decorator import MetricTypeEnum, MetricsPool, metered_subclass_method, INF from common.type_checkers.Checkers import chk_float, chk_length, chk_string, chk_type from device.service.database.KpiSampleType import ORM_KpiSampleTypeEnum, grpc_to_enum__kpi_sample_type from device.service.driver_api._Driver import ( @@ -122,6 +123,24 @@ def do_sampling( value = abs(0.95 * waveform + 0.05 * noise) out_samples.put_nowait((timestamp, resource_key, value)) +HISTOGRAM_BUCKETS = ( + # .005, .01, .025, .05, .075, .1, .25, .5, .75, 1.0, INF + 0.0001, 0.00025, 0.00050, 0.00075, + 0.0010, 0.0025, 0.0050, 0.0075, + 0.0100, 0.0250, 0.0500, 0.0750, + 0.1000, 0.2500, 0.5000, 0.7500, + 1.0000, 2.5000, 5.0000, 7.5000, + 10.0, 25.0, 50.0, 75.0, + 100.0, INF +) +METRICS_POOL = MetricsPool('Device', 'Driver', labels={'driver': 'emulated'}) +METRICS_POOL.get_or_create('GetInitialConfig', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) +METRICS_POOL.get_or_create('GetConfig', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) +METRICS_POOL.get_or_create('SetConfig', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) +METRICS_POOL.get_or_create('DeleteConfig', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) +METRICS_POOL.get_or_create('SubscribeState', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) +METRICS_POOL.get_or_create('UnsubscribeState', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) + class EmulatedDriver(_Driver): def __init__(self, address : str, port : int, **settings) -> None: # pylint: disable=super-init-not-called self.__lock = threading.Lock() @@ -170,10 +189,12 @@ class EmulatedDriver(_Driver): self.__scheduler.shutdown() return True + @metered_subclass_method(METRICS_POOL) def GetInitialConfig(self) -> List[Tuple[str, Any]]: with self.__lock: return dump_subtree(self.__initial) + @metered_subclass_method(METRICS_POOL) def GetConfig(self, resource_keys : List[str] = []) -> List[Tuple[str, Union[Any, None, Exception]]]: chk_type('resources', resource_keys, list) with self.__lock: @@ -197,6 +218,7 @@ class EmulatedDriver(_Driver): results.extend(dump_subtree(resource_node)) return results + @metered_subclass_method(METRICS_POOL) def SetConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: chk_type('resources', resources, list) if len(resources) == 0: return [] @@ -231,6 +253,7 @@ class EmulatedDriver(_Driver): results.append(True) return results + @metered_subclass_method(METRICS_POOL) def DeleteConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: chk_type('resources', resources, list) if len(resources) == 0: return [] @@ -268,6 +291,7 @@ class EmulatedDriver(_Driver): results.append(True) return results + @metered_subclass_method(METRICS_POOL) def SubscribeState(self, subscriptions : List[Tuple[str, float, float]]) -> List[Union[bool, Exception]]: chk_type('subscriptions', subscriptions, list) if len(subscriptions) == 0: return [] @@ -305,6 +329,7 @@ class EmulatedDriver(_Driver): results.append(True) return results + @metered_subclass_method(METRICS_POOL) def UnsubscribeState(self, subscriptions : List[Tuple[str, float, float]]) -> List[Union[bool, Exception]]: chk_type('subscriptions', subscriptions, list) if len(subscriptions) == 0: return [] diff --git a/src/device/service/drivers/microwave/IETFApiDriver.py b/src/device/service/drivers/microwave/IETFApiDriver.py index 4d5ec439f4085575fc0f7fddb228d30dab3010b5..3660eb7195c96eca3d95ed16f665ba6363c3d7b5 100644 --- a/src/device/service/drivers/microwave/IETFApiDriver.py +++ b/src/device/service/drivers/microwave/IETFApiDriver.py @@ -13,7 +13,9 @@ # limitations under the License. import logging, requests, threading +from requests.auth import HTTPBasicAuth from typing import Any, Iterator, List, Optional, Tuple, Union +from common.method_wrappers.Decorator import MetricsPool, metered_subclass_method from common.type_checkers.Checkers import chk_string, chk_type from device.service.driver_api._Driver import _Driver from . import ALL_RESOURCE_KEYS @@ -21,20 +23,27 @@ from .Tools import create_connectivity_service, find_key, config_getter, delete_ LOGGER = logging.getLogger(__name__) +METRICS_POOL = MetricsPool('Device', 'Driver', labels={'driver': 'microwave'}) + class IETFApiDriver(_Driver): def __init__(self, address: str, port: int, **settings) -> None: # pylint: disable=super-init-not-called self.__lock = threading.Lock() self.__started = threading.Event() self.__terminate = threading.Event() - self.__ietf_root = 'https://' + address + ':' + str(port) + username = settings.get('username') + password = settings.get('password') + self.__auth = HTTPBasicAuth(username, password) if username is not None and password is not None else None + scheme = settings.get('scheme', 'http') + self.__ietf_root = '{:s}://{:s}:{:d}'.format(scheme, address, int(port)) self.__timeout = int(settings.get('timeout', 120)) + self.__node_ids = set(settings.get('node_ids', [])) def Connect(self) -> bool: url = self.__ietf_root + '/nmswebs/restconf/data/ietf-network:networks' with self.__lock: if self.__started.is_set(): return True try: - requests.get(url, timeout=self.__timeout, verify=False) + requests.get(url, timeout=self.__timeout, verify=False, auth=self.__auth) except requests.exceptions.Timeout: LOGGER.exception('Timeout connecting {:s}'.format(str(self.__ietf_root))) return False @@ -50,10 +59,12 @@ class IETFApiDriver(_Driver): self.__terminate.set() return True + @metered_subclass_method(METRICS_POOL) def GetInitialConfig(self) -> List[Tuple[str, Any]]: with self.__lock: return [] + @metered_subclass_method(METRICS_POOL) def GetConfig(self, resource_keys : List[str] = []) -> List[Tuple[str, Union[Any, None, Exception]]]: chk_type('resources', resource_keys, list) results = [] @@ -62,9 +73,12 @@ class IETFApiDriver(_Driver): for i, resource_key in enumerate(resource_keys): str_resource_name = 'resource_key[#{:d}]'.format(i) chk_string(str_resource_name, resource_key, allow_empty=False) - results.extend(config_getter(self.__ietf_root, resource_key, self.__timeout)) + results.extend(config_getter( + self.__ietf_root, resource_key, timeout=self.__timeout, auth=self.__auth, + node_ids=self.__node_ids)) return results + @metered_subclass_method(METRICS_POOL) def SetConfig(self, resources: List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: results = [] if len(resources) == 0: @@ -81,10 +95,12 @@ class IETFApiDriver(_Driver): uuid = find_key(resource, 'uuid') data = create_connectivity_service( - self.__ietf_root, self.__timeout, uuid, node_id_src, tp_id_src, node_id_dst, tp_id_dst, vlan_id) + self.__ietf_root, uuid, node_id_src, tp_id_src, node_id_dst, tp_id_dst, vlan_id, + timeout=self.__timeout, auth=self.__auth) results.extend(data) return results + @metered_subclass_method(METRICS_POOL) def DeleteConfig(self, resources: List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: results = [] if len(resources) == 0: return results @@ -92,13 +108,16 @@ class IETFApiDriver(_Driver): for resource in resources: LOGGER.info('resource = {:s}'.format(str(resource))) uuid = find_key(resource, 'uuid') - results.extend(delete_connectivity_service(self.__ietf_root, self.__timeout, uuid)) + results.extend(delete_connectivity_service( + self.__ietf_root, uuid, timeout=self.__timeout, auth=self.__auth)) return results + @metered_subclass_method(METRICS_POOL) def SubscribeState(self, subscriptions : List[Tuple[str, float, float]]) -> List[Union[bool, Exception]]: # TODO: IETF API Driver does not support monitoring by now return [False for _ in subscriptions] + @metered_subclass_method(METRICS_POOL) def UnsubscribeState(self, subscriptions : List[Tuple[str, float, float]]) -> List[Union[bool, Exception]]: # TODO: IETF API Driver does not support monitoring by now return [False for _ in subscriptions] diff --git a/src/device/service/drivers/microwave/Tools.py b/src/device/service/drivers/microwave/Tools.py index 93498f72d4646e1837e934903b6b3e2da6e52259..a91c60af5bf9e7057aa8f3fe9a98947f84859cd3 100644 --- a/src/device/service/drivers/microwave/Tools.py +++ b/src/device/service/drivers/microwave/Tools.py @@ -13,15 +13,25 @@ # limitations under the License. import json, logging, requests +from requests.auth import HTTPBasicAuth +from typing import Optional, Set from device.service.driver_api._Driver import RESOURCE_ENDPOINTS LOGGER = logging.getLogger(__name__) +HTTP_OK_CODES = { + 200, # OK + 201, # Created + 202, # Accepted + 204, # No Content +} def find_key(resource, key): return json.loads(resource[1])[key] # this function exports only the endpoints which are not already involved in a microwave physical link +# TODO: improvement: create a Set[Tuple[node_id:str, tp_id:str]] containing the endpoints involved in links +# TODO: exportable endpoints are those not in this set. That will prevent looping through links for every endpoint def is_exportable_endpoint(node, termination_point_id, links): # for each link we check if the endpoint (termination_point_id) is already used by an existing link for link in links: @@ -33,7 +43,10 @@ def is_exportable_endpoint(node, termination_point_id, links): return False return True -def config_getter(root_url, resource_key, timeout): +def config_getter( + root_url : str, resource_key : str, auth : Optional[HTTPBasicAuth] = None, timeout : Optional[int] = None, + node_ids : Set[str] = set() +): # getting endpoints network_name = 'SIAE-ETH-TOPOLOGY' FIELDS = ''.join([ @@ -45,51 +58,53 @@ def config_getter(root_url, resource_key, timeout): url = URL_TEMPLATE.format(root_url, network_name, FIELDS) result = [] - try: - response = requests.get(url, timeout=timeout, verify=False) - except requests.exceptions.Timeout: - LOGGER.exception('Timeout connecting {:s}'.format(url)) - except Exception as e: # pylint: disable=broad-except - LOGGER.exception('Exception retrieving {:s}'.format(resource_key)) - result.append((resource_key, e)) - else: - context = json.loads(response.content) - if resource_key == RESOURCE_ENDPOINTS: + if resource_key == RESOURCE_ENDPOINTS: + # getting existing endpoints + try: + response = requests.get(url, timeout=timeout, verify=False, auth=auth) + context = json.loads(response.content) network_instance = context.get('ietf-network:network', {}) links = network_instance.get('ietf-network-topology:link', []) - for sip in network_instance['node']: - tp = sip['ietf-network-topology:termination-point'] - node_id = sip['node-id'] - for te in tp: - tp_id = te['tp-id'] + for node in network_instance['node']: + node_id = node['node-id'] + if len(node_ids) > 0 and node_id not in node_ids: continue + tp_list = node['ietf-network-topology:termination-point'] + for tp in tp_list: + tp_id = tp['tp-id'] if not is_exportable_endpoint(node_id, tp_id, links): continue - resource_key = '/endpoints/endpoint[{:s}:{:s}]'.format(node_id,tp_id) - resource_value = {'uuid': tp_id, 'type': te['ietf-te-topology:te']['name']} + tp_uuid = '{:s}:{:s}'.format(node_id,tp_id) + resource_key = '/endpoints/endpoint[{:s}]'.format(tp_uuid) + resource_value = {'uuid': tp_uuid, 'type': tp['ietf-te-topology:te']['name']} result.append((resource_key, resource_value)) - - # getting created services - url = '{:s}/nmswebs/restconf/data/ietf-eth-tran-service:etht-svc'.format(root_url) - try: - response = requests.get(url, timeout=timeout, verify=False) - except requests.exceptions.Timeout: - LOGGER.exception('Timeout connecting {:s}'.format(url)) - except Exception as e: # pylint: disable=broad-except - LOGGER.exception('Exception retrieving {:s}'.format(resource_key)) - result.append((resource_key, e)) + except requests.exceptions.Timeout: + LOGGER.exception('Timeout connecting {:s}'.format(url)) + except Exception as e: # pylint: disable=broad-except + LOGGER.exception('Exception retrieving/parsing endpoints for {:s}'.format(resource_key)) + result.append((resource_key, e)) else: - context = json.loads(response.content) - if resource_key == RESOURCE_ENDPOINTS: + # getting created services + url = '{:s}/nmswebs/restconf/data/ietf-eth-tran-service:etht-svc'.format(root_url) + try: + response = requests.get(url, timeout=timeout, verify=False, auth=auth) + context = json.loads(response.content) etht_service = context.get('ietf-eth-tran-service:etht-svc', {}) service_instances = etht_service.get('etht-svc-instances', []) for service in service_instances: service_name = service['etht-svc-name'] resource_key = '/services/service[{:s}]'.format(service_name) - resource_value = {'uuid': service_name, 'type': service['etht-svc-type']} - result.append((resource_key, resource_value)) + result.append((resource_key, service)) + except requests.exceptions.Timeout: + LOGGER.exception('Timeout connecting {:s}'.format(url)) + except Exception as e: # pylint: disable=broad-except + LOGGER.exception('Exception retrieving/parsing services for {:s}'.format(resource_key)) + result.append((resource_key, e)) + return result def create_connectivity_service( - root_url, timeout, uuid, node_id_src, tp_id_src, node_id_dst, tp_id_dst, vlan_id): + root_url, uuid, node_id_src, tp_id_src, node_id_dst, tp_id_dst, vlan_id, + auth : Optional[HTTPBasicAuth] = None, timeout : Optional[int] = None +): url = '{:s}/nmswebs/restconf/data/ietf-eth-tran-service:etht-svc'.format(root_url) headers = {'content-type': 'application/json'} @@ -122,30 +137,31 @@ def create_connectivity_service( results = [] try: LOGGER.info('Connectivity service {:s}: {:s}'.format(str(uuid), str(data))) - response = requests.post(url=url, data=json.dumps(data), timeout=timeout, headers=headers, verify=False) + response = requests.post( + url=url, data=json.dumps(data), timeout=timeout, headers=headers, verify=False, auth=auth) LOGGER.info('Microwave Driver response: {:s}'.format(str(response))) except Exception as e: # pylint: disable=broad-except LOGGER.exception('Exception creating ConnectivityService(uuid={:s}, data={:s})'.format(str(uuid), str(data))) results.append(e) else: - if response.status_code != 201: + if response.status_code not in HTTP_OK_CODES: msg = 'Could not create ConnectivityService(uuid={:s}, data={:s}). status_code={:s} reply={:s}' LOGGER.error(msg.format(str(uuid), str(data), str(response.status_code), str(response))) - results.append(response.status_code == 201) + results.append(response.status_code in HTTP_OK_CODES) return results -def delete_connectivity_service(root_url, timeout, uuid): +def delete_connectivity_service(root_url, uuid, auth : Optional[HTTPBasicAuth] = None, timeout : Optional[int] = None): url = '{:s}/nmswebs/restconf/data/ietf-eth-tran-service:etht-svc/etht-svc-instances={:s}' url = url.format(root_url, uuid) results = [] try: - response = requests.delete(url=url, timeout=timeout, verify=False) + response = requests.delete(url=url, timeout=timeout, verify=False, auth=auth) except Exception as e: # pylint: disable=broad-except LOGGER.exception('Exception deleting ConnectivityService(uuid={:s})'.format(str(uuid))) results.append(e) else: - if response.status_code != 201: + if response.status_code not in HTTP_OK_CODES: msg = 'Could not delete ConnectivityService(uuid={:s}). status_code={:s} reply={:s}' LOGGER.error(msg.format(str(uuid), str(response.status_code), str(response))) - results.append(response.status_code == 202) + results.append(response.status_code in HTTP_OK_CODES) return results diff --git a/src/device/service/drivers/openconfig/OpenConfigDriver.py b/src/device/service/drivers/openconfig/OpenConfigDriver.py index dd41096ec25fb74f1b1b855c98f90e09fee33194..4aa42b180d9816a9ecdf37a1ec351cb52b9ba41c 100644 --- a/src/device/service/drivers/openconfig/OpenConfigDriver.py +++ b/src/device/service/drivers/openconfig/OpenConfigDriver.py @@ -21,6 +21,7 @@ from apscheduler.job import Job from apscheduler.jobstores.memory import MemoryJobStore from apscheduler.schedulers.background import BackgroundScheduler from ncclient.manager import Manager, connect_ssh +from common.method_wrappers.Decorator import MetricTypeEnum, MetricsPool, metered_subclass_method, INF from common.tools.client.RetryDecorator import delay_exponential from common.type_checkers.Checkers import chk_length, chk_string, chk_type, chk_float from device.service.driver_api.Exceptions import UnsupportedResourceKeyException @@ -61,11 +62,13 @@ class NetconfSessionHandler: self.__port = int(port) self.__username = settings.get('username') self.__password = settings.get('password') + self.__vendor = settings.get('vendor') self.__key_filename = settings.get('key_filename') self.__hostkey_verify = settings.get('hostkey_verify', True) self.__look_for_keys = settings.get('look_for_keys', True) self.__allow_agent = settings.get('allow_agent', True) self.__force_running = settings.get('force_running', False) + self.__commit_per_delete = settings.get('delete_rule', False) self.__device_params = settings.get('device_params', {}) self.__manager_params = settings.get('manager_params', {}) self.__nc_params = settings.get('nc_params', {}) @@ -90,6 +93,12 @@ class NetconfSessionHandler: @property def use_candidate(self): return self.__candidate_supported and not self.__force_running + @property + def commit_per_rule(self): return self.__commit_per_delete + + @property + def vendor(self): return self.__vendor + @RETRY_DECORATOR def get(self, filter=None, with_defaults=None): # pylint: disable=redefined-builtin with self.__lock: @@ -181,8 +190,9 @@ def do_sampling(samples_cache : SamplesCache, resource_key : str, out_samples : LOGGER.exception('Error retrieving samples') def edit_config( - netconf_handler : NetconfSessionHandler, resources : List[Tuple[str, Any]], delete=False, target='running', - default_operation='merge', test_option=None, error_option=None, format='xml' # pylint: disable=redefined-builtin + netconf_handler : NetconfSessionHandler, resources : List[Tuple[str, Any]], delete=False, commit_per_rule= False, + target='running', default_operation='merge', test_option=None, error_option=None, + format='xml' # pylint: disable=redefined-builtin ): str_method = 'DeleteConfig' if delete else 'SetConfig' LOGGER.info('[{:s}] resources = {:s}'.format(str_method, str(resources))) @@ -195,13 +205,16 @@ def edit_config( chk_length(str_resource_name, resource, min_length=2, max_length=2) resource_key,resource_value = resource chk_string(str_resource_name + '.key', resource_key, allow_empty=False) - str_config_message = compose_config(resource_key, resource_value, delete=delete) + str_config_message = compose_config( + resource_key, resource_value, delete=delete, vendor=netconf_handler.vendor) if str_config_message is None: raise UnsupportedResourceKeyException(resource_key) LOGGER.info('[{:s}] str_config_message[{:d}] = {:s}'.format( str_method, len(str_config_message), str(str_config_message))) netconf_handler.edit_config( config=str_config_message, target=target, default_operation=default_operation, test_option=test_option, error_option=error_option, format=format) + if commit_per_rule: + netconf_handler.commit() results[i] = True except Exception as e: # pylint: disable=broad-except str_operation = 'preparing' if target == 'candidate' else ('deleting' if delete else 'setting') @@ -210,6 +223,24 @@ def edit_config( results[i] = e # if validation fails, store the exception return results +HISTOGRAM_BUCKETS = ( + # .005, .01, .025, .05, .075, .1, .25, .5, .75, 1.0, INF + 0.0001, 0.00025, 0.00050, 0.00075, + 0.0010, 0.0025, 0.0050, 0.0075, + 0.0100, 0.0250, 0.0500, 0.0750, + 0.1000, 0.2500, 0.5000, 0.7500, + 1.0000, 2.5000, 5.0000, 7.5000, + 10.0, 25.0, 50.0, 75.0, + 100.0, INF +) +METRICS_POOL = MetricsPool('Device', 'Driver', labels={'driver': 'openconfig'}) +METRICS_POOL.get_or_create('GetInitialConfig', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) +METRICS_POOL.get_or_create('GetConfig', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) +METRICS_POOL.get_or_create('SetConfig', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) +METRICS_POOL.get_or_create('DeleteConfig', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) +METRICS_POOL.get_or_create('SubscribeState', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) +METRICS_POOL.get_or_create('UnsubscribeState', MetricTypeEnum.HISTOGRAM_DURATION, buckets=HISTOGRAM_BUCKETS) + class OpenConfigDriver(_Driver): def __init__(self, address : str, port : int, **settings) -> None: # pylint: disable=super-init-not-called self.__lock = threading.Lock() @@ -248,10 +279,12 @@ class OpenConfigDriver(_Driver): self.__netconf_handler.disconnect() return True + @metered_subclass_method(METRICS_POOL) def GetInitialConfig(self) -> List[Tuple[str, Any]]: with self.__lock: return [] + @metered_subclass_method(METRICS_POOL) def GetConfig(self, resource_keys : List[str] = []) -> List[Tuple[str, Union[Any, None, Exception]]]: chk_type('resources', resource_keys, list) results = [] @@ -272,38 +305,47 @@ class OpenConfigDriver(_Driver): results.append((resource_key, e)) # if validation fails, store the exception return results + @metered_subclass_method(METRICS_POOL) def SetConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: chk_type('resources', resources, list) if len(resources) == 0: return [] with self.__lock: if self.__netconf_handler.use_candidate: with self.__netconf_handler.locked(target='candidate'): - results = edit_config(self.__netconf_handler, resources, target='candidate') - try: - self.__netconf_handler.commit() - except Exception as e: # pylint: disable=broad-except - LOGGER.exception('[SetConfig] Exception commiting resources: {:s}'.format(str(resources))) - results = [e for _ in resources] # if commit fails, set exception in each resource + if self.__netconf_handler.commit_per_rule: + results = edit_config(self.__netconf_handler, resources, target='candidate', commit_per_rule= True) + else: + results = edit_config(self.__netconf_handler, resources, target='candidate') + try: + self.__netconf_handler.commit() + except Exception as e: # pylint: disable=broad-except + LOGGER.exception('[SetConfig] Exception commiting resources: {:s}'.format(str(resources))) + results = [e for _ in resources] # if commit fails, set exception in each resource else: results = edit_config(self.__netconf_handler, resources) return results + @metered_subclass_method(METRICS_POOL) def DeleteConfig(self, resources : List[Tuple[str, Any]]) -> List[Union[bool, Exception]]: chk_type('resources', resources, list) if len(resources) == 0: return [] with self.__lock: if self.__netconf_handler.use_candidate: with self.__netconf_handler.locked(target='candidate'): - results = edit_config(self.__netconf_handler, resources, target='candidate', delete=True) - try: - self.__netconf_handler.commit() - except Exception as e: # pylint: disable=broad-except - LOGGER.exception('[DeleteConfig] Exception commiting resources: {:s}'.format(str(resources))) - results = [e for _ in resources] # if commit fails, set exception in each resource + if self.__netconf_handler.commit_per_rule: + results = edit_config(self.__netconf_handler, resources, target='candidate', delete=True, commit_per_rule= True) + else: + results = edit_config(self.__netconf_handler, resources, target='candidate', delete=True) + try: + self.__netconf_handler.commit() + except Exception as e: # pylint: disable=broad-except + LOGGER.exception('[DeleteConfig] Exception commiting resources: {:s}'.format(str(resources))) + results = [e for _ in resources] # if commit fails, set exception in each resource else: results = edit_config(self.__netconf_handler, resources, delete=True) return results + @metered_subclass_method(METRICS_POOL) def SubscribeState(self, subscriptions : List[Tuple[str, float, float]]) -> List[Union[bool, Exception]]: chk_type('subscriptions', subscriptions, list) if len(subscriptions) == 0: return [] @@ -341,6 +383,7 @@ class OpenConfigDriver(_Driver): results.append(True) return results + @metered_subclass_method(METRICS_POOL) def UnsubscribeState(self, subscriptions : List[Tuple[str, float, float]]) -> List[Union[bool, Exception]]: chk_type('subscriptions', subscriptions, list) if len(subscriptions) == 0: return [] diff --git a/src/device/service/drivers/openconfig/templates/EndPoints.py b/src/device/service/drivers/openconfig/templates/EndPoints.py index c11b1669d5b4cf3ca47986817ded28f75ae8358f..9bd2e75ac4da0965c91b9154046694fd352dc4f6 100644 --- a/src/device/service/drivers/openconfig/templates/EndPoints.py +++ b/src/device/service/drivers/openconfig/templates/EndPoints.py @@ -20,7 +20,7 @@ from .Tools import add_value_from_collection, add_value_from_tag LOGGER = logging.getLogger(__name__) -XPATH_PORTS = "//ocp:components/ocp:component/ocp:state[ocp:type='PORT']/.." +XPATH_PORTS = "//ocp:components/ocp:component" XPATH_IFACE_COUNTER = "//oci:interfaces/oci:interface[oci:name='{:s}']/state/counters/{:s}" def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: @@ -28,6 +28,13 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: for xml_component in xml_data.xpath(XPATH_PORTS, namespaces=NAMESPACES): #LOGGER.info('xml_component = {:s}'.format(str(ET.tostring(xml_component)))) + component_type = xml_component.find('ocp:state/ocp:type', namespaces=NAMESPACES) + if component_type is None or component_type.text is None: continue + component_type = component_type.text + if component_type not in {'PORT', 'oc-platform-types:PORT'}: continue + + LOGGER.info('PORT xml_component = {:s}'.format(str(ET.tostring(xml_component)))) + endpoint = {} component_name = xml_component.find('ocp:name', namespaces=NAMESPACES) @@ -37,6 +44,7 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: component_type = xml_component.find( 'ocpp:port/ocpp:breakout-mode/ocpp:state/ocpp:channel-speed', namespaces=NAMESPACES) add_value_from_tag(endpoint, 'type', component_type) + if 'type' not in endpoint: endpoint['type'] = '-' sample_types = { ORM_KpiSampleTypeEnum.BYTES_RECEIVED.value : XPATH_IFACE_COUNTER.format(endpoint['uuid'], 'in-octets' ), diff --git a/src/device/service/drivers/openconfig/templates/Interfaces.py b/src/device/service/drivers/openconfig/templates/Interfaces.py index 33f977524c6f65655fbe17f6d2d95a7cfc223967..3f5b104f2de01137c2424e776dc60b8416088de6 100644 --- a/src/device/service/drivers/openconfig/templates/Interfaces.py +++ b/src/device/service/drivers/openconfig/templates/Interfaces.py @@ -37,6 +37,10 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: #interface_type = xml_interface.find('oci:config/oci:type', namespaces=NAMESPACES) #add_value_from_tag(interface, 'type', interface_type) + interface_type = xml_interface.find('oci:config/oci:type', namespaces=NAMESPACES) + interface_type.text = interface_type.text.replace('ianaift:','') + add_value_from_tag(interface, 'type', interface_type) + interface_mtu = xml_interface.find('oci:config/oci:mtu', namespaces=NAMESPACES) add_value_from_tag(interface, 'mtu', interface_mtu, cast=int) @@ -49,12 +53,15 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: subinterface = {} add_value_from_tag(subinterface, 'name', interface_name) + add_value_from_tag(subinterface, 'mtu', interface_mtu) + add_value_from_tag(subinterface, 'type', interface_type) + subinterface_index = xml_subinterface.find('oci:index', namespaces=NAMESPACES) if subinterface_index is None or subinterface_index.text is None: continue add_value_from_tag(subinterface, 'index', subinterface_index, cast=int) - vlan_id = xml_subinterface.find('ocv:vlan/ocv:config/ocv:vlan-id', namespaces=NAMESPACES) + vlan_id = xml_subinterface.find('ocv:vlan/ocv:match/ocv:single-tagged/ocv:config/ocv:vlan-id', namespaces=NAMESPACES) add_value_from_tag(subinterface, 'vlan_id', vlan_id, cast=int) # TODO: implement support for multiple IP addresses per subinterface diff --git a/src/device/service/drivers/openconfig/templates/NetworkInstances.py b/src/device/service/drivers/openconfig/templates/NetworkInstances.py index b091a0d206195a6c2ce94008628071cd9e30944f..8399402fa76b8b6b00829493cc8ebd28fd6018f4 100644 --- a/src/device/service/drivers/openconfig/templates/NetworkInstances.py +++ b/src/device/service/drivers/openconfig/templates/NetworkInstances.py @@ -27,6 +27,9 @@ XPATH_NI_IIP_AP = ".//ocni:inter-instance-policies/ocni:apply-policy" XPATH_NI_IIP_AP_IMPORT = ".//ocni:config/ocni:import-policy" XPATH_NI_IIP_AP_EXPORT = ".//ocni:config/ocni:export-policy" +XPATH_NI_CPOINTS = ".//ocni:connection-points/ocni:connection-point" +XPATH_NI_CPOINTS_ENDPOINT = ".//ocni:endpoints/ocni:endpoint/ocni:remote/ocni:config" + def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: response = [] for xml_network_instance in xml_data.xpath(XPATH_NETWORK_INSTANCES, namespaces=NAMESPACES): @@ -39,10 +42,11 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: add_value_from_tag(network_instance, 'name', ni_name) ni_type = xml_network_instance.find('ocni:config/ocni:type', namespaces=NAMESPACES) + ni_type.text = ni_type.text.replace('oc-ni-types:','') add_value_from_tag(network_instance, 'type', ni_type) - #ni_router_id = xml_network_instance.find('ocni:config/ocni:router-id', namespaces=NAMESPACES) - #add_value_from_tag(network_instance, 'router_id', ni_router_id) + ni_router_id = xml_network_instance.find('ocni:config/ocni:router-id', namespaces=NAMESPACES) + add_value_from_tag(network_instance, 'router_id', ni_router_id) ni_route_dist = xml_network_instance.find('ocni:config/ocni:route-distinguisher', namespaces=NAMESPACES) add_value_from_tag(network_instance, 'route_distinguisher', ni_route_dist) @@ -53,6 +57,20 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: if len(network_instance) == 0: continue response.append(('/network_instance[{:s}]'.format(network_instance['name']), network_instance)) + for xml_cpoints in xml_network_instance.xpath(XPATH_NI_PROTOCOLS, namespaces=NAMESPACES): + cpoint = {} + add_value_from_tag(cpoint, 'name', ni_name) + + connection_point = xml_cpoints.find('ocni:connection-point-id', namespaces=NAMESPACES) + add_value_from_tag(cpoint, 'connection_point', connection_point) + + for xml_endpoint in xml_cpoints.xpath(XPATH_NI_CPOINTS_ENDPOINT, namespaces=NAMESPACES): + remote_system = xml_endpoint.find('ocni:remote-system', namespaces=NAMESPACES) + add_value_from_tag(cpoint, 'remote_system', remote_system) + + VC_ID = xml_endpoint.find('ocni:virtual-circuit-identifier', namespaces=NAMESPACES) + add_value_from_tag(cpoint, 'VC_ID', VC_ID) + for xml_protocol in xml_network_instance.xpath(XPATH_NI_PROTOCOLS, namespaces=NAMESPACES): #LOGGER.info('xml_protocol = {:s}'.format(str(ET.tostring(xml_protocol)))) @@ -71,6 +89,8 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: if protocol['identifier'] == 'BGP': bgp_as = xml_protocol.find('ocni:bgp/ocni:global/ocni:config/ocni:as', namespaces=NAMESPACES) add_value_from_tag(protocol, 'as', bgp_as, cast=int) + bgp_id = xml_protocol.find('ocni:bgp/ocni:global/ocni:config/ocni:router-id', namespaces=NAMESPACES) + add_value_from_tag(protocol, 'router_id', bgp_id) resource_key = '/network_instance[{:s}]/protocols[{:s}]'.format( network_instance['name'], protocol['identifier']) @@ -94,7 +114,7 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: add_value_from_tag(table_connection, 'address_family', address_family, cast=lambda s: s.replace('oc-types:', '')) - default_import_policy = xml_table_connection.find('ocni:default-import-policy', namespaces=NAMESPACES) + default_import_policy = xml_table_connection.find('ocni:config/ocni:default-import-policy', namespaces=NAMESPACES) add_value_from_tag(table_connection, 'default_import_policy', default_import_policy) resource_key = '/network_instance[{:s}]/table_connections[{:s}][{:s}][{:s}]'.format( @@ -125,4 +145,7 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: iip_ap['name'], iip_ap['export_policy']) response.append((resource_key, iip_ap)) + + + return response diff --git a/src/device/service/drivers/openconfig/templates/RoutingPolicy.py b/src/device/service/drivers/openconfig/templates/RoutingPolicy.py index 369732de3fe58c52a2e9ab2227899160d091ff68..068ca5430d9135e784dbe9a07f80d81472cbf5cc 100644 --- a/src/device/service/drivers/openconfig/templates/RoutingPolicy.py +++ b/src/device/service/drivers/openconfig/templates/RoutingPolicy.py @@ -74,7 +74,7 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: resource_key = '/routing_policy/bgp_defined_set[{:s}]'.format(bgp_ext_community_set['ext_community_set_name']) response.append((resource_key, copy.deepcopy(bgp_ext_community_set))) - ext_community_member = xml_bgp_ext_community_set.find('ocbp:ext-community-member', namespaces=NAMESPACES) + ext_community_member = xml_bgp_ext_community_set.find('ocbp:config/ocbp:ext-community-member', namespaces=NAMESPACES) if ext_community_member is not None and ext_community_member.text is not None: add_value_from_tag(bgp_ext_community_set, 'ext_community_member', ext_community_member) diff --git a/src/device/service/drivers/openconfig/templates/__init__.py b/src/device/service/drivers/openconfig/templates/__init__.py index 901f5cf0291dca1bda155e20abd16db5989df7dc..5e77b25fe3206407db9427085de70b95342d370a 100644 --- a/src/device/service/drivers/openconfig/templates/__init__.py +++ b/src/device/service/drivers/openconfig/templates/__init__.py @@ -13,7 +13,7 @@ # limitations under the License. import json, logging, lxml.etree as ET, re -from typing import Any, Dict +from typing import Any, Dict, Optional from jinja2 import Environment, PackageLoader, select_autoescape from device.service.driver_api._Driver import ( RESOURCE_ENDPOINTS, RESOURCE_INTERFACES, RESOURCE_NETWORK_INSTANCES, RESOURCE_ROUTING_POLICIES, RESOURCE_ACL) @@ -77,9 +77,11 @@ def parse(resource_key : str, xml_data : ET.Element): if parser is None: return [(resource_key, xml_data)] return parser(xml_data) -def compose_config(resource_key : str, resource_value : str, delete : bool = False) -> str: +def compose_config( + resource_key : str, resource_value : str, delete : bool = False, vendor : Optional[str] = None +) -> str: template_name = '{:s}/edit_config.xml'.format(RE_REMOVE_FILTERS.sub('', resource_key)) template = JINJA_ENV.get_template(template_name) data : Dict[str, Any] = json.loads(resource_value) operation = 'delete' if delete else 'merge' - return '{:s}'.format(template.render(**data, operation=operation).strip()) + return '{:s}'.format(template.render(**data, operation=operation, vendor=vendor).strip()) diff --git a/src/device/service/drivers/openconfig/templates/acl/acl-set/acl-entry/edit_config.xml b/src/device/service/drivers/openconfig/templates/acl/acl-set/acl-entry/edit_config.xml index fac259b6fdcd3cbded93088ddc6335ea2bfe5f69..2769e8b2e9f81326332ae175f915432b7337f24c 100644 --- a/src/device/service/drivers/openconfig/templates/acl/acl-set/acl-entry/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/acl/acl-set/acl-entry/edit_config.xml @@ -13,6 +13,16 @@ {{sequence_id}} + {% if operation is not defined or operation != 'delete' %} + {% if type=='ACL_L2' %} + + + {% if source_address is defined %}{{source_address}}{% endif%} + {% if destination_address is defined %}{{destination_address}}{% endif%} + + + {% endif%} + {% if type=='ACL_IPV4' %} {% if source_address is defined %}{{source_address}}{% endif%} @@ -29,12 +39,26 @@ {% if tcp_flags is defined %}{{tcp_flags}}{% endif%} + {% endif%} + {% if type=='ACL_IPV6' %} + + + {% if source_address is defined %}{{source_address}}{% endif%} + {% if destination_address is defined %}{{destination_address}}{% endif%} + {% if protocol is defined %}{{protocol}}{% endif%} + {% if dscp is defined %}{{dscp}}{% endif%} + {% if hop_limit is defined %}{{hop_limit}}{% endif%} + + + {% endif%} + {% if forwarding_action is defined %}{{forwarding_action}}{% endif%} {% if log_action is defined %}{{log_action}}{% endif%} + {% endif%} diff --git a/src/device/service/drivers/openconfig/templates/acl/interfaces/egress/edit_config.xml b/src/device/service/drivers/openconfig/templates/acl/interfaces/egress/edit_config.xml index d987b0cc4b40298533f140f71af83c6fad884020..b070b305a505890c51f3751d2b83eb415ae4aa43 100644 --- a/src/device/service/drivers/openconfig/templates/acl/interfaces/egress/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/acl/interfaces/egress/edit_config.xml @@ -1,18 +1,21 @@ - + {{id}} {{id}} + {% if interface is defined %} {{interface}} {% if subinterface is defined %}{{subinterface}}{% endif%} + {% endif%} + {% if set_name_egress is defined %} - + > {{set_name_egress}} {{type_egress}} @@ -21,6 +24,7 @@ + {% endif%} diff --git a/src/device/service/drivers/openconfig/templates/acl/interfaces/ingress/edit_config.xml b/src/device/service/drivers/openconfig/templates/acl/interfaces/ingress/edit_config.xml index 144a03c55477e532379541be5443063fe3aa2f10..d1f18efb26bc1316354c2bb26623cb36f7dc0be6 100644 --- a/src/device/service/drivers/openconfig/templates/acl/interfaces/ingress/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/acl/interfaces/ingress/edit_config.xml @@ -1,18 +1,21 @@ - + {{id}} {{id}} + {% if interface is defined %} {{interface}} {% if subinterface is defined %}{{subinterface}}{% endif%} + {% endif%} + {% if set_name_ingress is defined %} - + {{set_name_ingress}} {{type_ingress}} @@ -21,6 +24,7 @@ + {% endif%} diff --git a/src/device/service/drivers/openconfig/templates/interface/edit_config.xml b/src/device/service/drivers/openconfig/templates/interface/edit_config.xml index ff15d1d682ea910208237c32adcc93029fb036d8..4bc53ff1ddfbebbdcef2a0b4c37770210726676b 100644 --- a/src/device/service/drivers/openconfig/templates/interface/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/interface/edit_config.xml @@ -1,14 +1,12 @@ - + {{name}} + {% if operation is defined and operation != 'delete' %} {{name}} - {% if operation is defined and operation == 'delete' %} - {% else %} - {{description}} {{mtu}} - {% endif %} + {% endif %} diff --git a/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml b/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml index d266f819c41355ba8a30086415f2bba3b68f1f3d..1bdb8efbff495f04ee90dadaffaa7412332531b7 100644 --- a/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml @@ -1,35 +1,46 @@ - + {{name}} - {% if operation is not defined or operation != 'delete' %} {{name}} + ianaift:{{type}} + {% if mtu is defined %}{{mtu}}{% endif%} + true - {% endif %} - + {{index}} - {% if operation is not defined or operation != 'delete' %} {{index}} - true + {{description}} + {% if vendor=="ADVA" and vlan_id is not defined %} + true + {% endif%} + {% if vlan_id is defined %} - - {{vlan_id}} - - - - -
- {{address_ip}} + + - {{address_ip}} - {{address_prefix}} + {{vlan_id}} -
-
-
+ + + + {% endif %} + {% if address_ip is defined %} + + + + {{address_ip}} + + {{address_ip}} + {{address_prefix}} + + + + {% endif %}
diff --git a/src/device/service/drivers/openconfig/templates/network_instance/connection_point/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/connection_point/edit_config.xml new file mode 100644 index 0000000000000000000000000000000000000000..60272e5fba4dd87c9bc48ef596197c2508b75e59 --- /dev/null +++ b/src/device/service/drivers/openconfig/templates/network_instance/connection_point/edit_config.xml @@ -0,0 +1,29 @@ + + + {{name}} + + + {{connection_point}} + + {{connection_point}} + + + + {{connection_point}} + + {{connection_point}} + 1 + oc-ni-types:REMOTE + + + + {{VC_ID}} + {{remote_system}} + + + + + + + + diff --git a/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml index 9362c09c6cfebcd1f83b05002f58eda51724b911..6b6b733dab12a107bf0420907da9c9683173faeb 100644 --- a/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml @@ -5,16 +5,38 @@ {{name}} oc-ni-types:{{type}} - {{description}} + {% if description is defined %}{{description}}{% endif %} + true + {% if type=='L3VRF' %} {% if router_id is defined %}{{router_id}}{% endif %} {{route_distinguisher}} - true + {% endif %} + {% if type=='L2VSI' %} + 1500 + {% endif %} + {% if type=='L3VRF' or type=='L2VSI' %} + {% if type=='L3VRF' %} oc-ni-types:MPLS + oc-ni-types:INSTANCE_LABEL + {% endif %} + {% if type=='L2VSI' %} + oc-ni-types:MPLS + {% endif %} {% endif %} + {% if type=='L2VSI' %} + + + true + 1000 + 300 + + + {% endif %} + {% endif %} diff --git a/src/device/service/drivers/openconfig/templates/network_instance/interface/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/interface/edit_config.xml index d5c33d31a6d671216db55c0eded94dc15a56bec8..bf8c0c0770f9344fbed16f3a6b09f7fa99a978ef 100644 --- a/src/device/service/drivers/openconfig/templates/network_instance/interface/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/network_instance/interface/edit_config.xml @@ -2,15 +2,13 @@ {{name}} - + {{id}} - {% if operation is not defined or operation != 'delete' %} {{id}} {{interface}} {{subinterface}} - {% endif %} diff --git a/src/device/service/drivers/openconfig/templates/network_instance/protocols/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/protocols/edit_config.xml index da05d0467605e6cec0c3448cc325ff60dfc7cfc9..c9c068e480c0569cfe5f97b78b28fbe03e2595f8 100644 --- a/src/device/service/drivers/openconfig/templates/network_instance/protocols/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/network_instance/protocols/edit_config.xml @@ -3,19 +3,19 @@ {{name}} - {{identifier}} + oc-pol-types:{{identifier}} {{protocol_name}} {% if operation is not defined or operation != 'delete' %} - {{identifier}} + oc-pol-types:{{identifier}} {{protocol_name}} - true {% if identifier=='BGP' %} {{as}} + {{router_id}} @@ -23,5 +23,18 @@ {% endif %} + {% if operation is not defined or operation != 'delete' %} + + + + oc-pol-types:{{identifier}} + oc-types:IPV4 + + oc-pol-types:{{identifier}} + oc-types:IPV4 + +
+
+ {% endif %} diff --git a/src/device/service/drivers/openconfig/templates/routing_policy/bgp_defined_set/edit_config.xml b/src/device/service/drivers/openconfig/templates/routing_policy/bgp_defined_set/edit_config.xml index df64606ae5ab434e5e3453f7294db02bb749bdce..6843c2dcbd306b149a4168565447d11174eceadc 100644 --- a/src/device/service/drivers/openconfig/templates/routing_policy/bgp_defined_set/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/routing_policy/bgp_defined_set/edit_config.xml @@ -5,7 +5,10 @@ {{ext_community_set_name}} {% if operation is not defined or operation != 'delete' %} - {% if ext_community_member is defined %} {{ext_community_member}}{% endif %} + + {{ext_community_set_name}} + {{ext_community_member}} + {% endif %} diff --git a/src/device/service/drivers/openconfig/templates/routing_policy/policy_definition/statement/edit_config.xml b/src/device/service/drivers/openconfig/templates/routing_policy/policy_definition/statement/edit_config.xml index 711067f424b68da0e69913ce01f5133c5cbbfe02..eda2d99c9f6299f7345767db8bed8e8cc58284ae 100644 --- a/src/device/service/drivers/openconfig/templates/routing_policy/policy_definition/statement/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/routing_policy/policy_definition/statement/edit_config.xml @@ -1,8 +1,11 @@ -{% if operation is not defined or operation != 'delete' %} - + {{policy_name}} + {% if operation is not defined or operation != 'delete' %} + + {{policy_name}} + {{statement_name}} @@ -10,11 +13,13 @@ {{statement_name}} + + oc-pol-types:DIRECTLY_CONNECTED + - + {{ext_community_set_name}} - {{match_set_options}} - + @@ -24,7 +29,7 @@ + {% endif %} -{% endif %} diff --git a/src/device/service/drivers/p4/__init__.py b/src/device/service/drivers/p4/__init__.py index 70a33251242c51f49140e596b8208a19dd5245f7..9953c820575d42fa88351cc8de022d880ba96e6a 100644 --- a/src/device/service/drivers/p4/__init__.py +++ b/src/device/service/drivers/p4/__init__.py @@ -11,4 +11,3 @@ # 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. - diff --git a/src/device/service/drivers/p4/p4_client.py b/src/device/service/drivers/p4/p4_client.py new file mode 100644 index 0000000000000000000000000000000000000000..600d08880c7e8a1d6a7238e60d66a87d7167bd8c --- /dev/null +++ b/src/device/service/drivers/p4/p4_client.py @@ -0,0 +1,607 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +""" +P4Runtime client. +""" + +import logging +import queue +import sys +import enum +import threading +from functools import wraps +from typing import NamedTuple +import grpc +import google.protobuf.text_format +from google.rpc import status_pb2, code_pb2 + +from p4.v1 import p4runtime_pb2 +from p4.v1 import p4runtime_pb2_grpc + +STREAM_ATTR_ARBITRATION = "arbitration" +STREAM_ATTR_PACKET = "packet" +STREAM_ATTR_DIGEST = "digest" +STREAM_ATTR_IDLE_NOT = "idle_timeout_notification" +STREAM_ATTR_UNKNOWN = "unknown" + +LOGGER = logging.getLogger(__name__) + + +class P4RuntimeErrorFormatException(Exception): + """ + P4Runtime error format exception. + """ + + +# Used to iterate over the p4.Error messages in a gRPC error Status object +class P4RuntimeErrorIterator: + """ + P4Runtime error iterator. + + Attributes + ---------- + grpc_error : object + gRPC error + """ + + def __init__(self, grpc_error): + assert grpc_error.code() == grpc.StatusCode.UNKNOWN + self.grpc_error = grpc_error + + error = None + # The gRPC Python package does not have a convenient way to access the + # binary details for the error: they are treated as trailing metadata. + for meta in self.grpc_error.trailing_metadata(): + if meta[0] == "grpc-status-details-bin": + error = status_pb2.Status() + error.ParseFromString(meta[1]) + break + if error is None: + raise P4RuntimeErrorFormatException("No binary details field") + + if len(error.details) == 0: + raise P4RuntimeErrorFormatException( + "Binary details field has empty Any details repeated field") + self.errors = error.details + self.idx = 0 + + def __iter__(self): + return self + + def __next__(self): + while self.idx < len(self.errors): + p4_error = p4runtime_pb2.Error() + one_error_any = self.errors[self.idx] + if not one_error_any.Unpack(p4_error): + raise P4RuntimeErrorFormatException( + "Cannot convert Any message to p4.Error") + if p4_error.canonical_code == code_pb2.OK: + continue + val = self.idx, p4_error + self.idx += 1 + return val + raise StopIteration + + +class P4RuntimeWriteException(Exception): + """ + P4Runtime write exception handler. + + Attributes + ---------- + grpc_error : object + gRPC error + """ + + def __init__(self, grpc_error): + assert grpc_error.code() == grpc.StatusCode.UNKNOWN + super().__init__() + self.errors = [] + try: + error_iterator = P4RuntimeErrorIterator(grpc_error) + for error_tuple in error_iterator: + self.errors.append(error_tuple) + except P4RuntimeErrorFormatException as ex: + raise P4RuntimeException(grpc_error) from ex + + def __str__(self): + message = "Error(s) during Write:\n" + for idx, p4_error in self.errors: + code_name = code_pb2._CODE.values_by_number[ + p4_error.canonical_code].name + message += f"\t* At index {idx}: {code_name}, " \ + f"'{p4_error.message}'\n" + return message + + +class P4RuntimeException(Exception): + """ + P4Runtime exception handler. + + Attributes + ---------- + grpc_error : object + gRPC error + """ + + def __init__(self, grpc_error): + super().__init__() + self.grpc_error = grpc_error + + def __str__(self): + message = f"P4Runtime RPC error ({self.grpc_error.code().name}): " \ + f"{self.grpc_error.details()}" + return message + + +def parse_p4runtime_write_error(func): + """ + Parse P4Runtime write error. + + :param func: function + :return: parsed error + """ + + @wraps(func) + def handle(*args, **kwargs): + try: + return func(*args, **kwargs) + except grpc.RpcError as ex: + if ex.code() != grpc.StatusCode.UNKNOWN: + raise ex + raise P4RuntimeWriteException(ex) from None + + return handle + + +def parse_p4runtime_error(func): + """ + Parse P4Runtime error. + + :param func: function + :return: parsed error + """ + + @wraps(func) + def handle(*args, **kwargs): + try: + return func(*args, **kwargs) + except grpc.RpcError as ex: + raise P4RuntimeException(ex) from None + + return handle + + +class SSLOptions(NamedTuple): + """ + Tuple of SSL options. + """ + insecure: bool + cacert: str = None + cert: str = None + key: str = None + + +def read_pem_file(path): + """ + Load and read PEM file. + + :param path: path to PEM file + :return: file descriptor + """ + try: + with open(path, "rb") as f_d: + return f_d.read() + except (FileNotFoundError, IOError, OSError): + logging.critical("Cannot read from PEM file '%s'", path) + sys.exit(1) + + +@enum.unique +class WriteOperation(enum.Enum): + """ + Write Operations. + """ + insert = 1 + update = 2 + delete = 3 + + +def select_operation(mode): + """ + Select P4 operation based upon the operation mode. + + :param mode: operation mode + :return: P4 operation protobuf object + """ + if mode == WriteOperation.insert: + return p4runtime_pb2.Update.INSERT + if mode == WriteOperation.update: + return p4runtime_pb2.Update.UPDATE + if mode == WriteOperation.delete: + return p4runtime_pb2.Update.DELETE + return None + + +def select_entity_type(entity, update): + """ + Select P4 entity type for an update. + + :param entity: P4 entity object + :param update: update operation + :return: the correct update entity or None + """ + if isinstance(entity, p4runtime_pb2.TableEntry): + return update.entity.table_entry + if isinstance(entity, p4runtime_pb2.ActionProfileGroup): + return update.entity.action_profile_group + if isinstance(entity, p4runtime_pb2.ActionProfileMember): + return update.entity.action_profile_member + return None + + +class P4RuntimeClient: + """ + P4Runtime client. + + Attributes + ---------- + device_id : int + P4 device ID + grpc_address : str + IP address and port + election_id : tuple + Mastership election ID + role_name : str + Role name (optional) + ssl_options: tuple + SSL options" named tuple (optional) + """ + + def __init__(self, device_id, grpc_address, + election_id, role_name=None, ssl_options=None): + self.device_id = device_id + self.election_id = election_id + self.role_name = role_name + if ssl_options is None: + self.ssl_options = SSLOptions(True) + else: + self.ssl_options = ssl_options + LOGGER.debug( + "Connecting to device %d at %s", device_id, grpc_address) + + if self.ssl_options.insecure: + logging.debug("Using insecure channel") + self.channel = grpc.insecure_channel(grpc_address) + else: + # root certificates are retrieved from a default location + # chosen by gRPC runtime unless the user provides + # custom certificates. + root_certificates = None + if self.ssl_options.cacert is not None: + root_certificates = read_pem_file(self.ssl_options.cacert) + certificate_chain = None + if self.ssl_options.cert is not None: + certificate_chain = read_pem_file(self.ssl_options.cert) + private_key = None + if self.ssl_options.key is not None: + private_key = read_pem_file(self.ssl_options.key) + creds = grpc.ssl_channel_credentials(root_certificates, private_key, + certificate_chain) + self.channel = grpc.secure_channel(grpc_address, creds) + self.stream_in_q = None + self.stream_out_q = None + self.stream = None + self.stream_recv_thread = None + self.stub = p4runtime_pb2_grpc.P4RuntimeStub(self.channel) + + try: + self.set_up_stream() + except P4RuntimeException: + LOGGER.critical("Failed to connect to P4Runtime server") + sys.exit(1) + LOGGER.info("P4Runtime client is successfully invoked") + + def set_up_stream(self): + """ + Set up a gRPC stream. + """ + self.stream_out_q = queue.Queue() + # queues for different messages + self.stream_in_q = { + STREAM_ATTR_ARBITRATION: queue.Queue(), + STREAM_ATTR_PACKET: queue.Queue(), + STREAM_ATTR_DIGEST: queue.Queue(), + STREAM_ATTR_IDLE_NOT: queue.Queue(), + STREAM_ATTR_UNKNOWN: queue.Queue(), + } + + def stream_req_iterator(): + while True: + stream_p = self.stream_out_q.get() + if stream_p is None: + break + yield stream_p + + def stream_recv_wrapper(stream): + @parse_p4runtime_error + def stream_recv(): + for stream_p in stream: + if stream_p.HasField("arbitration"): + self.stream_in_q["arbitration"].put(stream_p) + elif stream_p.HasField("packet"): + self.stream_in_q["packet"].put(stream_p) + elif stream_p.HasField("digest"): + self.stream_in_q["digest"].put(stream_p) + else: + self.stream_in_q["unknown"].put(stream_p) + + try: + stream_recv() + except P4RuntimeException as ex: + logging.critical("StreamChannel error, closing stream") + logging.critical(ex) + for k in self.stream_in_q: + self.stream_in_q[k].put(None) + + self.stream = self.stub.StreamChannel(stream_req_iterator()) + self.stream_recv_thread = threading.Thread( + target=stream_recv_wrapper, args=(self.stream,)) + self.stream_recv_thread.start() + self.handshake() + + def handshake(self): + """ + Handshake with gRPC server. + """ + + req = p4runtime_pb2.StreamMessageRequest() + arbitration = req.arbitration + arbitration.device_id = self.device_id + election_id = arbitration.election_id + election_id.high = self.election_id[0] + election_id.low = self.election_id[1] + if self.role_name is not None: + arbitration.role.name = self.role_name + self.stream_out_q.put(req) + + rep = self.get_stream_packet(STREAM_ATTR_ARBITRATION, timeout=2) + if rep is None: + logging.critical("Failed to establish session with server") + sys.exit(1) + is_primary = (rep.arbitration.status.code == code_pb2.OK) + logging.debug("Session established, client is '%s'", + "primary" if is_primary else "backup") + if not is_primary: + print("You are not the primary client," + "you only have read access to the server") + + def get_stream_packet(self, type_, timeout=1): + """ + Get a new message from the stream. + + :param type_: stream type. + :param timeout: time to wait. + :return: message or None + """ + if type_ not in self.stream_in_q: + print("Unknown stream type 's"'', type_) + return None + try: + msg = self.stream_in_q[type_].get(timeout=timeout) + return msg + except queue.Empty: # timeout expired + return None + + @parse_p4runtime_error + def get_p4info(self): + """ + Retrieve P4Info content. + + :return: P4Info object. + """ + logging.debug("Retrieving P4Info file") + req = p4runtime_pb2.GetForwardingPipelineConfigRequest() + req.device_id = self.device_id + req.response_type = \ + p4runtime_pb2.GetForwardingPipelineConfigRequest.P4INFO_AND_COOKIE + rep = self.stub.GetForwardingPipelineConfig(req) + return rep.config.p4info + + @parse_p4runtime_error + def set_fwd_pipe_config(self, p4info_path, bin_path): + """ + Configure the pipeline. + + :param p4info_path: path to the P4Info file + :param bin_path: path to the binary file + :return: + """ + logging.debug("Setting forwarding pipeline config") + req = p4runtime_pb2.SetForwardingPipelineConfigRequest() + req.device_id = self.device_id + if self.role_name is not None: + req.role = self.role_name + election_id = req.election_id + election_id.high = self.election_id[0] + election_id.low = self.election_id[1] + req.action = \ + p4runtime_pb2.SetForwardingPipelineConfigRequest.VERIFY_AND_COMMIT + with open(p4info_path, "r", encoding="utf-8") as f_info: + with open(bin_path, "rb") as f_bin: + try: + google.protobuf.text_format.Merge( + f_info.read(), req.config.p4info) + except google.protobuf.text_format.ParseError: + logging.error("Error when parsing P4Info") + raise + req.config.p4_device_config = f_bin.read() + return self.stub.SetForwardingPipelineConfig(req) + + def tear_down(self): + """ + Tear connection with the gRPC server down. + """ + if self.stream_out_q: + logging.debug("Cleaning up stream") + self.stream_out_q.put(None) + if self.stream_in_q: + for k in self.stream_in_q: + self.stream_in_q[k].put(None) + if self.stream_recv_thread: + self.stream_recv_thread.join() + self.channel.close() + # avoid a race condition if channel deleted when process terminates + del self.channel + + @parse_p4runtime_write_error + def __write(self, entity, mode=WriteOperation.insert): + """ + Perform a write operation. + + :param entity: P4 entity to write + :param mode: operation mode (defaults to insert) + :return: void + """ + if isinstance(entity, (list, tuple)): + for ent in entity: + self.__write(ent) + return + req = self.__get_new_write_request() + update = req.updates.add() + update.type = select_operation(mode) + msg_entity = select_entity_type(entity, update) + if not msg_entity: + msg = f"{mode.name} operation for entity {entity.__name__}" \ + f"not supported" + raise P4RuntimeWriteException(msg) + msg_entity.CopyFrom(entity) + self.__simple_write(req) + + def __get_new_write_request(self): + """ + Create a new write request message. + + :return: write request message + """ + req = p4runtime_pb2.WriteRequest() + req.device_id = self.device_id + if self.role_name is not None: + req.role = self.role_name + election_id = req.election_id + election_id.high = self.election_id[0] + election_id.low = self.election_id[1] + return req + + @parse_p4runtime_write_error + def __simple_write(self, req): + """ + Send a write operation into the wire. + + :param req: write operation request + :return: void + """ + try: + return self.stub.Write(req) + except grpc.RpcError as ex: + if ex.code() != grpc.StatusCode.UNKNOWN: + raise ex + raise P4RuntimeWriteException(ex) from ex + + @parse_p4runtime_write_error + def insert(self, entity): + """ + Perform an insert write operation. + + :param entity: P4 entity to insert + :return: void + """ + return self.__write(entity, WriteOperation.insert) + + @parse_p4runtime_write_error + def update(self, entity): + """ + Perform an update write operation. + + :param entity: P4 entity to update + :return: void + """ + return self.__write(entity, WriteOperation.update) + + @parse_p4runtime_write_error + def delete(self, entity): + """ + Perform a delete write operation. + + :param entity: P4 entity to delete + :return: void + """ + return self.__write(entity, WriteOperation.delete) + + @parse_p4runtime_write_error + def write(self, req): + """ + Write device operation. + + :param req: write request message + :return: status + """ + req.device_id = self.device_id + if self.role_name is not None: + req.role = self.role_name + election_id = req.election_id + election_id.high = self.election_id[0] + election_id.low = self.election_id[1] + return self.__simple_write(req) + + @parse_p4runtime_write_error + def write_update(self, update): + """ + Update device operation. + + :param update: update request message + :return: status + """ + req = self.__get_new_write_request() + req.updates.extend([update]) + return self.__simple_write(req) + + # Decorator is useless here: in case of server error, + # the exception is raised during the iteration (when next() is called). + @parse_p4runtime_error + def read_one(self, entity): + """ + Read device operation. + + :param entity: P4 entity for which the read is issued + :return: status + """ + req = p4runtime_pb2.ReadRequest() + if self.role_name is not None: + req.role = self.role_name + req.device_id = self.device_id + req.entities.extend([entity]) + return self.stub.Read(req) + + @parse_p4runtime_error + def api_version(self): + """ + P4Runtime API version. + + :return: API version hex + """ + req = p4runtime_pb2.CapabilitiesRequest() + rep = self.stub.Capabilities(req) + return rep.p4runtime_api_version diff --git a/src/device/service/drivers/p4/p4_common.py b/src/device/service/drivers/p4/p4_common.py new file mode 100644 index 0000000000000000000000000000000000000000..bcafedc1f613bfe1d1739d72f89803155b720155 --- /dev/null +++ b/src/device/service/drivers/p4/p4_common.py @@ -0,0 +1,445 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +""" +This package contains several helper functions for encoding to and decoding from +byte strings: +- integers +- IPv4 address strings +- IPv6 address strings +- Ethernet address strings +as well as static variables used by various P4 driver components. +""" + +import logging +import math +import re +import socket +import ipaddress +from ctypes import c_uint16, sizeof +import macaddress + +from common.type_checkers.Checkers import chk_type +try: + from .p4_exception import UserBadValueError +except ImportError: + from p4_exception import UserBadValueError + +P4_ATTR_DEV_ID = "id" +P4_ATTR_DEV_NAME = "name" +P4_ATTR_DEV_VENDOR = "vendor" +P4_ATTR_DEV_HW_VER = "hw_ver" +P4_ATTR_DEV_SW_VER = "sw_ver" +P4_ATTR_DEV_P4BIN = "p4bin" +P4_ATTR_DEV_P4INFO = "p4info" +P4_ATTR_DEV_TIMEOUT = "timeout" + +P4_VAL_DEF_VENDOR = "Unknown" +P4_VAL_DEF_HW_VER = "BMv2 simple_switch" +P4_VAL_DEF_SW_VER = "Stratum" +P4_VAL_DEF_TIMEOUT = 60 + + +# Logger instance +LOGGER = logging.getLogger(__name__) + + +# MAC address encoding/decoding +mac_pattern = re.compile(r"^([\da-fA-F]{2}:){5}([\da-fA-F]{2})$") + + +def matches_mac(mac_addr_string): + """ + Check whether input string is a valid MAC address or not. + + :param mac_addr_string: string-based MAC address + :return: boolean status + """ + return mac_pattern.match(mac_addr_string) is not None + + +def encode_mac(mac_addr_string): + """ + Convert string-based MAC address into bytes. + + :param mac_addr_string: string-based MAC address + :return: MAC address in bytes + """ + return bytes(macaddress.MAC(mac_addr_string)) + + +def decode_mac(encoded_mac_addr): + """ + Convert a MAC address in bytes into string-based MAC address. + + :param encoded_mac_addr: MAC address in bytes + :return: string-based MAC address + """ + return str(macaddress.MAC(encoded_mac_addr)).replace("-", ":").lower() + + +# IP address encoding/decoding +IPV4_LOCALHOST = "localhost" + + +def matches_ipv4(ip_addr_string): + """ + Check whether input string is a valid IPv4 address or not. + + :param ip_addr_string: string-based IPv4 address + :return: boolean status + """ + if ip_addr_string == IPV4_LOCALHOST: + return True + try: + addr = ipaddress.ip_address(ip_addr_string) + return isinstance(addr, ipaddress.IPv4Address) + except ValueError: + return False + + +def encode_ipv4(ip_addr_string): + """ + Convert string-based IPv4 address into bytes. + + :param ip_addr_string: string-based IPv4 address + :return: IPv4 address in bytes + """ + return socket.inet_aton(ip_addr_string) + + +def decode_ipv4(encoded_ip_addr): + """ + Convert an IPv4 address in bytes into string-based IPv4 address. + + :param encoded_ip_addr: IPv4 address in bytes + :return: string-based IPv4 address + """ + return socket.inet_ntoa(encoded_ip_addr) + + +def matches_ipv6(ip_addr_string): + """ + Check whether input string is a valid IPv6 address or not. + + :param ip_addr_string: string-based IPv6 address + :return: boolean status + """ + try: + addr = ipaddress.ip_address(ip_addr_string) + return isinstance(addr, ipaddress.IPv6Address) + except ValueError: + return False + + +def encode_ipv6(ip_addr_string): + """ + Convert string-based IPv6 address into bytes. + + :param ip_addr_string: string-based IPv6 address + :return: IPv6 address in bytes + """ + return socket.inet_pton(socket.AF_INET6, ip_addr_string) + + +def decode_ipv6(encoded_ip_addr): + """ + Convert an IPv6 address in bytes into string-based IPv6 address. + + :param encoded_ip_addr: IPv6 address in bytes + :return: string-based IPv6 address + """ + return str(ipaddress.ip_address(encoded_ip_addr)) + + +# Numerical encoding/decoding + + +def limits(c_int_type): + """ + Discover limits of numerical type. + + :param c_int_type: numerical type + :return: tuple of numerical type's limits + """ + signed = c_int_type(-1).value < c_int_type(0).value + bit_size = sizeof(c_int_type) * 8 + signed_limit = 2 ** (bit_size - 1) + return (-signed_limit, signed_limit - 1) \ + if signed else (0, 2 * signed_limit - 1) + + +def valid_port(port): + """ + Check whether input is a valid port number or not. + + :param port: port number + :return: boolean status + """ + lim = limits(c_uint16) + return lim[0] <= port <= lim[1] + + +def bitwidth_to_bytes(bitwidth): + """ + Convert number of bits to number of bytes. + + :param bitwidth: number of bits + :return: number of bytes + """ + return int(math.ceil(bitwidth / 8.0)) + + +def encode_num(number, bitwidth): + """ + Convert number into bytes. + + :param number: number to convert + :param bitwidth: number of bits + :return: number in bytes + """ + byte_len = bitwidth_to_bytes(bitwidth) + return number.to_bytes(byte_len, byteorder="big") + + +def decode_num(encoded_number): + """ + Convert number in bytes into its numerical form. + + :param encoded_number: number in bytes to convert + :return: numerical number form + """ + return int.from_bytes(encoded_number, "big") + + +# Umbrella encoder + + +def encode(variable, bitwidth): + """ + Tries to infer the type of `input` and encode it. + + :param variable: target variable + :param bitwidth: size of variable in bits + :return: encoded bytes + """ + byte_len = bitwidth_to_bytes(bitwidth) + if isinstance(variable, (list, tuple)) and len(variable) == 1: + variable = variable[0] + + if isinstance(variable, int): + encoded_bytes = encode_num(variable, bitwidth) + elif isinstance(variable, str): + if matches_mac(variable): + encoded_bytes = encode_mac(variable) + elif matches_ipv4(variable): + encoded_bytes = encode_ipv4(variable) + elif matches_ipv6(variable): + encoded_bytes = encode_ipv6(variable) + else: + try: + value = int(variable, 0) + except ValueError as ex: + raise UserBadValueError( + f"Invalid value '{variable}': " + "could not cast to integer, try in hex with 0x prefix")\ + from ex + encoded_bytes = value.to_bytes(byte_len, byteorder="big") + else: + raise Exception( + f"Encoding objects of {type(variable)} is not supported") + assert len(encoded_bytes) == byte_len + return encoded_bytes + + +# Parsers + + +def get_match_field_value(match_field): + """ + Retrieve the value of a certain match field by name. + + :param match_field: match field + :return: match filed value + """ + match_type = match_field.WhichOneof("field_match_type") + if match_type == "valid": + return match_field.valid.value + if match_type == "exact": + return match_field.exact.value + if match_type == "lpm": + return match_field.lpm.value, match_field.lpm.prefix_len + if match_type == "ternary": + return match_field.ternary.value, match_field.ternary.mask + if match_type == "range": + return match_field.range.low, match_field.range.high + raise Exception(f"Unsupported match type with type {match_type}") + + +def parse_resource_string_from_json(resource, resource_str="table-name"): + """ + Parse a given resource name within a JSON-based object. + + :param resource: JSON-based object + :param resource_str: resource string to parse + :return: value of the parsed resource string + """ + if not resource or (resource_str not in resource): + LOGGER.warning("JSON entry misses '%s' attribute", resource_str) + return None + chk_type(resource_str, resource[resource_str], str) + return resource[resource_str] + + +def parse_resource_number_from_json(resource, resource_nb): + """ + Parse a given resource number within a JSON-based object. + + :param resource: JSON-based object + :param resource_nb: resource number to parse + :return: value of the parsed resource number + """ + if not resource or (resource_nb not in resource): + LOGGER.warning( + "JSON entry misses '%s' attribute", resource_nb) + return None + chk_type(resource_nb, resource[resource_nb], int) + return resource[resource_nb] + + +def parse_resource_integer_from_json(resource, resource_nb): + """ + Parse a given integer number within a JSON-based object. + + :param resource: JSON-based object + :param resource_nb: resource number to parse + :return: value of the parsed resource number + """ + num = parse_resource_number_from_json(resource, resource_nb) + if num: + return int(num) + return -1 + + +def parse_resource_float_from_json(resource, resource_nb): + """ + Parse a given floating point number within a JSON-based object. + + :param resource: JSON-based object + :param resource_nb: resource number to parse + :return: value of the parsed resource number + """ + num = parse_resource_number_from_json(resource, resource_nb) + if num: + return float(num) + return -1.0 + + +def parse_resource_bytes_from_json(resource, resource_bytes): + """ + Parse given resource bytes within a JSON-based object. + + :param resource: JSON-based object + :param resource_bytes: resource bytes to parse + :return: value of the parsed resource bytes + """ + if not resource or (resource_bytes not in resource): + LOGGER.debug( + "JSON entry misses '%s' attribute", resource_bytes) + return None + + if resource_bytes in resource: + chk_type(resource_bytes, resource[resource_bytes], bytes) + return resource[resource_bytes] + return None + + +def parse_match_operations_from_json(resource): + """ + Parse the match operations within a JSON-based object. + + :param resource: JSON-based object + :return: map of match operations + """ + if not resource or ("match-fields" not in resource): + LOGGER.warning( + "JSON entry misses 'match-fields' list of attributes") + return {} + chk_type("match-fields", resource["match-fields"], list) + + match_map = {} + for mf_entry in resource["match-fields"]: + if ("match-field" not in mf_entry) or \ + ("match-value" not in mf_entry): + LOGGER.warning( + "JSON entry misses 'match-field' and/or " + "'match-value' attributes") + return None + chk_type("match-field", mf_entry["match-field"], str) + chk_type("match-value", mf_entry["match-value"], str) + match_map[mf_entry["match-field"]] = mf_entry["match-value"] + + return match_map + + +def parse_action_parameters_from_json(resource): + """ + Parse the action parameters within a JSON-based object. + + :param resource: JSON-based object + :return: map of action parameters + """ + if not resource or ("action-params" not in resource): + LOGGER.warning( + "JSON entry misses 'action-params' list of attributes") + return None + chk_type("action-params", resource["action-params"], list) + + action_name = parse_resource_string_from_json(resource, "action-name") + + action_params = {} + for ac_entry in resource["action-params"]: + if not ac_entry: + LOGGER.debug( + "Missing action parameter for action %s", action_name) + continue + chk_type("action-param", ac_entry["action-param"], str) + chk_type("action-value", ac_entry["action-value"], str) + action_params[ac_entry["action-param"]] = \ + ac_entry["action-value"] + + return action_params + + +def parse_integer_list_from_json(resource, resource_list, resource_item): + """ + Parse the list of integers within a JSON-based object. + + :param resource: JSON-based object + :param resource_list: name of the resource list + :param resource_item: name of the resource item + :return: list of integers + """ + if not resource or (resource_list not in resource): + LOGGER.warning( + "JSON entry misses '%s' list of attributes", resource_list) + return [] + chk_type(resource_list, resource[resource_list], list) + + integers_list = [] + for item in resource[resource_list]: + chk_type(resource_item, item[resource_item], int) + integers_list.append(item[resource_item]) + + return integers_list diff --git a/src/device/service/drivers/p4/p4_context.py b/src/device/service/drivers/p4/p4_context.py new file mode 100644 index 0000000000000000000000000000000000000000..ab01c422fe478cfe26c2f7331fc9b4653521db9f --- /dev/null +++ b/src/device/service/drivers/p4/p4_context.py @@ -0,0 +1,284 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +""" +Build some context around a given P4 info file. +""" + +from collections import Counter +import enum +from functools import partialmethod + + +@enum.unique +class P4Type(enum.Enum): + """ + P4 types. + """ + table = 1 + action = 2 + action_profile = 3 + counter = 4 + direct_counter = 5 + meter = 6 + direct_meter = 7 + controller_packet_metadata = 8 + + +P4Type.table.p4info_name = "tables" +P4Type.action.p4info_name = "actions" +P4Type.action_profile.p4info_name = "action_profiles" +P4Type.counter.p4info_name = "counters" +P4Type.direct_counter.p4info_name = "direct_counters" +P4Type.meter.p4info_name = "meters" +P4Type.direct_meter.p4info_name = "direct_meters" +P4Type.controller_packet_metadata.p4info_name = "controller_packet_metadata" + +for object_type in P4Type: + object_type.pretty_name = object_type.name.replace('_', ' ') + object_type.pretty_names = object_type.pretty_name + 's' + + +@enum.unique +class P4RuntimeEntity(enum.Enum): + """ + P4 runtime entities. + """ + table_entry = 1 + action_profile_member = 2 + action_profile_group = 3 + meter_entry = 4 + direct_meter_entry = 5 + counter_entry = 6 + direct_counter_entry = 7 + packet_replication_engine_entry = 8 + + +class Context: + """ + P4 context. + """ + def __init__(self): + self.p4info = None + self.p4info_obj_map = {} + self.p4info_obj_map_by_id = {} + self.p4info_objs_by_type = {} + + def set_p4info(self, p4info): + """ + Set a p4 info file. + + :param p4info: p4 info file + :return: void + """ + self.p4info = p4info + self._import_p4info_names() + + def get_obj(self, obj_type, name): + """ + Retrieve an object by type and name. + + :param obj_type: P4 object type + :param name: P4 object name + :return: P4 object + """ + key = (obj_type, name) + return self.p4info_obj_map.get(key, None) + + def get_obj_id(self, obj_type, name): + """ + Retrieve a P4 object's ID by type and name. + + :param obj_type: P4 object type + :param name: P4 object name + :return: P4 object ID + """ + obj = self.get_obj(obj_type, name) + if obj is None: + return None + return obj.preamble.id + + def get_param(self, action_name, name): + """ + Get an action parameter by action name. + + :param action_name: P4 action name + :param name: action parameter name + :return: action parameter + """ + action = self.get_obj(P4Type.action, action_name) + if action is None: + return None + for param in action.params: + if param.name == name: + return param + return None + + def get_mf(self, table_name, name): + """ + Get a table's match field by name. + + :param table_name: P4 table name + :param name: match field name + :return: match field + """ + table = self.get_obj(P4Type.table, table_name) + if table is None: + return None + for match_field in table.match_fields: + if match_field.name == name: + return match_field + return None + + def get_param_id(self, action_name, name): + """ + Get an action parameter ID by the action and parameter names. + + :param action_name: P4 action name + :param name: action parameter name + :return: action parameter ID + """ + param = self.get_param(action_name, name) + return None if param is None else param.id + + def get_mf_id(self, table_name, name): + """ + Get a table's match field ID by name. + + :param table_name: P4 table name + :param name: match field name + :return: match field ID + """ + match_field = self.get_mf(table_name, name) + return None if match_field is None else match_field.id + + def get_param_name(self, action_name, id_): + """ + Get an action parameter name by the action name and action ID. + + :param action_name: P4 action name + :param id_: action parameter ID + :return: action parameter name + """ + action = self.get_obj(P4Type.action, action_name) + if action is None: + return None + for param in action.params: + if param.id == id_: + return param.name + return None + + def get_mf_name(self, table_name, id_): + """ + Get a table's match field name by ID. + + :param table_name: P4 table name + :param id_: match field ID + :return: match field name + """ + table = self.get_obj(P4Type.table, table_name) + if table is None: + return None + for match_field in table.match_fields: + if match_field.id == id_: + return match_field.name + return None + + def get_objs(self, obj_type): + """ + Get P4 objects by type. + + :param obj_type: P4 object type + :return: list of tuples (object name, object) + """ + objects = self.p4info_objs_by_type[obj_type] + for name, obj in objects.items(): + yield name, obj + + def get_name_from_id(self, id_): + """ + Get P4 object name by its ID. + + :param id_: P4 object ID + :return: P4 object name + """ + return self.p4info_obj_map_by_id[id_].preamble.name + + def get_obj_by_id(self, id_): + """ + Get P4 object by its ID. + + :param id_: P4 object ID + :return: P4 object + """ + return self.p4info_obj_map_by_id[id_] + + def get_packet_metadata_name_from_id(self, ctrl_pkt_md_name, id_): + """ + Get packet metadata name by ID. + + :param ctrl_pkt_md_name: packet replication entity name + :param id_: packet metadata ID + :return: packet metadata name + """ + ctrl_pkt_md = self.get_obj( + P4Type.controller_packet_metadata, ctrl_pkt_md_name) + if not ctrl_pkt_md: + return None + for meta in ctrl_pkt_md.metadata: + if meta.id == id_: + return meta.name + return None + + # We accept any suffix that uniquely identifies the object + # among p4info objects of the same type. + def _import_p4info_names(self): + """ + Import p4 info into memory. + + :return: void + """ + suffix_count = Counter() + for obj_type in P4Type: + self.p4info_objs_by_type[obj_type] = {} + for obj in getattr(self.p4info, obj_type.p4info_name): + pre = obj.preamble + self.p4info_obj_map_by_id[pre.id] = obj + self.p4info_objs_by_type[obj_type][pre.name] = obj + suffix = None + for suf in reversed(pre.name.split(".")): + suffix = suf if suffix is None else suf + "." + suffix + key = (obj_type, suffix) + self.p4info_obj_map[key] = obj + suffix_count[key] += 1 + for key, cnt in suffix_count.items(): + if cnt > 1: + del self.p4info_obj_map[key] + + +# Add p4info object and object id "getters" for each object type; +# these are just wrappers around Context.get_obj and Context.get_obj_id. +# For example: get_table(x) and get_table_id(x) respectively call +# get_obj(P4Type.table, x) and get_obj_id(P4Type.table, x) +for object_type in P4Type: + object_name = "_".join(["get", object_type.name]) + setattr(Context, object_name, partialmethod( + Context.get_obj, object_type)) + object_name = "_".join(["get", object_type.name, "id"]) + setattr(Context, object_name, partialmethod( + Context.get_obj_id, object_type)) + +for object_type in P4Type: + object_name = "_".join(["get", object_type.p4info_name]) + setattr(Context, object_name, partialmethod(Context.get_objs, object_type)) diff --git a/src/device/service/drivers/p4/p4_driver.py b/src/device/service/drivers/p4/p4_driver.py index af05952b313d1632eacd5962cc34c4aa1b6b5a10..606bb91ebe5e14804bbdd4f34e7c795c6cfd1b32 100644 --- a/src/device/service/drivers/p4/p4_driver.py +++ b/src/device/service/drivers/p4/p4_driver.py @@ -16,13 +16,23 @@ P4 driver plugin for the TeraFlow SDN controller. """ +import os +import json import logging import threading from typing import Any, Iterator, List, Optional, Tuple, Union -from .p4_util import P4RuntimeClient,\ +from common.method_wrappers.Decorator import MetricsPool, metered_subclass_method +from common.type_checkers.Checkers import chk_type, chk_length, chk_string +from .p4_common import matches_ipv4, matches_ipv6, valid_port,\ P4_ATTR_DEV_ID, P4_ATTR_DEV_NAME, P4_ATTR_DEV_VENDOR,\ - P4_ATTR_DEV_HW_VER, P4_ATTR_DEV_SW_VER, P4_ATTR_DEV_PIPECONF,\ - P4_VAL_DEF_VENDOR, P4_VAL_DEF_HW_VER, P4_VAL_DEF_SW_VER, P4_VAL_DEF_PIPECONF + P4_ATTR_DEV_HW_VER, P4_ATTR_DEV_SW_VER,\ + P4_ATTR_DEV_P4BIN, P4_ATTR_DEV_P4INFO, P4_ATTR_DEV_TIMEOUT,\ + P4_VAL_DEF_VENDOR, P4_VAL_DEF_HW_VER, P4_VAL_DEF_SW_VER,\ + P4_VAL_DEF_TIMEOUT +from .p4_manager import P4Manager, KEY_TABLE,\ + KEY_ACTION_PROFILE, KEY_COUNTER, KEY_DIR_COUNTER, KEY_METER, KEY_DIR_METER,\ + KEY_CTL_PKT_METADATA +from .p4_client import WriteOperation try: from _Driver import _Driver @@ -31,6 +41,7 @@ except ImportError: LOGGER = logging.getLogger(__name__) +METRICS_POOL = MetricsPool('Device', 'Driver', labels={'driver': 'p4'}) class P4Driver(_Driver): """ @@ -53,208 +64,548 @@ class P4Driver(_Driver): Hardware version of the P4 device (Optional) sw_ver : str Software version of the P4 device (Optional) - pipeconf : str - P4 device table configuration (Optional) + p4bin : str + Path to P4 binary file (Optional, but must be combined with p4info) + p4info : str + Path to P4 info file (Optional, but must be combined with p4bin) + timeout : int + Device timeout in seconds (Optional) """ def __init__(self, address: str, port: int, **settings) -> None: # pylint: disable=super-init-not-called - self.__client = None + self.__manager = None self.__address = address self.__port = int(port) + self.__endpoint = None self.__settings = settings - - try: - self.__dev_id = self.__settings.get(P4_ATTR_DEV_ID) - except Exception as ex: - LOGGER.error('P4 device ID is a mandatory setting') - raise Exception from ex - - if P4_ATTR_DEV_NAME in self.__settings: - self.__dev_name = self.__settings.get(P4_ATTR_DEV_NAME) - else: - self.__dev_name = str(self.__dev_id) - LOGGER.warning( - 'No device name is provided. Setting default name: %s', - self.__dev_name) - - if P4_ATTR_DEV_VENDOR in self.__settings: - self.__dev_vendor = self.__settings.get(P4_ATTR_DEV_VENDOR) - else: - self.__dev_vendor = P4_VAL_DEF_VENDOR - LOGGER.warning( - 'No vendor is provided. Setting default vendor: %s', - self.__dev_vendor) - - if P4_ATTR_DEV_HW_VER in self.__settings: - self.__dev_hw_version = self.__settings.get(P4_ATTR_DEV_HW_VER) - else: - self.__dev_hw_version = P4_VAL_DEF_HW_VER - LOGGER.warning( - 'No HW version is provided. Setting default HW version: %s', - self.__dev_hw_version) - - if P4_ATTR_DEV_SW_VER in self.__settings: - self.__dev_sw_version = self.__settings.get(P4_ATTR_DEV_SW_VER) - else: - self.__dev_sw_version = P4_VAL_DEF_SW_VER - LOGGER.warning( - 'No SW version is provided. Setting default SW version: %s', - self.__dev_sw_version) - - if P4_ATTR_DEV_PIPECONF in self.__settings: - self.__dev_pipeconf = self.__settings.get(P4_ATTR_DEV_PIPECONF) - else: - self.__dev_pipeconf = P4_VAL_DEF_PIPECONF - LOGGER.warning( - 'No P4 pipeconf is provided. Setting default P4 pipeconf: %s', - self.__dev_pipeconf) - + self.__id = None + self.__name = None + self.__vendor = P4_VAL_DEF_VENDOR + self.__hw_version = P4_VAL_DEF_HW_VER + self.__sw_version = P4_VAL_DEF_SW_VER + self.__p4bin_path = None + self.__p4info_path = None + self.__timeout = P4_VAL_DEF_TIMEOUT self.__lock = threading.Lock() self.__started = threading.Event() self.__terminate = threading.Event() - LOGGER.info('Initializing P4 device at %s:%d with settings:', + self.__parse_and_validate_settings() + + LOGGER.info("Initializing P4 device at %s:%d with settings:", self.__address, self.__port) for key, value in settings.items(): - LOGGER.info('\t%8s = %s', key, value) + LOGGER.info("\t%8s = %s", key, value) def Connect(self) -> bool: """ - Establishes a connection between the P4 device driver and a P4 device. + Establish a connection between the P4 device driver and a P4 device. :return: boolean connection status. """ - LOGGER.info( - 'Connecting to P4 device %s:%d ...', - self.__address, self.__port) + LOGGER.info("Connecting to P4 device %s ...", self.__endpoint) with self.__lock: # Skip if already connected if self.__started.is_set(): return True - # Instantiate a gRPC channel with the P4 device - grpc_address = f'{self.__address}:{self.__port}' + # Dynamically devise an election ID election_id = (1, 0) - self.__client = P4RuntimeClient( - self.__dev_id, grpc_address, election_id) - LOGGER.info('\tConnected!') + + # Spawn a P4 manager for this device + self.__manager = P4Manager( + device_id=self.__id, + ip_address=self.__address, + port=self.__port, + election_id=election_id) + assert self.__manager + + # Start the P4 manager + try: + self.__manager.start(self.__p4bin_path, self.__p4info_path) + except Exception as ex: # pylint: disable=broad-except + raise Exception(ex) from ex + + LOGGER.info("\tConnected via P4Runtime") self.__started.set() return True def Disconnect(self) -> bool: """ - Terminates the connection between the P4 device driver and a P4 device. + Terminate the connection between the P4 device driver and a P4 device. :return: boolean disconnection status. """ - LOGGER.info( - 'Disconnecting from P4 device %s:%d ...', - self.__address, self.__port) + LOGGER.info("Disconnecting from P4 device %s ...", self.__endpoint) # If not started, assume it is already disconnected if not self.__started.is_set(): return True - # gRPC client must already be instantiated - assert self.__client + # P4 manager must already be instantiated + assert self.__manager # Trigger termination of loops and processes self.__terminate.set() # Trigger connection tear down with the P4Runtime server - self.__client.tear_down() - self.__client = None + self.__manager.stop() + self.__manager = None - LOGGER.info('\tDisconnected!') + LOGGER.info("\tDisconnected!") return True + @metered_subclass_method(METRICS_POOL) def GetInitialConfig(self) -> List[Tuple[str, Any]]: """ - Retrieves the initial configuration of a P4 device. + Retrieve the initial configuration of a P4 device. :return: list of initial configuration items. """ - LOGGER.info('P4 GetInitialConfig()') - return [] + initial_conf = [] - def GetConfig(self, resource_keys : List[str] = [])\ + with self.__lock: + if not initial_conf: + LOGGER.warning("No initial configuration for P4 device %s ...", + self.__endpoint) + return [] + + @metered_subclass_method(METRICS_POOL) + def GetConfig(self, resource_keys: List[str] = [])\ -> List[Tuple[str, Union[Any, None, Exception]]]: """ - Retrieves the current configuration of a P4 device. + Retrieve the current configuration of a P4 device. - :param resource_keys: configuration parameters to retrieve. - :return: list of values associated with the requested resource keys. + :param resource_keys: P4 resource keys to retrieve. + :return: list of values associated with the requested resource keys or + None/Exception. """ + LOGGER.info( + "Getting configuration from P4 device %s ...", self.__endpoint) - LOGGER.info('P4 GetConfig()') - return [] + # No resource keys means fetch all configuration + if len(resource_keys) == 0: + LOGGER.warning( + "GetConfig with no resource keys " + "implies getting all resource keys!") + resource_keys = [ + obj_name for obj_name, _ in self.__manager.p4_objects.items() + ] + + # Verify the input type + chk_type("resources", resource_keys, list) + + with self.__lock: + return self.__get_resources(resource_keys) - def SetConfig(self, resources : List[Tuple[str, Any]])\ + @metered_subclass_method(METRICS_POOL) + def SetConfig(self, resources: List[Tuple[str, Any]])\ -> List[Union[bool, Exception]]: """ - Submits a new configuration to a P4 device. + Submit a new configuration to a P4 device. - :param resources: configuration parameters to set. - :return: list of results for resource key changes requested. + :param resources: P4 resources to set. + :return: list of boolean results or Exceptions for resource key + changes requested. """ - LOGGER.info('P4 SetConfig()') - return [] + LOGGER.info( + "Setting configuration to P4 device %s ...", self.__endpoint) - def DeleteConfig(self, resources : List[Tuple[str, Any]])\ + if not resources or len(resources) == 0: + LOGGER.warning( + "SetConfig requires a list of resources to store " + "into the device. Nothing is provided though.") + return [] + + assert isinstance(resources, list) + + with self.__lock: + return self.__set_resources(resources) + + @metered_subclass_method(METRICS_POOL) + def DeleteConfig(self, resources: List[Tuple[str, Any]])\ -> List[Union[bool, Exception]]: """ - Revokes P4 device configuration. + Revoke P4 device configuration. :param resources: list of tuples with resource keys to be deleted. - :return: list of results for resource key deletions requested. + :return: list of boolean results or Exceptions for resource key + deletions requested. """ - LOGGER.info('P4 DeleteConfig()') - return [] + LOGGER.info( + "Deleting configuration from P4 device %s ...", self.__endpoint) + + if not resources or len(resources) == 0: + LOGGER.warning( + "DeleteConfig requires a list of resources to delete " + "from the device. Nothing is provided though.") + return [] - def GetResource(self, endpoint_uuid : str) -> Optional[str]: + with self.__lock: + return self.__delete_resources(resources) + + def GetResource(self, endpoint_uuid: str) -> Optional[str]: """ - Retrieves a certain resource from a P4 device. + Retrieve a certain resource from a P4 device. :param endpoint_uuid: target endpoint UUID. :return: The path of the endpoint or None if not found. """ - LOGGER.info('P4 GetResource()') + LOGGER.warning("GetResource() RPC not yet implemented by the P4 driver") return "" - def GetState(self, blocking=False, terminate : Optional[threading.Event] = None) -> Iterator[Tuple[str, Any]]: + def GetState(self, + blocking=False, + terminate: Optional[threading.Event] = None) -> \ + Iterator[Tuple[str, Any]]: """ - Retrieves the state of a P4 device. + Retrieve the state of a P4 device. :param blocking: if non-blocking, the driver terminates the loop and returns. + :param terminate: termination flag. :return: sequences of state sample. """ - LOGGER.info('P4 GetState()') + LOGGER.warning("GetState() RPC not yet implemented by the P4 driver") return [] - def SubscribeState(self, subscriptions : List[Tuple[str, float, float]])\ + @metered_subclass_method(METRICS_POOL) + def SubscribeState(self, subscriptions: List[Tuple[str, float, float]])\ -> List[Union[bool, Exception]]: """ - Subscribes to certain state information. + Subscribe to certain state information. :param subscriptions: list of tuples with resources to be subscribed. :return: list of results for resource subscriptions requested. """ - LOGGER.info('P4 SubscribeState()') - return [] + LOGGER.warning( + "SubscribeState() RPC not yet implemented by the P4 driver") + return [False for _ in subscriptions] - def UnsubscribeState(self, subscriptions : List[Tuple[str, float, float]])\ + @metered_subclass_method(METRICS_POOL) + def UnsubscribeState(self, subscriptions: List[Tuple[str, float, float]])\ -> List[Union[bool, Exception]]: """ - Unsubscribes from certain state information. + Unsubscribe from certain state information. :param subscriptions: list of tuples with resources to be unsubscribed. :return: list of results for resource un-subscriptions requested. """ - LOGGER.info('P4 UnsubscribeState()') - return [] + LOGGER.warning( + "UnsubscribeState() RPC not yet implemented by the P4 driver") + return [False for _ in subscriptions] + + def get_manager(self): + """ + Get an instance of the P4 manager. + + :return: P4 manager instance + """ + return self.__manager + + def __parse_and_validate_settings(self): + """ + Verify that the driver inputs comply to what is expected. + + :return: void or exception in case of validation error + """ + # Device endpoint information + assert matches_ipv4(self.__address) or (matches_ipv6(self.__address)),\ + f"{self.__address} not a valid IPv4 or IPv6 address" + assert valid_port(self.__port), \ + f"{self.__port} not a valid transport port" + self.__endpoint = f"{self.__address}:{self.__port}" + + # Device ID + try: + self.__id = self.__settings.get(P4_ATTR_DEV_ID) + except Exception as ex: + LOGGER.error("P4 device ID is a mandatory setting") + raise Exception from ex + + # Device name + if P4_ATTR_DEV_NAME in self.__settings: + self.__name = self.__settings.get(P4_ATTR_DEV_NAME) + else: + self.__name = str(self.__id) + LOGGER.warning( + "No device name is provided. Setting default name: %s", + self.__name) + + # Device vendor + if P4_ATTR_DEV_VENDOR in self.__settings: + self.__vendor = self.__settings.get(P4_ATTR_DEV_VENDOR) + else: + LOGGER.warning( + "No device vendor is provided. Setting default vendor: %s", + self.__vendor) + + # Device hardware version + if P4_ATTR_DEV_HW_VER in self.__settings: + self.__hw_version = self.__settings.get(P4_ATTR_DEV_HW_VER) + else: + LOGGER.warning( + "No HW version is provided. Setting default HW version: %s", + self.__hw_version) + + # Device software version + if P4_ATTR_DEV_SW_VER in self.__settings: + self.__sw_version = self.__settings.get(P4_ATTR_DEV_SW_VER) + else: + LOGGER.warning( + "No SW version is provided. Setting default SW version: %s", + self.__sw_version) + + # Path to P4 binary file + if P4_ATTR_DEV_P4BIN in self.__settings: + self.__p4bin_path = self.__settings.get(P4_ATTR_DEV_P4BIN) + assert os.path.exists(self.__p4bin_path),\ + "Invalid path to p4bin file" + assert P4_ATTR_DEV_P4INFO in self.__settings,\ + "p4info and p4bin settings must be provided together" + + # Path to P4 info file + if P4_ATTR_DEV_P4INFO in self.__settings: + self.__p4info_path = self.__settings.get(P4_ATTR_DEV_P4INFO) + assert os.path.exists(self.__p4info_path),\ + "Invalid path to p4info file" + assert P4_ATTR_DEV_P4BIN in self.__settings,\ + "p4info and p4bin settings must be provided together" + + if (not self.__p4bin_path) or (not self.__p4info_path): + LOGGER.warning( + "No P4 binary and info files are provided, hence " + "no pipeline will be installed on the whitebox device.\n" + "This driver will attempt to manage whatever pipeline " + "is available on the target device.") + + # Device timeout + if P4_ATTR_DEV_TIMEOUT in self.__settings: + self.__timeout = self.__settings.get(P4_ATTR_DEV_TIMEOUT) + assert self.__timeout > 0,\ + "Device timeout must be a positive integer" + else: + LOGGER.warning( + "No device timeout is provided. Setting default timeout: %s", + self.__timeout) + + def __get_resources(self, resource_keys): + """ + Retrieve the current configuration of a P4 device. + + :param resource_keys: P4 resource keys to retrieve. + :return: list of values associated with the requested resource keys or + None/Exception. + """ + resources = [] + + LOGGER.debug("GetConfig() -> Keys: %s", resource_keys) + + for resource_key in resource_keys: + entries = [] + try: + if KEY_TABLE == resource_key: + for table_name in self.__manager.get_table_names(): + t_entries = self.__manager.table_entries_to_json( + table_name) + if t_entries: + entries.append(t_entries) + elif KEY_COUNTER == resource_key: + for cnt_name in self.__manager.get_counter_names(): + c_entries = self.__manager.counter_entries_to_json( + cnt_name) + if c_entries: + entries.append(c_entries) + elif KEY_DIR_COUNTER == resource_key: + for d_cnt_name in self.__manager.get_direct_counter_names(): + dc_entries = \ + self.__manager.direct_counter_entries_to_json( + d_cnt_name) + if dc_entries: + entries.append(dc_entries) + elif KEY_METER == resource_key: + for meter_name in self.__manager.get_meter_names(): + m_entries = self.__manager.meter_entries_to_json( + meter_name) + if m_entries: + entries.append(m_entries) + elif KEY_DIR_METER == resource_key: + for d_meter_name in self.__manager.get_direct_meter_names(): + dm_entries = \ + self.__manager.direct_meter_entries_to_json( + d_meter_name) + if dm_entries: + entries.append(dm_entries) + elif KEY_ACTION_PROFILE == resource_key: + for ap_name in self.__manager.get_action_profile_names(): + ap_entries = \ + self.__manager.action_prof_member_entries_to_json( + ap_name) + if ap_entries: + entries.append(ap_entries) + elif KEY_CTL_PKT_METADATA == resource_key: + msg = f"{resource_key.capitalize()} is not a " \ + f"retrievable resource" + raise Exception(msg) + else: + msg = f"GetConfig failed due to invalid " \ + f"resource key: {resource_key}" + raise Exception(msg) + resources.append( + (resource_key, entries if entries else None) + ) + except Exception as ex: # pylint: disable=broad-except + resources.append((resource_key, ex)) + + return resources + + def __set_resources(self, resources): + """ + Submit a new configuration to a P4 device. + + :param resources: P4 resources to set. + :return: list of boolean results or Exceptions for resource key + changes requested. + """ + results = [] + + for i, resource in enumerate(resources): + str_resource_name = f"resources[#{i}]" + resource_key = "" + try: + chk_type( + str_resource_name, resource, (list, tuple)) + chk_length( + str_resource_name, resource, min_length=2, max_length=2) + resource_key, resource_value = resource + chk_string( + str_resource_name, resource_key, allow_empty=False) + except Exception as e: # pylint: disable=broad-except + LOGGER.exception( + "Exception validating %s: %s", + str_resource_name, str(resource_key)) + results.append(e) # store the exception if validation fails + continue + + try: + resource_value = json.loads(resource_value) + except Exception: # pylint: disable=broad-except + pass + + LOGGER.debug( + "SetConfig() -> Key: %s - Value: %s", + resource_key, resource_value) + + # Default operation is insert. + # P4 manager has internal logic to judge whether an entry + # to be inserted already exists, thus simply needs an update. + operation = WriteOperation.insert + + try: + self.__apply_operation(resource_key, resource_value, operation) + results.append(True) + except Exception as ex: # pylint: disable=broad-except + results.append(ex) + + print(results) + + return results + + def __delete_resources(self, resources): + """ + Revoke P4 device configuration. + + :param resources: list of tuples with resource keys to be deleted. + :return: list of boolean results or Exceptions for resource key + deletions requested. + """ + results = [] + + for i, resource in enumerate(resources): + str_resource_name = f"resources[#{i}]" + resource_key = "" + try: + chk_type( + str_resource_name, resource, (list, tuple)) + chk_length( + str_resource_name, resource, min_length=2, max_length=2) + resource_key, resource_value = resource + chk_string( + str_resource_name, resource_key, allow_empty=False) + except Exception as e: # pylint: disable=broad-except + LOGGER.exception( + "Exception validating %s: %s", + str_resource_name, str(resource_key)) + results.append(e) # store the exception if validation fails + continue + + try: + resource_value = json.loads(resource_value) + except Exception: # pylint: disable=broad-except + pass + + LOGGER.debug("DeleteConfig() -> Key: %s - Value: %s", + resource_key, resource_value) + + operation = WriteOperation.delete + + try: + self.__apply_operation(resource_key, resource_value, operation) + results.append(True) + except Exception as ex: # pylint: disable=broad-except + results.append(ex) + + print(results) + + return results + + def __apply_operation( + self, resource_key, resource_value, operation: WriteOperation): + """ + Apply a write operation to a P4 resource. + + :param resource_key: P4 resource key + :param resource_value: P4 resource value in JSON format + :param operation: write operation (i.e., insert, update, delete) + to apply + :return: True if operation is successfully applied or raise Exception + """ + + # Apply settings to the various tables + if KEY_TABLE == resource_key: + self.__manager.table_entry_operation_from_json( + resource_value, operation) + elif KEY_COUNTER == resource_key: + self.__manager.counter_entry_operation_from_json( + resource_value, operation) + elif KEY_DIR_COUNTER == resource_key: + self.__manager.direct_counter_entry_operation_from_json( + resource_value, operation) + elif KEY_METER == resource_key: + self.__manager.meter_entry_operation_from_json( + resource_value, operation) + elif KEY_DIR_METER == resource_key: + self.__manager.direct_meter_entry_operation_from_json( + resource_value, operation) + elif KEY_ACTION_PROFILE == resource_key: + self.__manager.action_prof_member_entry_operation_from_json( + resource_value, operation) + self.__manager.action_prof_group_entry_operation_from_json( + resource_value, operation) + elif KEY_CTL_PKT_METADATA == resource_key: + msg = f"{resource_key.capitalize()} is not a " \ + f"configurable resource" + raise Exception(msg) + else: + msg = f"{operation} on invalid key {resource_key}" + LOGGER.error(msg) + raise Exception(msg) + + LOGGER.debug("%s operation: %s", resource_key.capitalize(), operation) + + return True diff --git a/src/device/service/drivers/p4/p4_exception.py b/src/device/service/drivers/p4/p4_exception.py new file mode 100644 index 0000000000000000000000000000000000000000..3e3afb723b3850fd9a9b2b1c4982bf8ae31b20f7 --- /dev/null +++ b/src/device/service/drivers/p4/p4_exception.py @@ -0,0 +1,135 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +""" +P4 driver exceptions. +""" + + +class UserError(Exception): + """ + User error exception. + """ + def __init__(self, info=""): + super().__init__() + self.info = info + + def __str__(self): + return self.info + + # TODO: find better way to get a custom traceback # pylint: disable=W0511 + def _render_traceback_(self): + return [str(self)] + + +class InvalidP4InfoError(Exception): + """ + Invalid P4 info exception. + """ + def __init__(self, info=""): + super().__init__() + self.info = info + + def __str__(self): + return f"Invalid P4Info message: {self.info}" + + def _render_traceback_(self): + return [str(self)] + + +class UnknownOptionName(UserError): + """ + Unknown option name exception. + """ + def __init__(self, option_name): + super().__init__() + self.option_name = option_name + + def __str__(self): + return f"Unknown option name: {self.option_name}" + + +class InvalidOptionValueType(UserError): + """ + Invalid option value type exception. + """ + def __init__(self, option, value): + super().__init__() + self.option = option + self.value = value + + def __str__(self): + return f"Invalid value type for option {self.option.name}. "\ + "Expected {self.option.value.__name__} but got "\ + "value {self.value} with type {type(self.value).__name__}" + + +class UserBadIPv4Error(UserError): + """ + Invalid IPv4 address value exception. + """ + def __init__(self, addr): + super().__init__() + self.addr = addr + + def __str__(self): + return f"{self.addr}' is not a valid IPv4 address" + + def _render_traceback_(self): + return [str(self)] + + +class UserBadIPv6Error(UserError): + """ + Invalid IPv6 address value exception. + """ + def __init__(self, addr): + super().__init__() + self.addr = addr + + def __str__(self): + return f"'{self.addr}' is not a valid IPv6 address" + + def _render_traceback_(self): + return [str(self)] + + +class UserBadMacError(UserError): + """ + Invalid MAC address value exception. + """ + def __init__(self, addr): + super().__init__() + self.addr = addr + + def __str__(self): + return f"'{self.addr}' is not a valid MAC address" + + def _render_traceback_(self): + return [str(self)] + + +class UserBadValueError(UserError): + """ + Invalid value exception. + """ + def __init__(self, info=""): + super().__init__() + self.info = info + + def __str__(self): + return self.info + + def _render_traceback_(self): + return [str(self)] diff --git a/src/device/service/drivers/p4/p4_global_options.py b/src/device/service/drivers/p4/p4_global_options.py new file mode 100644 index 0000000000000000000000000000000000000000..3457c8d556902557aa3991eee20418cf3094666c --- /dev/null +++ b/src/device/service/drivers/p4/p4_global_options.py @@ -0,0 +1,206 @@ +# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) +# +# 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. + +""" +P4Runtime global options. +""" + +import enum +try: + from .p4_exception import UnknownOptionName, InvalidOptionValueType +except ImportError: + from p4_exception import UnknownOptionName, InvalidOptionValueType + + +@enum.unique +class Options(enum.Enum): + """ + P4 options. + """ + canonical_bytestrings = bool + + +class GlobalOptions: + """ + P4 global options. + """ + option_defaults = { + Options.canonical_bytestrings: True, + } + + option_helpstrings = { + Options.canonical_bytestrings: """ +Use byte-padded legacy format for binary strings sent to the P4Runtime server, +instead of the canonical representation. See P4Runtime specification for +details. +""" + } + + def __init__(self): + self._values = {} + self.reset() + self._option_names = [option.name for option in Options] + self._set_docstring() + + def reset(self): + """ + Reset all options to their defaults. + + :return: void + """ + for option in Options: + assert option in GlobalOptions.option_defaults + self._values[option] = GlobalOptions.option_defaults[option] + + def _supported_options_as_str(self): + """ + Return a comma-separated string of supported options. + + :return: string of supported options + """ + return ", ".join([f"{o.name} ({o.value.__name__})" for o in Options]) + + def _supported_options_as_str_verbose(self): + """ + Return a detailed comma-separated string of supported options. + + :return: string of supported options + """ + opt_str = "" + for option in Options: + opt_str += f"Option name: {option.name}\n" + opt_str += f"Type: {option.value.__name__}\n" + opt_str += f"Default value: " \ + f"{GlobalOptions.option_defaults[option]}\n" + opt_str += f"Description: " \ + f"{GlobalOptions.option_helpstrings.get(option, 'N/A')}\n" + opt_str += "\n" + return opt_str[:-1] + + def _set_docstring(self): + """ + Set the documentation for this object. + + :return: void + """ + self.__doc__ = f""" +Manage global options for the P4Runtime shell. +Supported options are: {self._supported_options_as_str()} +To set the value of a global option, use GLOBAL_OPTIONS["